Adloun

informatique (MP2I/MPI) · Chapitre 30 · Application directe du cours

D'un automate à une grammaire

Grammaires non contextuelles · niveau 2

É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.

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre