Adloun

Compter les arbres d'analyse

Exercice · niveau 2 · informatique (MP2I/MPI), chapitre 30 — Grammaires non contextuelles

Énoncé

Soit la grammaire .

Corrigé

1. Deux arbres pour n+n+n — selon que le de la racine est le premier ou le second. Cinq pour n+n+n+n.

2. On compte, par programmation dynamique sur les intervalles du mot :

Mot`n``n+n``n+n+n` termes
Arbres

Ce sont les nombres de Catalan , où est le nombre de . Ce n'est pas un hasard : un arbre d'analyse est ici un arbre binaire à nœuds internes — l'objet du chapitre chap:arbres —, et compter ces arbres, c'est compter les parenthésages de termes, exactement comme au chapitre chap:dynamique pour le produit de matrices. L'accord a été vérifié jusqu'à : arbres pour six .

3. Parce que l'addition est associative : et valent tous deux . La grammaire est ambiguë, mais l'ambiguïté n'a pas de conséquence observable sur la valeur.

C'est précisément ce qui rend le défaut dangereux. Remplaçons par : la même grammaire donne encore deux arbres pour 8-3-2, mais ils valent et . Une grammaire ambiguë ne devient un bogue que le jour où l'opérateur cesse d'être associatif — et ce jour-là, le bogue est déjà en production. On ne teste pas une grammaire sur l'addition.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.