TDs d'automates et applications
TD numéro 2

INPG, 1ère année du département télécom

Alain Girault


Table des matières


Langage {an, n >= 0}

Trouver une grammaire G engendrant ce langage. Quel est son type (0, 1, 2 ou 3) ? Existe-t-il un automate d'états fini déterministe reconnaissant ce langage ? Si oui lequel ?

G = < {a}, {S}, S, R >
avec R: 
  S --> epsilon
  S --> a S

Cette grammaire est régulière, c'est-à-dire de type 3. En effet toutes les règles sont linéaires à droite. Le langage étant régulier, il existe un automate d'états fini déterministe qui le reconnaît. Le voici :


Langage {anbn, n >= 0}

Trouver une grammaire G engendrant ce langage. Quel est son type (0, 1, 2 ou 3) ? Existe-t-il un automate d'états fini déterministe reconnaissant ce langage ? Si oui lequel ?

G = < {a,b}, {S}, S, R >
avec R: 
  S --> epsilon
  S --> a S b

Cette grammaire est hors contexte, c'est-à-dire de type 2. En effet toutes les règles sont de la forme « A --> alpha », mais la seconde règle n'est pas linéaire. Il n'existe donc pas d'automate d'états fini déterministe reconnaissant ce langage. Par contre en voici un qui est infini :


Langage {anbncn, n >= 0}

Trouver une grammaire G engendrant ce langage. Quel est son type (0, 1, 2 ou 3) ? Existe-t-il un automate d'états fini déterministe reconnaissant ce langage ? Si oui lequel ?

G = < {a,b,c}, {S,B}, S, R >
avec R: 
  S  --> epsilon
  S  --> a S B c
  cB --> Bc
  aB --> ab
  bB --> bb

Cette grammaire n'est même pas sous contexte, c'est-à-dire de type 0. En effet la troisième règle « cB --> Bc » n'est pas de la forme « alpha B gamma --> alpha beta gamma » où alpha et gamma seraient dans V*, beta serait dans V+, et B serait dans VN. Il n'existe donc pas d'automate d'états fini déterministe reconnaissant ce langage. Attention, ceci ne signifie pas qu'il n'existe pas de grammaire sous contexte engendrant ce langage. C'est juste que je n'en n'ai pas trouvé !


Une preuve par induction

Quel est le langage engendré par la grammaire suivante ?

G = < {a,b}, {S,A,B}, S, R >
avec R: 
  S --> aB        S --> bA
  A --> a         A --> aS        A --> bAA
  B --> b         B --> bS        B --> aBB

On peut remarquer tout d'abord que tous les mots engendrés sont de longueur paire. En fait le langage engendré L(G) est l'ensemble de tous les mots de VT+ contenant le même nombre de a que de b.

On veut à présent démontrer ce résultat. On procède par induction sur la longueur des mots engendrés. Les hypothèses d'induction sont :

Pour chacune de ces trois hypothèses, on note P(w) la propriété à gauche du « si et seulement si », et Q(w) la propriété en partie droite. On commence par prouver que les trois équivalences H1, H2 et H3 sont vraies pour tout mot de longueur 1 ; puis on montre que si les trois équivalences sont vraies pour tout mot de longueur inférieure ou égale à n, alors elles sont également vraies pour tout mot de longueur inférieure ou égale à n+1.



Dernière modification : 11 octobre 1999