Sie sind auf Seite 1von 28

Chapitre IV Les langages contexte libre (Context Free Languages)

IV.1 Introduction par un exemple


Soit le langage L dcrit par l'expression rgulire suivante: a(a* b*)b Un mot peut avoir la forme a bbb...b b S aMb M A M B A aA A B bB B dcrit rcursivement une suite de b dcrit rcursivement une suite de a M peut tre une suite de a ou une suite de b ou a aaa...a b On peut dire que a la forme aMb, il reste dcrire M

IV.2 Dfinition d'une Grammaire hors contexte


une grammaire G est un quadruplet (V,,R,S) o: V est un ensemble fini de symboles terminaux et n on terminaux: (alphabet globale) est l'alphabet des symboles terminaux V- ensemble des non terminaux S: Axiome (start symbol), toute drivation commence par S. R: rgles de production. R ( V-)V*

Dans l'exemple de l'introduction: V = {S,M,A,B,a,b}. ={a,b} ensemble des terminaux. V-={S,M,A,B} ensemble des non terminaux. S = Axiome, R={ S aMb, M A, M B, A aA, A , B bB, B }

IV.3 Dfinition d'une Drivation


se drive directement en et on note: s'il existe une suite de mots 0, 1,.., n de V* tels que: = 0 = n i, 0 i <n, i i+1 1

Remarque: est drivable si S Le langage engendr par la grammaire G est: L(G) = {*, S } L est dit langage contexte libre (CFL) s'il existe une grammaire G qui le gnre. IV.3.1 Drivation gauche se drive directement le plus gauche en et on note: s'il existe des mots 1 *,
g
*

2 V* tels que: = 1 X 2 = 1 W 2 R contient une production X W se drive le plus gauche en et on note s'il existe une suite de mots 0, 1,.., n de
g *

V* tels que: = 0, = n et i, 0 i <n, i i+1


g

IV.3.2 Drivation droite se drive directement le plus droite en et on note: s'il existe des mots 1 V *,
d

2 * tels que: = 1 X 2 , = 1 W 2 et R contient une production X W se drive le plus droite en et on note s'il existe une suite de mots 0, 1,.., n de
d *

V* tels que: = 0, = n et i, 0 i <n, i i+1


d

Exemple: soit G =(V, ,R,S) avec = {x1,x2,+,*,(,)}, V = {E,T,F},S = E et R: E E+T E T T T*F T F F (E) F x1 F x2 soit = x1 *(x2+x1)

Drivation gauche E T
g

T*F
g g g g g g g g g g

F*F x1*F x1*(E) x1*(E+T) x1*(T+T) x1*(F+T) x1*(x2+T) x1*(x2+F)

formes sententielles non terminales

Drivation droite Pour la drivation droite, c'est le non terminal le plus droite qui est driv chaque tape E T
d

T*F
d d d d d d d d d d

T*(E) T*(E+T) T*(E+F) T*(E+x1) T*(T+x1) T*(F+x1) T*(x2+x1) F*(x2+x1) x1*(x2+x1)

x1*(x2+x1) forme sententielle


terminale

IV.4 Arbre syntaxique (Parse Tree)


soit une grammaire G(V, ,R,S), un arbre syntaxique pour un mot engendr par G est un arbre dont: La racine est tiquete par l'axiome S Les feuilles sont tiquetes par {} Les nuds internes le sont par des lments de V-

Un nud interne tiquet B a des fils, de gauche droite, tiquets 1,2,..,n s'il existe une production de R: B 12..n est form de la concatnation des feuilles lues dans un parcours suffixe (profondeur d'abord, gauche droite)

Exemple: arbre syntaxique pour x1*(x2+x1)


E T T F x1 * F

( E ) E + T T F x2 F x1

IV.5 Grammaires ambigus


Une grammaire G est dite ambigu s'il existe un mot * possdant plus qu'un arbre syntaxique. Une grammaire G est dite ambigu s'il existe un mot * ayant plus d'une drivation gauche Une grammaire G est dite ambigu s'il existe un mot * ayant plus d'une drivation droite Exemple: G(V, ,R,E) ={x1,x2,+,*,(,)} V-= {E} et R dfinit par: E E+E E E*E E (E) E x1 E x2 soit = x1+x1*x2 Cette grammaire est ambigu car la chane a plus d'une drivation gauche. en effet: E E+E x1+E x1 +E*E x1+x1*E x1+x1*x2
g g g g g

E E*E E+E*E x1+E*E x1+x1*E x1+x1*x2


g g g g g

de mme on peut trouver deux drivations droites

E E + E * E x2

x1 E x1

E E x1

E x2

+ E x1

IV.6 Exemples de grammaires


soit G1(V, , R, S) avec = {a}, V-={S} et R dfinit par S aS S G1 reprsente langage (a*) soit G2(V, , R, S) avec = {a}, V-={S} et R dfinit par S SS S a S G2 reprsente aussi le langage (a*) soit G3(V, , R, S) avec = {a}, V-={S,A} et R dfinit par S AA A AAA on enlve A, on ajoute 3A donc on est en train de rajouter 2A S a voici une drivation: S AA AAAA AAAAAA aAAAAA aaAAAA aaaAAA aaaaAA
g g g g g g g g

aaaaaA aaaaaa
g

Le langage reconnu est aa(aa)*. Exercice: soit ={a,b} L = {*, contient 2n a, n >=1} 1) Donnez G = (V,,R,S) tq L(G) = L 2) Donnez une drivation gauche de la chane = abaababa L. 3) Montrer que L(G) = L. 5

Rponse: 1) S AA A bA A Ab A AAA Aa 2) = bbaababa S AA


g

gnre rcursivement une suite de b gauche gnre rcursivement une suite de b droite

bAA
g g g g g g g g g

bbAA bbaA bbaAAA bbaAbAA bbaabAA bbaabaA bbaababA bbaababa


3) Montrons que L(G) = L, Il faut montrer que L(G) L et L L(G) L = {*, possde la proprit P} L(G) L ssi L(G), possde la proprit P. Dmonstration L(G) L Au lieu de dmontrer que seules les formes sententielles terminales sont dans L, on va dmontrer que toute forme sententielle ou pas est dans L. (contient un nombre pair de a ou A). Par rcurrence sur la longueur de la drivation base k = 1 S AA contient bien un nombre paire de A ou a hypothse: On suppose que toute drivation de longueur k, k [1..n] possde un nombre pair de A ou a. Recurrence: Prenons une drivation de longueur n+1 S 0 1...n n+1 6

Dans la drivation directe n n+1 on passe travers une rgle qui ne change pas la parit, en effet A bA A Ab A AAA Aa ne change pas le nombre de A + a ne change pas le nombre de A + a ajoute 2A donc preserve la parit des A+a ne change pas le nombre de A + a

Donc l'hypothse est aussi vraie l'ordre n+1. Donc toute forme sententielle a un nombre paire de a ou A, or la forme sententielle terminale ne contient que des terminaux (0A) donc elle contient forcement un nombre paire de a. Donc L(G), possde 2n a. Dmonstration L L(G) soit L, = bm1 a bm2 a... bm2n-1 a bm2n a bm2n+1 Voici une drivation de S en w S AA A AAA A bA Aa A bA Aa 2n-1 fois bm1abm2a....bm2n-1aA A bA A Ab A a m2n fois m2n+1 fois 1 fois bm1abm2a....bm2n-1aA bm2nA bm1abm2a....bm2n-1aA bm2nAbm2n+1 bm1abm2a....bm2n-1aA bm2nabm2n+1 1 fois (n-1) fois m1 fois 1 fois AA AA....A b AA...A bm1aA...A
m1

(2n A)

IV.7 Transformations des grammaires hors contextes


IV.7.1 Simplification a)Dfinitions : Soit G(T,N,S,P) une grammaire hors contexte 1) Un symbole non terminal A est dit

- Inaccessible: ssi

il n'existe aucune drivation permettant datteindre A, c'est--dire il


*

nexiste pas , tel que S A

- improductif: ssi il nexiste pas de drivation de la forme A ; VT* (chane de terminaux) 2) La grammaire G est dite - sans cycle : s'il nexiste pas de drivation A A produite par G. - sans renommage : ssi elle ne contient pas de production de la forme AB, A, B (V-). - -libre si - il n'existe pas de rgle de la forme (A ) P, A N \ { S } - si (S) P alors S napparat pas dans le deuxime membre dune rgle de production. 3) Une grammaire sans termes inaccessibles et sans termes improductifs est dite grammaire rduite. 4) Une grammaire sans cycle et libre de est dite grammaire propre. b) Transformation de grammaires : Les termes inaccessibles et improductifs seront limins dans toutes les rgles de production ou` il interviennent. Algo : Elimination symbole non productif Entre :G=<VN,VT,S,P> Sortie :G=<VN,VT,S,P> Dbut V1= ; V2={A VN /(A )P et VT*} Tantque V1 V2 faire V1 :=V2 V2 :=V1 {A VN /(A ) P et (VT V1)*} Fin tantque VN:=V2 Fin Exemple SAA|B|a ASS|b BBC|AB CaB|b 8 soit G({a,b},{S,A ,B,C}, S)
*

Appliquons l'algorithme: Initialisation V1= V2={S,A,C} Iteration1 V1={S, A, C}, V2={S, A ,C }{A\ A P et (S, A, C, a ,b)*} ={S, A, C}{S, A, C}={S,A,C} V1=V2 Vn = {S,A,C} on limine toutes les productions qui font intervenir B La grammaire devient : G({a,b},{S,A,C},S, S AA|a A SS|b C b) Remarquons que dans la grammaire G, C est devenu inaccessible En effet, aucune drivation faite partir de S ne produit C, on supprime donc C et la grammaire dfinitive devient : G((a,b) ,(S,A),S, SAA|a ASS|b IV.7.2 Transformation d'une grammaire non libre de Entre G(T,N,S,P) non libre de Sortie G(T,N,S,P) libre de

Dfinition des diffrents paramtres : -T=T -N=N{S} -S=S ou bien SS et Sest le nouvel axiome. Algorithme de transformation : 1) Si (A0 B1 1.. Bi i .. Bk k ) P et (Bi ) P alors {(A0 X1 1 ..Xii .. Xk k ) P Avec Xi=Bi ou Xi= et suppression des rgles Bi } 2) Si (S ) P et si Bi tq Bi=S Alors (S |S) P On applique ensuite 1 aux rgles S Exemple 1 Soit G( {a},{S,A} S,P) avec P= SAb 9

AaA| On est dans le premier cas et L(G). La grammaire libre de est G({a,b},{S ,A},S ,P) Avec P= SAb|b AaA|a Exemple 2 Soit G( {a,b},{S},S,SaSb| ) On est dans le deuxime cas et L(G). Donc introduction dun nouvel axiome S et on a S |S SaSb| [F2] On applique 1) [F2] on obtient donc G( {a,b},{S},S, S |S ,SaSb|ab) Exemple 3 : Soit G({a,b},{S} ,S,P) avec P= ( SaSbS| bSaS| ) On est dans le deuxime cas, mais laxiome se rpte plusieurs fois, il faut donc considrer tous les cas dans les remplacements. On introduit dabord le nouvel axiome S. On a : S |S [F1] SaSbS|bSaS | [F2] On applique 1) [F2] La grammaire libre de est donc G( {a,b},{S,S},S, S |S; S aSbS |bSaS|abS|aSb|ab|baS|bSa|ba [F1]

IV.8 Classification de chomsky


Chomsky a tabli une classification des langages par types de grammaires. Il a ainsi tabli quatre types de grammaires: type0, type1, type2 et type3. Selon Chomsky toute grammaire gnrant un langage formel est de type 0. Pour dfinir les autres types de grammaires, il introduit des restrictions de plus en plus svres sur les rgles de production. IV.8.1 Grammaires contextuelles context-sensitive ou de type 1(CG) Une grammaire est contextuelle si toute rgle de production : peut scrire A Peut scrire Avec , , , dans V* (suite de terminaux ou non terminaux) A dans Vn (non terminal) Dans V* (suite non vide de terminaux ou non terminaux) 10

On voit que le symbole A de Vn qui se trouve dans prcd par et suivi par (dans le contexte et ) peut tre substitu par et prcd par et suivi par (do le nom contextuelle). Exemple: aBab B est substitu par b que si elle est prcde par a. IV.8.2 Grammaires non contextuelles context-free ou de type 2 (CFG) Les productions dans ce cas sont de mme forme que les CG mais avec une nouvelle contrainte telle que : = = et = = Ainsi toutes les productions sont de la forme : A Avec A Vn (non terminal) et B V* (suite non vide de terminaux et de non terminaux ) Le symbole A de Vn est substitu par sans restriction de contexte Exemple : Soit G une grammaire dfinie par : G= {Vn ,Vt ,P,S} Avec Vn = {S ,A,B} et Vt={a,b} P: S aB|bA A a|aS|bAA Bb|bS|aBB G est une grammaire hors contexte; toutes les productions de G ont un seul lment de Vn gauche. IV.8.3 Grammaires Rgulires ou de type3 :RG C'est une grammaire Hors contexte, on impose en plus la contrainte suivante : toutes les productions sont de la forme : A avec = a ou =aB ou = avec a dans Vt et B dans Vn Exemple : Soit G une grammaire dfinie par: G={Vn, Vt, P, S} avec Vn= {S,A ,B} et Vt={0,1} Les productions de P sont: S 0A | 1B | 0 11

A 0A | 0S |1B B 1B|1 | 0 Toutes les productions ont un lment de Vn gauche et un lment de Vt suivi ou non par un lment de Vn droite. Donc cest une grammaire rgulire.

IV.9 Classification des langages formels


Un langage contextuel ou de type 1 est un langage gnr par une grammaire contextuelle. Un langage non contextuel ou de type 2 est un langage gnr par une grammaire non contextuelle. Un langage rgulier ou de type 3 est un langage gnr par une grammaire rgulire . Soient F0,F1,F2,F3 les familles de langages de types 0 ,type1,type2 et type3 respectives alors F3 F2 F1 F0

IV.10 Transformation d'une grammaire rgulire droites en NFA


Soit G=(N,T ,P,S) une grammaire rgulires droite , on peut construire un automate fini A=(,Q,,q0,F) qui accepte les mots engendrs par G: Pour toutes les productions B de P ,on ajoute un nouveau symbole non terminal X et on remplace ces productions par BX et X Lensemble des tats Q de lautomate est celui des non-terminaux renommage prs) Lalphabet est gale lensemble T des terminaux. Ltat q0 correspond laxiome A de la grammaire. N{X}( un

Pour toute production BC de P, il existe la flche (B, ,C) dans (au renommage prs) Pour toute production B de P, ltat correspondant B est final dans A. Exemple b G=(N ,T ,P,A) une grammaire rgulire droite N={A,B,axiome A} T={a,b,c} P{AaA AbB Ac (devient ACX et X) BbB Ba(devient BaX) B E :a*bb*(a ) (a*C) 12
A X B

b a

A=(,Q,, q0=A, F) ={a,b,c},={A,B,X},F{B,X} L(G) = L(A)

IV.11 Transformation d'un DFA en grammaire rgulire


Thorme: Un langage est rgulier si et seulement si il existe une grammaire rgulire qui engendre les mots de L. Soit un automate fini donn A=(,Q,, q 0,F) G=(N,T,P,A)est une grammaire rgulire qui engendre les mots de L(A) si : Lensemble des non terminaux N est celui des tats Q de lautomate ( un renommage prs) Lensemble des terminaux T gale . Laxiome A de la grammaire correspond ltat q0. Pour tout lment (q,6,q) de il existe la production q 6q dans P(au renommage prs) Pour tout f F il existe la production f dans P(au renommage prs)

Exemple : A=(,Q,, q0=A,F) ={a,b},Q={A,B,C,D},F={D} G=(V,,R ,A) V- ={A,B,C,D},axiome A ={a,b}

b B A a b b C

a a,b D

R={AaC AbB BaD BbA CaD CbB DaD DbD D} L (G) = L (A)

IV.12 Forme Normale de Chomsky (FNC)


Une grammaire hors contexte G = {N, T, P, S} est sous forme normale de Chomsky si toute production est de la forme : 13

A A S

a BC

Avec A, B, C N et a T (dans le cas ou la dernire production est prsente, S ne figure dans aucun membre droite dune autre production) Il existe un algorithme qui transforme toute grammaire hors contexte propre en grammaire sous FNC. Algorithme mise sous forme FNC On construit G= (N, T, P, S) quivalente G (N, T, P, S) et sous FNC 1) N {S} P {A a, A a T} 2) Pour chaque production de P de la forme A i V et p > 2 on ajoute P les productions : A X1 . . Xp-1 Ap-1Ap ou Ai = i si i N ou alors Ai = X i si i T. 3) N reoit les A, les Xi et les Ai 4) On considre les productions de P de la forme A On ajoute P les productions de la forme A Y1 Y2 Y1Y2 1 si 1 T, Y1 = 1 sinon 2 si 2 T, Y2 = 2 sinon a a, A BC, S avec A, B, C N et a 12 avec 1 ou 2 T A1X1 A2X1 1 p avec A N, BC et ventuellement S pour A, B, C N,

5) pour chaque Xa cre plus haut, on ajoute P Xa 6) N reoit les Yi et les Xa prcdents Toutes les productions sont donc de la forme A T.

Exemple : (mise sous FNC dune grammaire hors contexte) G = (N, T, P, E) propre (sans production vide et sans renommage) N = {E, T, F} ensemble des non terminaux T = {+, *, (, ), i} ensemble des terminaux 14

P = {E T F F

E+T | T*F | (E) | i T*F | (E) | i i (E) }

E est laxiome. G = (N, T, P, E) ou pour linstant : N= {E, ..} T = {+, *, (, ), i} P = {E T F Reste traiter E T F E E+T | T*F | (E) T*F | (E) (E) E+T devient E E X1 et X1 X+T} X*F X+T i i i}

E est laxiome.

N = {E, T, X1 , X+} P P {E E E X1 , X1

T*F devient E

T X2 et X2 X*F}

N = {E, T, X1, X+,F, X2, X*} P P {E E T X2 , X2

(E) devient E

X(X3 et X3

E X)

N = {E, T, X1 , X+, F, X2, X*, X(, X3, X)} P P {E T X( X3 , X3 E X)} X*F

T*F devient T

T X4 et X4 X*F}

N = {E, T, X1, X+, F, X2, X*, X(, X3, X), X4} P P {T T T X4 , X4

(E) devient T

X( X5 et X5

E X)

N = {E, T, X1 , X+, F, X2, X*, X(, X3, X), X4, X5} 15

P P {T F

X(X5, X5

E X)} E X)

(E) devient F

X(X6 et X6 E X)}

N = {E, T, X1 , X+, F, X2, X*, X(, X3, X), X4, X5, X6} P P {F X( X6, X6

On ajoute P les productions Xa a, a T ncessaires P P {X+ +, X* *, X ( (, X) )}

En dfinitive, G = (N, T, P, E) ou : N = {E, T, F, X1 , X2, X3, X4, X5, X6, X+, X*, X(, X)} T = {+, *, (, ), i} E est laxiome P = {E T F X1 X2 X3 X4 X5 X6 X+ X* X( X) E X1 | T X2 | i T X4 | X( X5 | i X( X6 | i X+T X*T EX) X*F EX) EX) + * ( )}

16

Chapitre V Automates pile (Push Down Automaton, PDA)

V.1 Introduction
Par analogie avec les expressions rgulires qui engendrent les langages rguliers, les grammaires hors contextes engendrent les langages hors contexte. Aussi par analogie avec automates tats finis qui reconnaissent les langages rguliers, les automates pile reconnaissent les langages hors contextes. Exemple: Utilisation d'un automate pile L'automate pile va tenter de lire le mot aaabbb pour vrifier s'il appartient ou pas L = { {a,b}*, = anbn n 0} qui n'est pas rgulier sinon on aurait utilis un DFA. Le PDA enpile un X la lecture d'un a et ds la lecture du premier b il commence dpiler la rencontre de chaque b. Il accepte le mot quand la pile devient vide. a a a b b b Pile

PDA

X empiler X la lecture d'un a a a a b b b Pile

PDA
X X empiler X la lecture d'un a a a a b b b Pile

PDA
X X X 17

empiler X la lecture d'un a a a a b b b Pile

PDA
X X dpiler X la lecture d'un b a a a b b b Pile

PDA

X dpiler X la lecture d'un b a a a b b b Pile vide

PDA

dpiler X la lecture d'un b. Le mot est accept par pile vide Pourquoi un automate pile Les automates finis n'ont pas d'autres mmoires que leurs tats. Ils ne savent donc pas compter au-del de leur nombre d'tats. Une pile procure une mmoire additionnelle non borne. Le nombre de symboles utiliss dans la pile est fini. La pile vide peut tre un critre d'acceptation des mots.

V.2 Dfinition d'un automate pile


Un automate pile non dterministe est un septuple (Q, ,,,q0, z, F) o: 18

Q : ensemble fini d'tats : alphabet fini des symboles d'entre : alphabet fini des symboles de pile : ensemble des rgles de transition q0 : tat initial z : symbole de pile vide F : ensemble des tats d'acceptation

V.3 Dfinition d'une transition


Une rgle de transition (q, , q',) considre: L'tat courant q de l'automate Le caractre lu sur le ruban (ou peut tre ) Le symbole de sommet de pile (ou peut tre z ou ) une rgle de transition indique : Le prochain tat q' de l'automate La suite de symboles empiler la place du sommet de la pile ou dans la pile vide La relation de transition est l'ensemble des rgles de transition vues comme des quintuples (Q ( {}) ( {})) (Q *) (q, , q',): on est l'tat q avec en sommet de pile, on peut lire du restant lire, remplacer par et transiter l'tat q'.

V.4 Langages reconnus par un PDA


Dfinitions: soit A(Q, ,,,q0, z, F) un PDA 1. On appelle configuration initiale d'un PDA, le triplet (q0, ,z), avec la chane reconnatre par le PDA. 2. On appelle configuration finale d'un PDA, le triplet (qF, , ) avec qF F et *. 3. Une configuration est un triplet (q:tat courant , x:restant lire,:contenu de la pile). Remarques: si = , la pile est vide. La succession des configurations se fait travers , not .

Le langage reconnu par un PDA est l'ensemble des mots lus partir de la configuration initiale jusqu' l'obtention d'une configuration finale. Formellement L(A) = {*/ (q0, ,z) * (qF, , ) avec qF F et *}

19

Remarque: Pour la configuration finale d'un PDA, le contenu de la pile importe peu. Cependant, un cas particulier est de considrer une configuration finale o la pile serait alors vide. L'automate est dit alors automate pile vide.

V.5 Dfinition: langage reconnu par un automate pile vide


On dit qu'un langage est reconnu par un automate pile vide, si lorsqu'on parcourt tous ses mots ( partir de la configuration initiale), on obtient une pile vide et un tat d'acceptation. L (A) = { */ (q0, , z) * (qF, , ) avec qF F}. Exemple1: soit le langage contexte libre L ={anbn, n 0}. Dterminons le PDA qui reconnat L. Le principe tant d'empiler X chaque rencontre d'un a, et de dpiler un X au fur et mesure de la lecture des b: A est donc A (Q,,,,q0, #, F) Q = {q0,q1,q2,q3}; = {a,b}; = {X,#}; F = {q3}; dfinie par 1 (q0,a,#) = (q1,X#) 2 (q1,a,X) = (q1,XX) 3 (q1,b,X) = (q2,) 4 (q2,b,X) = (q2, ) 5 (q2,,#) = (q3,#) On dpile X et on se dplace q2 qui va avoir une boucle de dpilement dpilement successif de tous les X tat final q3 atteint b) a2b c)ab2 On a empil X et on se dplace q1 qui va faire une boucle d'empilement.

Remarque: si n= 0 (L), il faut donc ajouter l'instruction (q0,,#) = (q3,#) faisons tourner l'automate sur quelques mots a) a2b2 a) tat q0 q1 q1 q2 q2 q3 Autre reprsentation (q0,aabb, #) (q1,abb,X#) (q1, bb,XX#) (q2,b,X#) (q2, , #) (q3, , #) 20 restant lire aabb abb bb b contenu de la pile # X# XX# X# # # transition utilise 1 2 3 4 5

on a (q0, a2b2, #) * (q3, , #) donc le mot est lu on est arriv un tat d'acceptation donc a2b2 L(A).. b) (q0, aab,#) (q1, ab, X#) (q1, b, XX#) (q2, , X#) il n y'a pas de transition pour la configuration dont l'tat courant est q2, le mot est lu et il y a un X en sommet de la pile; Bien que le mot soit lu, la configuration finale n'est pas obtenue, Donc aab L(A). c) (q0, abb, #) (q1,ab,X#) (q2,b,#) il n'existe pas de transition quand l'automate est en q2, il reste un b lire et # en sommet de pile, il y a donc blocage et abb L. Remarque: si on veut un PDA pile vide, il faut ajouter la transition (q2, ,#) = (q3, ) Notation (qi, , )(qj, ) sans tenir compte du restant lire (ne pas avancer dans le ruban) (qi, ,)(qj, X) empiler X quel que soit le contenu de la pile. sans tenir compte de la pile Exemple: (p, , a) (q, ) dpiler a le restant lire et aller q (p, , ) (q,a) empiler a le contenu de la pile et le restant lire (sans avancer dans le ruban) Exemple: soit = {a,b} et L = {cR : *}

a b c b a
empiler a empiler b aller l'tat de dpilement dpiler b dpiler a

A (Q,,,,q0, #, F) 1 2 3 (q0,a, #) (q1,a#) (q0,b,#) (q1,b#) (q1,a, ) (q1, a) empiler a la tte de la pile 21 Q= {q0,q1,q2}, = , F = q2

4 5 6 7 8

(q1,b, ) (q1,b) (q1, c, ) (q2, ) (q2,a,a) (q2, ) (q2,b,b) (q2, ) (q2, , #) (q2, )
a,a b,b a,a b,b ,#

empiler b la tte de la pile aller q2 la tte de la pile dpiler a si je rencontre a sur la bande et que le symbole en sommet de pile est a. dpiler b si je rencontre b sur la bande et que le symbole en sommet de pile est b.

q0 c, q1

abbcbba tat q0 q1 q1 q1 q2 q2 q2 q2 q2 restant lire abbcbba bbcbba bcbba cbba bba ba a contenu pile Transition utilise # 1 a# 4 ba# 4 bba# 5 bba# 7 ba# 7 a# 6 # 8 Mot accept par pile vide

Remarque : Un NFA M= {Q, , , s, F) est la mme chose qu'un PDA M'(Q,,,',s, null, F) avec '= ((p,u, ) (q, ) tel que (p,u,q) } c'est dire un PDA dont la pile n'est pas utilise. Equivalence: Tout langage hors contexte reconnu par un PDA avec le mode de reconnaissance sur pile vide est galement reconnu par un automate pile acceptant sur tat final et vice-versa.

V.6 Dterminisme
un automate pile est dterministe (PDA dterministe) si: pour un tat q donn pour un symbole d'entre donn pour un symbole de pile donn

Il existe une et une seule transition partant de (q, ,) 22

ceci correspond bien au fait de ne pas avoir le choix quant- la transition appliquer Thorme Il existe des langages non contextuels qui ne sont pas reconnus par un automate pile dterministe. Exemple: Le langage { R , *} n'est pas reconnu par un PDA dterministe. M (Q,,,,s, null, F) 1 2 3 (s, a, ) (s,a) (s, b, ) (s,b) (s, ,) (f, ) empiler a le symbole en sommet de pile la rencontre de a dans la bande empiler b le symbole en sommet de pile la rencontre de b dans la bande passer l'tat f le symbole en sommet de pile et le symbole rencontr sur la bande d'entre

4 5

(f,a,a) (f, ) (f,b,b) (f, ) 2 chanes sont dites persistantes si l'une est un prfixe de l'autre 2 transitions (p1, 1, 1) (q1, 1) (p2, 2, 2) (q2, 2) p1= p2 1 et 2 sont persistantes 1 et 2 sont persistantes sont dites compatibles si

Dfinitions

Thorme: un PDA est dterministe s'il ne contient aucune transition compatible Exemple 1 = {a,b} L = {cR, *} M (Q,,,,s, null, F) : (s,a,a) (s,a) (s,b, ) (s,b) (s,c,) (f,) (f,a,a) (f, ) (f,b,b) (f, ) 23 mme tat de dpart mais a n'est pas prfixe de b le mme tat de dpart mais a n'est pas prfixe de b ni b de c ni a de c

Il n y a pas de transitions compatibles donc le PDA est dterministe. Exemple 2: L = {R, *} : (s,a, ) (s,a) (s,b, ) (s,b) (s, ,) (f,) (f,a,a) (f, ) (f,b,b) (f, ) transitions non compatibles 3 transitions compatibles prfixe de a et de b, prfixe de

V.7 Transformation d'une grammaire hors contexte en PDA


Thorme: Pour toute grammaire hors contexte, il existe un automate pile vide A tel que L(G) = L(A) L'ide consiste commencer par empiler l'axiome, ensuite, chaque symbole de la chane d'entre, on remplace la partie gauche de la production concerne par le reste de la partie droite. Algorithme: L: langage engendr par G = (V, , R, S), il s'agit de trouver A (Q,,,,q0, #, F) tel que L(G) = L(A). = de la grammaire = V {#} Q = {q0, q1} F = q1 dfinie par: 1) (q0, , #) = (q1, S#) on empile l'axiome la chane d'entre 2) si (A ) R alors (q1, , A)= (q1, ) 3) (q1, , ) = (q1, ) 4) (q1, , #) = (q1, ) Exemple: soit L = {anbn, n 1} L est engendr par G = (V, , R, S) avec V = {a,b,S}; = {a,b}, et R dfinit par S aSb|ab 24

Le PDA pile vide qui reconnat L(G) est: A (Q,,,,q0, z, F) avec ={a,b}; ={a,b,S,#}, z = #, Q={q0,q1}; F={q1} et dfinie par: (q0, , #) = (q1, S#) (q1, , S) = (q1, aSb) (q1, , S) = (q1, ab) (q1, a, a) = (q1, ) (q1, b, b) = (q1, ) (q1, , #) = (q1, ) [F4] [F3] [F1] [F2]

Faisons tourner l'automate sur a2b2 (q0,aabb, #) (q1, aabb, S#) (q1, aabb, aSb#) (q1, abb, Sb#) (q1, abb, abb#) (q1, bb, bb#) (q1, b, b#) (q1, , #) (q1, , )

V.8 Transformation d'un PDA en grammaire hors contexte


Thorme Si L est reconnu par un automate pile M, alors il existe une grammaire non contextuelle G qui engendre L. On dispose dun PDA A qui reconnat sur pile vide et on veut construire une grammaire algbrique G telle que L (G)=L (A). Algorithme transformation PDA Grammaire hors contexte On part de A= (Q, , , , q0, Z, F=) et on construit G (V, , R, S) 1) V-= {<q, x, p>, q, p Q, x } {S} 2) = de lautomate 3) Pour tout q Q, P {S 4) Pour toute transition (q, a, x 5) Pour toute transition (q, a, x) dtats q1, q2, , qm faire P {<q, x, qm > B1, ,Bm . Exemple 1 0) On part de A = (Q, , , , q0, Z, ) et on construit G (V, , R, S) les transitons sont donc : (q0, a, Z) (q0, A) (1) 25 < q0, Z, q >} p, ) de faire P {< q, x, p > p, B1,, Bm
,

a}

m>0 de faire pour toutes les suites

a <p, B1, q1> <q1, B2, q2> <qm-1, Bm, qm> avec a {} ; x,

(q0, a, A) (q0, b, A) (q1, b, A)


A,Z A a,A AA q0

(q0, AA) (2) (q1, ) (q1, ) (3) (4)

b,A q1

b,A

1) V- = {<q0, A, q0>; < q0 , A, q1 >; <q1, A, q0 >; < q1, A, q1 > ; <q0, Z, q0>; < q0 , Z, q1 >; < q1, Z, q0 >; < q1, Z, q1 >} {S} 2) = {a, b} 3) P reoit {S 4) P reoit < q0 , A, q1 > < q1 , A, q1 > 5) P reoit < q0 , Z, q0 > < q0 , Z, q1 > < q0 , A, q0 > < q0 , A, q0 > < q0 , A, q1 > < q0 , A, q1 > Aprs renommage S A B C D F A|B aC aD a CC | a DE a CD | a DF | b b a< q0 , A, q0 > (1me transition) a< q0 , A, q1 > (1me transition) a< q0 , A, q0 > < q0 , A, q0 > (2me production) squence q0q0 a< q0 , A, q1 > < q1 , A, q0 > (2me production) squence q1q0 a< q0 , A, q1 > < q1 , A, q1 > (2me production) squence q1q1 a< q0 , A, q0 > < q0 , A, q1 > (2me production) squence q0q1 b (3me transition) b (4me transition) <q0 , Z, q0 > ; S <q0 , Z, q1 >}

Simplification Les productions S A|B; A aC ; B a D remplaces par S aC|aD

26

Donc on obtient S C D F aC|aD a CC | a DE a CD | a DF | b b on remplace F par b E symbole non productif S S D aC|aD a CC a CD | a D b | b C est devenu non productif, liminer toutes les productions faisant intervenir C S D aD aDb|b

Forme simplifie.

V.9 Proprits de clture


La classe des langages hors contexte est close pour lunion Preuve par construction: Soient G1 = (N1, T1, R1, S1) et G2 = (N2, T2, R2, S2) engendrant respectivement L1 et L2 Construisons G pour engendrer L1 L2 G = (N1 N2 {S}, T1 T2, S, R1 R2 {S S1 | S2 }) En sassurant au pralable que N1 N2 = et S N1 N2 sinon renommage. La classe des langages algbriques est close par concatnation Preuve par construction Soient G1 = (N1, T1, R1, S1) et G2 = (N2, T2, R2, S2) engendrant respectivement L1 et L2 Construisons G pour engendrer L = L1L2 G = (N1 N2 {S}, T1 T2, S, R1 R2 {S S1S2}) En sassurant au pralable que N1 N2 = et S N1 N2 La classe des langages algbriques est close pour lopration toile de Kleene Preuve par construction G = (N, T, R, S) engendrant le langage L Construisons G pour engendrer L* : | SA} 27

G = (N {A}, T, axiome A, P {A

On sassure au pralable que A N Exemple Question : construire une grammaire pour L = {ai bj ck, i=j, ou j=k} Rponse : L est lunion de deux langages = L1 L2 Avec L1 : {ai bj ck , i=j, k 0} L2 : {ai bj ck , i 0, j=k} Concernant L1 :{ai bj ck, i=j, k 0} est la concatnation de L1= {ai bj, i=j} L1= {ck, k 0} Concernant L2 :{ai bj ck, i 0, j=k} est la concatnation de L2= {ai, i 0} L2= {bj ck, j=k} Les langages {ck, k 0}, respectivement {ai, i 0} sont toile de {c}, respectivement {a}. Construisons maintenant la grammaire pour L. {ai bj, i=j}: S1 {c , k 0}: S2
i j k k

| a S1 b | c S2

L1 = {a b c , i=j, k 0} S1 S2 SL1 | a S1 b | c S2 S1 S2 /*concatnation

L2 = {ai bj ck, i 0, j=k} S3 S4 SL2 | a S3 | b S4 c S3 S4 /*concatnation

L = {ai bj ck, i=j, ou j=k} est engendr par G = (N, T, R, S) N = {S1, S2, S3, S4, SL1, SL2, S} T = {a, b} P = {S1 | a S1 b; S2 S4 | c S2; SL1 | b S4 c; SL2 S1 S2; S3 S3 S4; S | a S3; SL1 | SL2}

28

Das könnte Ihnen auch gefallen