D'un automate à une grammaire
Exercice · niveau 2 · informatique (MP2I/MPI), chapitre 30 — Grammaires non contextuelles
Énoncé
Appliquer la construction du chapitre à l'automate du chapitre chap:automates reconnaissant les mots contenant le facteur aa : états , initial , acceptant , avec , , , , . Vérifier sur baab. Que remarque-t-on sur la forme des règles ?
Corrigé
Un non-terminal par état, le symbole initial étant celui de l'état initial :
La règle vient de ce que est acceptant, et elle seule.
Sur baab :
La dérivation reproduit lettre à lettre l'exécution .
Ce qu'on remarque : toutes les règles ont la forme ou . Le non-terminal est toujours en dernière position, jamais au milieu, jamais deux à la fois. On appelle ces grammaires linéaires à droite. C'est cette contrainte qui traduit la mémoire bornée de l'automate : à tout instant, il n'y a qu'un seul non-terminal dans la forme dérivée, et il est tout à droite — il joue exactement le rôle de l'état courant.
Deux conséquences.
- L'inclusion est stricte : place son non-terminal au milieu, ce qu'aucune grammaire linéaire à droite ne sait faire. C'est là qu'est le gain de puissance.
- La grammaire obtenue est non ambiguë — ce qui a été vérifié sur tous les mots jusqu'à la longueur —, et ce n'est pas un hasard : la dérivation est forcée par l'automate, qui est déterministe. Le déterminisme d'un automate donne la non-ambiguïté de la grammaire correspondante.
La grammaire a été comparée à l'automate sur les mots de longueur au plus : accord complet.
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.