8 - Automates à pile
Transcription
8 - Automates à pile
Récapitulatif Les grammaires algébriques engendrent les ... langages hors-contexte (= algébriques) 8 - Automates à pile qui sont reconnus par des automates à pile 1! 2! Fonctionnement Pourquoi une pile ? L’automate à pile AP va tenter de lire le mot aaabbb : a ! a! a! a! a! b! b! • les automates finis n’ont pas d’autre mémoire que leurs états • ils ne savent donc pas «compter» au-delà de leur nombre d’états • une pile procure une mémoire additionnelle non bornée • on accède à la pile uniquement par son sommet • le nombre de symboles utilisés dans la pile est fini • la pile vide peut être un critère d’acceptation des mots. b!b! AP Pile vide 3! 4! Automate à pile Un automate à pile non-déterministe* (APN) est un septuplet (Q,Σ,Γ,δ,q0,Z,F) avec : • • • • • • • Q : ensemble fini d’états Σ : alphabet fini des symboles d’entrée Γ : alphabet fini des symboles de pile (a priori Γ∩Σ=∅) q0 : état initial Z ∈ Γ : symbole initial de pile F ⊆ Q : ensemble des états terminaux δ est l’ensemble des règles de transition *pushdown automaton en anglais Transition • une règle ( q,σ,γ → q’, χ ) de transition considère : • l’état courant q de l’automate • le caractère lu σ sur le ruban (ou peut-être pas : • le symbole γ de sommet de pile (ou peut-être pas : • une règle indique : • • le prochain état q’ de l’automate la suite de symboles χ à empiler à la place du sommet de pile • la relation de transition δ est l’ensemble des règles de transition vues comme des quintuplets : δ ⊆ Q × (Σ∪{ε}) × (Γ∪{ε}) × Q × Γ* 5! 6! Mode de reconnaissance Il existe 2 modes de reconnaissance pour les automates à pile selon que F égale ∅ ou pas : reconnaissance par état final • reconnaissance sur pile vide • Le langage accepté par • A est : reconnaissance sur état final LF(A) = { w ∈ Σ , la pile contenant Z au départ, il existe une lecture de w depuis q0 à f, f ∈ F }. • ε) ε) reconnaissance par pile vide L∅(A) = { w ∈ Σ , la pile contenant Z au départ, il existe une lecture de w depuis q0 qui termine avec la pile vide } 7! Exemple (reconnaissance sur pile vide) Automate à pile A= ε (Q,Σ,Γ,δ,q0,Z,∅) mode de reconnaissance : pile vide A Σ = {a,b} q 0 Q = {q0,q1} q0 initial Γ = {A, Z} = {(q0,ε, .(q0,a, (q0,a, (q0,b, (q1,b, F = ∅ δ A accepte Z → ε a Z → A a A → A A Z → q0, ε) Z → q0, A) A → q0, A A) A → q1, ε) A → q1, ε) }. b A → ε q 1 b A → ε les mots du langage algébrique L∅(A) = {anbn,n≥0}. 8! Exemple B = (Q,Σ,Γ,δ,q0,Z,F) mode de reconnaissance : sur état final Σ = {a,b} Q = {q0,q1,q2} q0 initial Γ = {A, Z} δ = {(q0,ε, Z → q2, Z) . (q0,a, Z → q0, Z A) (q0,a, A → q0, A A) . (q0,b, A → q1, ε) . (q1,b, A → q1, ε) . (q1,ε, Z → q2, Z) }. F = {q2} B accepte Equivalence (reconnaissance sur état final) a Z → Z A a A → A A B q 0 b A → ε q 1 b A → ε ε Z → Z Z → Z ε q 2 9! Déterminisme A est Théorème un langage est reconnu par un automate à pile sur pile vide si et seulement si il est reconnu par un automate à pile à états finals. • sens direct : chaque état où la pile se vide, Z en étant retiré, donne lieu à une transition vers un état final inédit. • réciproquement : on fait en sorte que la pile se vide entièrement et pour la première fois, après chaque état final. 10! APN versus APD déterministe à 2 conditions : Première condition : • pour un état q donné • pour un symbole d’entrée σ donné • pour un sommet de pile γ donné il existe au plus une transition débutant par (q,σ,γ).. Seconde condition : • pour un état q donné • pour un sommet de pile γ donné • s’il existe une transition sur (q,ε,γ) elle est unique et pour toute lettre σ, il n’en existe pas sur (q,σ,γ). les deux modes de reconnaissance pour les automates à pile : reconnaissance par états finals et reconnaissance sur pile vide sont équivalents. Justification : L∅(A) = LF(B) = {anbn,n≥0}. Un automate à pile • Bref, dans une configuration donnée, on ne peut pas avoir le choix quant à la transition à appliquer ! 11! Théorème un langage est algébrique ssi il est reconnu par un automate à pile. Théorème tout langage algébrique n’est pas reconnu (admis) par un automate à pile déterministe. A méditer (cf. TD) : le langage { w=wR, w ∈ Σ+ } . n’est pas reconnu par un auto- mate à pile déterministe :-( 12! Langages algébriques déterministes Langages algébriques Grammaire algébrique → A.P.N. Algorithme Rappel : une grammaire algébrique G = (N,T,P,S) est sous forme normale de Greibach si toute production est de la forme • 1 L = L\{ε} langage engendré par G = (N,T,P,A) sous F.N.G. On construit A = (Q,Σ,Γ,δ,q0,Z,F) tel que: - Q = {q0} exceptionnellement - Σ = T - Γ = N ∪ T ∪ {Z} A → aα A ∈ N, a ∈ T, α ∈ (N∪T)* • Rappel : il existe un algorithme permettant de transformer toute grammaire algébrique propre et sans production vide en une grammaire sous F.N.G. • On présente ici l’algorithme de passage d’une grammaire algébrique sous F.N.G à un automate à pile non-déterministe. L’idée consiste à commencer par empiler l’axiome. Ensuite, à chaque symbole lu de la chaîne d’entrée, on remplace la partie gauche de la production concernée par le reste de la partie droite ... • - F = ∅ (reconnaissance sur pile vide) 2 posons δ ← ∅ pour chaque B → a α faire // avec B ∈ N, a ∈ T, α ∈ (N∪T)* δ ← δ ∪ { (q0, a, B → q0, αR) } 3 pour chaque a ∈ T faire δ ← δ ∪ { (q0, a, a → q0, 4 δ ← δ ∪ {( q0, Le langage reconnu par (N,T,P,S) avec {S} {a,b} {S → a 3 aa 3 b 3 bb 3 S → aSa3 bSb } G est bien sous F.N.G 3 1 A = (Q,Σ,Γ,δ,q0,Z,F) avec : Q = {q0}, Σ = T, Γ = N ∪ T ∪ {Z}, F = ∅ Exemple δ = { (q0, a, (q0, a, (q0, b, (q0, b, (q0, a, (q0, b, (q0, a, (q0, b, S S S S S S a b → → → → → → → → q 0, q 0, q 0, q 0, q 0, q 0, q 0, q 0, a) ε) b) a S) b S) ε) ε) } Le langage reconnu par A est bien : 2 Posons : δ ← ∅ L = L(G) = {w = wR, w ∈ Σ+} . 15! δ = { .(q0, ε, Z → q0, S) (q0, a, S → q0, ε) (q0, a, S → q0, a) (q0, b, S → q0, ε) (q0, b, S → q0, b) (q0, a, S → q0, a S) (q0, b, S → q0, b S) (q0, a, a → q0, ε) (q1, b, b → q0, ε) } ε) 4 δ ← δ ∪ { (q0,ε,Z → q0,S) reconnaissance sur pile vide A est bien L(G) = L. 14! Exemple = = = = ε)} ε, Z → q0, A )} 13! 0 G N T P Γ ∩ Σ ≠ ∅. ε Z → S a S → ε! A q0! a b b a b a b S S S S S a b → a → ε! → b → a S → b S → ε! → ε! L(A) = { w = wR, w ∈ Σ+} . 16! Exemple Lecture de a ε Z → S a S → ε! a S → a b S → ε! A q0! b S → b a S → a S b S → b S a a → ε! b b → ε! b a SS S Z a b a a b a b S a a S a b S b a a 17! a a b a