Automates finis et application - TD4
Exercice 1
Lemme d'Arden : est une solution de (et si A ne contient pas eps, cette solution est unique)
- En pratique, il faut choisir la variable qui sera éliminée en premier. Ici, on va remplacer par sa valeur dans (on se permet de confondre les singletons avec l'élement par concision) :
D'après le Lemme d'Arden, on a :
On remplace dans X0 :
Encore une fois, avec le lemme :
Et on termine en remplaçant et dans .
- On veut montrer que est toujours solution si contient le mot vide.
Si A contient eps, alors de plus, est inclus dans donc
donc est bien solution de l'équation
-
Pour prouver le lemme, il faut montrer que A*.B est bien une solution puis l'unicité (ce qu'on va faire en montrant qu'elle est la plus petit et la plus grande)
-
Montrons d'abord que est une solution de
or le produit de langages est associatif, donc
- Dans la cas où ne contient pas le mot vide Soit une solution, et
un mot de Supposons que est le plus court possible tel que
n'est pas dans est dans donc est soit :
- dans (impossible)
- soit dans
donc avec dans et dans est aussi dans (car ) donc est dans , donc dans
Supposons maintenant que est une solution et dans qui n'est pas dans , de longueur minimale
On a toujours que donc appartient à l'un des deux ensembles Or est inclus dans , donc est dans Ainsi, avec non-vide, dans et dans
est dans , donc dans or , donc est dans -> contradiction
- On construit l'automate en créant un état par variable + un état final et on crée les transitions pour chaque règle (cf. cours)
Exercice 2
L'intuition naïve qu'on pourrait avoir serait "d'inverser" les résultats de chaque règle. Cependant, cette méthode génère en fait le miroir du langage de la grammaire de départ.
À partir d'une grammaire linéaire droite G, on peut obtenir un automate fini A qui accepte le langage de la grammaire. Ensuite, on calcule l'automate A' qui accepte le langage miroir, ce qui permet d'obtenir une grammaire linéaire droite G'. Enfin, on inverse "naïvement" G' et on obtient une grammaire linéaire gauche G'' de même langage que G. (on peut bien sûr effectuer l'opération inverse)
On peut aussi convertir en automate fini puis inverser les états initiaux et finaux du résultat, ainsi que toutes les transitions. FH: cette transformation correspond au calcul de l'automate miroir dans la solution ci-dessus. C'est une étape de la construction, mais elle ne répond pas totalement à la question
Parenthèse sur un arbre de dérivation pour une grammaire régulière
\begin{align} S &\rightarrow aS | bT \\ T &\rightarrow aT | bS | \epsilon \end{align}
pour une génération
S
/ \
a S
/ \
b T
|
eps
On peut avoir deux suites de dérivations différentes, mais le même arbre