Escolar Documentos
Profissional Documentos
Cultura Documentos
Motivations
Dans les cours precedents, nous avons vu que les langages rationnels sont reconnus par les automates finis, mais que ceux-ci ne reconnaissent pas tous les
langages algebriques (on rappelle que les langages rationnels sont strictement
inclus dans les langages algebriques).
Revenons sur les mode de reconnaissance des langages algebriques.
Pour linstant, nous savons que les langages algebriques sont ceux engendres
par les grammaires algebriques. Ceux sont aussi ceux que lon peut construire
par union, concatenation entre langages algebriques, ou en utilisant letoile de
Kleene.
Il est interessant de chercher un autre mode de reconnaissance des langages
algebriques. Nous allons introduire dans ce cours les automates `a pile. Nous
verrons que la classe des langages acceptes par les automates `a pile est exactement la classe des langages algebriques..
Revenons sur la forme normale de Greibach (GNF). Nous verrons que les grammaires GNF engendrent les langages algebriques propres (ceux sont les langages
qui ne contiennent pas le mot vide, ou qui ne contiennent que le mot vide).
Definition 1 Soit G = (, V, P )
- est lensemble des symboles terminaux
-V est lensemble des variables
-P est lensemble des r`egles de production.
On dit que G est sous forme normale de Greibach si ses r`egles de production
sont de la forme:
A aB(a , B V )
i.e, P V V .
Proposition 1 Pour tout langage algebrique propre L, il existe une grammaire
algebrique sous FNG qui lengendre et que lon peut effectivement construire `
a
partir dune grammaire algebrique engendrant L.
Soit G une grammaire algebrique sous forme normale de Chomsky.
Rappelons que toute grammaire algebrique peut-etre transformee en grammaire
CNF(forme normale de Chomsky), comme nous lavons vu dans le cours sur les
langages algebriques. Cela nous permet par ailleurs de ne pas considerer le mot
vide, car la seule -r`egle est S , o`
u S , laxiome, ne figure dans aucun membre droit des r`egles.
Les r`egles de production de G sont donc de la forme: A BC et A a,
(a , B, C V ).
A a est en GNF. Ramenons `a A BC `a une GNF.
Enumerons les elements de V , ensemble fini par definition: V = (A1 , A2 , ..., Ak ),
k etant le nombre delements de V .
Remarque 1 Si les r`egles ayant A pour membre gauche sont de la forme A
B, (, ( V ) , B V ) et les r`egles ayant B comme membre gauche
sont toutes les r`egles B 1 | 2 | ... | s , alors on peut reecrire A B :
A 1 | 2 , | ... | s . sans modifier le langage engendre.
Elimination de la recursivite a gauche
A peut etre recursive `
a gauche. Si oui, les membres gauche de ses r`egles sont de
la forme
A A1 | A2 | ... | Am (recursivite a gauche)
A 1 | 2 | ... | s (pas de recursivite, les i 6 A( V ) , i entre 1 et s)
La deuxi`eme ligne est necessaire, pour chaque r`egle non recursive on doit avoir
une alternative nous permettant de sortir de la recursivite.
Une r`egle recursive `
a gauche particuli`ere sera: Ai Ai | (*)
Pour illustrer, une derivation est: Ai Ai Ai Ai
D
emonstration 1 Les r`egles de notre grammaire CNF de depart sont de trois
types:
(1)- Ai Aj , avec j i
(2)- Ai Aj , avec j > i
(3)- Ai a, pour tout V
Etape 1 On commence par eliminer les r`egles (1) en les transformant.Procedons
par induction:
(a) Pour i=1, j=1.toutes les r`egles dont le membre gauche est A1 secrivent
A1 A1 1 | ... | A1 m | 1 | ... | s o`
u j = a ou Aj As , j 6= i (les r`egles
engendrant les ne sont pas recursives sur A1 )
Soit B une nouvelle variable (pas dans notre ensemble V de depart). En utilisant (*) on elimine la recursivite `
a gauche. les r`egles dont le membre gauche
est A1 secrivent:
A1 1 | ... | s | 1 B | ... | s B
B 1 | ...m | 1 B | ...m B
En eliminant la recursivite on a supprime les r`egles Ai Aj , avec j = i = 1
(b) On suppose lelimination de la r`egle (1) effectuee jusqu`
a lordre p, p k.
On va la supprimer pour la p + 1-i`eme variable. Les r`egles de type Ap+1 Aj
sont:
- Soit Ap+1 Aj avec j < p + 1. Par hypoth`ese dinduction, toutes les r`egles
3
A1 A1 A2 | a
A2 A2 A3 | b
A3 A3 A1 | c
A4 A3 a
Eliminons les r`egles recursives a gauche. Il y en a 3, nous introduisons donc 3
nouvelles variables: A1 , A2 , A3 :
A1 aA1 | a
A1 A2 A1 | A2
A2 bA2 | b
A2 A3 A2 | A3
A3 cA3 | c
A3 A1 A3 | A1
A4 A3 a
La r`egle A4 A3 a est de la forme Ai Aj Ak , j i. Derivons jusqu`a obtenir
uniquement des r`egles de la forme Ai Aj Ak , j > i, ou Ai a.
A4 A3 a cA3 a | ca
A1 aA1 | a
A2 bA2 | b
A2 cA3 A2 | cA2 | cA3 | c
A3 cA3 | c
A4 cA3 a | ca
Conclusion: gain en temps de derivation. Pour une GNF la complexite de la
derivation est lineaire et depend de n, le nombre de symboles terminaux (non
distincs) apparaissant a gauche de chaque membre droit dune r`egle. Deriver
une grammaire qui nest pas en GNF necessiter plus de calcul. avantages dans
lanalyses syntaxiques ...
3
3.1
Les Automates `
a pile
D
efinitions
Definition 2 Un Automate `
a pile est un 7-uplet: A = (, , Q, 0 , s, , F ):
- est un alphabet, lalphabet dentree
- est un alphabet, lalphabet de pile
- Q est lensemble fini des etats
- 0 est le symbole initial de fond de pile
- qo Qest letat initial
- , partie finie de Q ( ) Q est la fonction de transition
- F Q est lensemble des etats finaux
Un element (q, y, , q 0 , 0 ) de est une r`egle de lautomate `
a pile, generalement
note (q, y, ) (q 0 , 0 ), ou ((q, y, ), (q 0 , 0 )).
3.1.1
Configuration
3.1.2
Transition
On note c ` c0 .
5
Calcul valide
3.2
En effet, si un automate a pile A est avec pile initalement vide, on peut creer
A0 , automate `
a pile avec symbole initial de pile qui reconnait le meme langage
avec les memes modes de reconnaissance. Et inversement.
- Si A = (, , Q, s, , F ) est avec pile initialement vide, on introduit s0 , nouvel
etat initial, s0 6 F . On choisit dans comme symbole initial de pile, et on
cree la transition ((s0 , , )(s, )) qui depilera .
Alors, A0 = (, , Q {s0 }, , s0 , 0 , F ), avec 0 = {((s0 , , )(s, ))}
- Si A = (, , Q, 0 , s, , F ) est avec pile contenant intialement 0 , on cree
s0 6 F etat initial et la transition {((s0 , , )(s, 0 ))} qui empilera 0 .
On obtient A0 = (, , Q {s0 }, s0 , 0 , F ), avec 0 = {((s0 , , )(s, 0 ))} .
Proposition 2 Tout langage reconnaissable par un automate `
a pile par etats
acceptants est reconnaissable par un automate `
a pile par pile vide et etats acceptants, et inversement.
D
emonstration 2 Nous procederons par construction dans toute la suite.
Demontrons quun langage reconnaissable par un automate `
a pile par etats
dacceptations est reconnaissable par un automate `
a pile par pile vide et etats
dacceptation.
Soit A = (, , Q, s, , A) un automate `
a pile par etats acceptants. Nous allons
construire un nouvel automate A0 en modifiant A. Nous voulons que A0 soit un
automate a pile par pile vide et etats acceptants. A0 va reconnaitre exactement
le meme langage que A.
Pour quun mot soit reconnu par pile vide et etats dacceptation, il suffit de
vider la pile, une fois le mot lu.
On introduit qf , nouvel etat final, des -transitions entre chacun des etats acceptant et qf . On cree enfin des -transitions qui vident la pile en bouclant sur
letat qf .
La fonction 0 de transition de A0 contient tous les elements de .
Pour tout q A etat acceptant, tel que soit le symbole de sommet
du mot restant dans la pile (pour chaque transition), les nouvelles transitions
ajoutees dans 0 sont ((q, , ), (qf , )) et ((qf , , ), (qf , )).
Ainsi, A0 = (, , Q {qf }, s, 0 , A {qf }).
Il nous reste `
a present `
a montrer quun langage reconnaissable par un automate `
a pile par pile vide et etat acceptant est reconnaissable par un automate `
a
pile par etats acceptants.
Il vous est laisse en exercice...
Proposition 3 Tout langage reconnaissable par un automate `
a pile par pile vide
est reconnaissable par un automate `
a pile par etats acceptants, et inversement.
D
emonstration 3 Pour passer dun automate A = (, , Q, s, , F ) `
a pile par
pile vide `
a un automate A0 `
a pile par etats acceptants, il suffit de creer un nouvel
etat initial s0 , un symbole initial de pile et un etat final qf . Soient 0 comme
7
Automates `
a Pile et Langages Alg
ebriques
Dans la suite, nous allons montrer quun langage est algebrique si et seulement
si il est reconnu par un automate a pile, en demontrant chacune des inclusions.
Nous allons limiter nos automates `a pile aux automates `a pile par pile vide. En
effet, nous allons associer une grammaire algebrique `a un langage reconnu par
un automate `
a pile. Letude des equivalences entre les modes de reconnaissance
nous laisse libre de faire la preuve sur un des modes seulement. Nous choisissons
le mode de reconnaissance par pile vide, car une r`egle de grammaire consiste `a
remplacer une variable (et donc consommer celle-ci) par une chane de caract`ere.
Par analogie, le symbole du haut de pile devra etre depile avant detre remplace.
Nous serons donc amener `
a depiler des symboles jusqu`a la reconnaissance du
mot, jusqu`
a ce que la pile soit vide.
Proposition 4 Tout langage algebrique peut etre reconu par un automate `
a pile
par pile vide.
D
emonstration 4 Soit G = (, V, S, P ) une GNF qui reconnait L, langage
algebrique. Nous definissons un automate `
a pile simple comme un automate ne
possedant quun seul etat.
Soit A un tel automate par pile vide, A = (, {q0 }, V, S, q0 , ) o`
u
: {q0 } V {q0 } V
{((q0 , a, A), (q0 , )) | A a P }
{((q0 , , S), (q0 , )) Si | S P }
Remarquons que lensemble des variables de la pile est pris dans les non-terminaux
de notre grammaire.
La transition {(q0 , a, A), (q0 , ) | A a P } depile A, reconnat le caract`ere a du mot et empile . On y associe simplement une derivation grammaticale.
On note Ln (A) le langage reconnu par cet automate. Nous allons montrer
que celui-ci est algebrique.
8
(a) pour n = 1, pour une transition, on reconnat soit le mot vide soit
une lettre. En utilisant les fonctions de transition definies:
((q0 , , S) `1 (q0 , , )) si et seulement si S P
((q0 , a, A) `1 (q0 , , )) si et seulement si A a P .
On obtient u a
` laide de derivations normales de Greibach, lhypoth`ese
est donc vraie au rang 1.
(b) Supposons que lhypoth`ese est vraie jusquau rang n. Montrons quelle
est vraie au rang n + 1.
| u | 1 et soit v tel que u = av. (a, lue `
a n=1).
Soit A1 le symbole de sommet de pile qui sera empile apr`es depilement
de A (qui est maintenant notre symbole de sommet de pile). On
definit A2 , ..., Ap de la meme mani`ere. Soit v1 le plus petit prefixe de
v, celui qui sera letiquette de la transition depilant A1 et empilant
A2 . On definit v2 , ..., vp de la meme mani`ere.
Illustons:
Nous avons (q0 , u, S) `n+1 (q0 , , ) que lon peut decomposer en
((q0 , a, A) `1 (q0 , v1 ...vp , A1 ...Ap )) et (q0 , v1 ...vp , A1 ...Ap ) `n (q0 , , )).
Pour chaque i {1, ..., p}, on sait quil existe un calcul valide permettant de lire le mot vi ...vp en depilant successivement les Ai ...Ap :
((q0 , vi , Ai) `ki (q0 , , )) en un certain nombre de transitions ki pour
chaque i. Comme ce nombre ki n , on peut donc appliquer H:
Ai vi (GNF)
Donc, A aA1 ...Ap av1 ...vp = u P
2. Montrons que les langages algebriques sont reconnus par notre automate.
Soit u un mot appartenant a un langage algebrique.
Montrons par induction H: A n u ((q0 , u, S) ` (q0 , , )).
(a) n=1, A u. u = a ou u = car la graimmaire est en GNF. Soit
S ce qui nous donne la transition ((q0 , , S) ` (q0 , , )) de notre
automate. Soit A a pour la transition ((q0 , a, A) ` (q0 , , )) de
notre automate.
R
ef
erences
Thomas Blossier, cours universitaire sur les automates `a pile, Universite
Claude Bernard Lyon 1. Repere `a http://math.univ-lyon1.fr/ blossier/odi2009/chap8.pdf
Claude JARD. Cours universitaire sur les langages formels, universite de
Nantes Repere `
a http://pagesperso.lina.univ-nantes.fr/ jard-c/Cours/LF.pdf.
Jacques Desarmenien. Cours universitaire sur les automates, Universite de
Marne la Vallee. Repere `a http://www-igm.univ-mlv.fr/ desar/Cours/automates/ch4.pdf
12