Question: Existe-t-il des textes d'introduction en langage formel ou en théorie du langage de programmation qui discutent de la façon de l'appliquer à l'étude de la notation optimale?
En particulier, je suis intéressé à savoir quels sont les langages de pile, les arbres d'analyse et les indices, et comment prédire quand un certain type de notation entraînera une redondance exponentielle.
Je n'ai pratiquement aucune expérience en langage formel / grammaire ou en théorie de la programmation, car en tant que mathématicien, la seule informatique que j'ai apprise était les algorithmes et la théorie des graphes, ainsi que de très modestes notions de théorie de la complexité et de fonctions booléennes. Ainsi, si les seuls livres qui en discutent ne sont pas introductifs, je serais reconnaissant pour les réponses qui répertorient tous les deux des livres traitant de l'explosion de la notation exponentielle ainsi que des livres d'introduction qui prépareront les livres qui répondent directement à ma question.
Contexte: Cette question s'inspire principalement d' une réponse sur Physics.SE , qui dit que:
Il est très facile de prouver (rigoureusement) qu'il n'y a pas de notation entre parenthèses qui reproduit les contractions d'index du tenseur, car les parenthèses sont analysées par un langage de pile (grammaire sans contexte dans la classification de Chomsky) tandis que les indices ne peuvent pas être analysés de cette façon, car ils incluent des informations générales graphiques. Les parenthèses génèrent des arbres d'analyse, et vous avez toujours de façon exponentielle de nombreux arbres maximaux à l'intérieur de n'importe quel graphique, il y a donc une redondance exponentielle dans la notation.
Dans le reste de la réponse, d'autres exemples de "explosion de notation exponentielle" sont discutés, par exemple avec des réseaux de Petri en biologie computationnelle.
Il existe également d'autres cas où la notation mathématique est difficile à analyser, par exemple comme mentionné ici lorsque les fonctions et les fonctions appliquées à l'argument ne sont pas clairement distinguées. Cela peut devenir particulièrement déroutant lorsque la fonction devient l'argument et l'argument devient la fonction, par exemple ici .