Sunteți pe pagina 1din 13

Automate push-down (APD)

M = (Q, S, G, d, qo,Zo, F) Q alfabetul strilor; S alfabetul de intrare; G alfabetul memoriei stiv; qoQ stare iniial; ZoG simbolul de start al memoriei stiv; F Q mulimea strilor finale; d:Qx(S U {e})xGPart(QxG*) funcia de tranziie
are ca valori submulimi finite din QxG* (posibil multimea vida)
1

Reprezentare
enumerare (multimi, el. functiei de tranzitie) tabelara sub forma de graf

Reprezentare folosind enumerare


Exemplu: M=({q0,q1},{a,b},{A,Z}, d,q0,Z,{q0}) d: d(q0,a,Z) = {(q0,AZ)} d(q0,a,A) = {(q0,AA)} d(q0,b,A) = {(q1,e)} d(q1,b,A) = {(q1,e)} d(q0,e,Z) = {(q0,e)} d(q1,e,Z) = {(q0,e)} si F in celelalte cazuri
3

Reprezentare tabelara
Exemplu:

Configuratie
formal: (q,x,a) Q x S*x G* automatul se gsete n starea q, pe banda de intrare urmeaz s se citeasc (accepte) secvena x, iar n memoria stiv avem secvena a configuratie initiala (q0,w,Z0)
5

Tranzitii
tranziie direct (q,aw,Za) (p,w,ga) <=> d(q,a,Z)'(p,g) sau (q,aw,Za) (p,aw,ga) <=> d(q,e,Z)' (p,g)
unde p,q Q, aS, ZG, wS*, a,g din G*

(e-tranziie)

k + *

k tranziia (k tranziii directe) + tranziia * tranziia

~AF ~AF ~AF

Secventa acceptata de automat


dupa criteriul stivei vide Le(M) = {w| wS*, (qo,w,Zo) * (q,e,e), qQ}
(q,e,e) - configuraia final dup criteriul stivei vide

dupa criteriul starii finale Lf(M) ={w | wS*,(qo,w,Zo) *(q,e,g), qF, gG*}
(q,e,g), q F configuraie final dup criteriul strii finale

dupa criteriul starii finale si al stivei vide L(M) = {w| wS*, (qo,w,Zo) * (q,e,e), qF}
7

Le(M)={anbn| nN}
De ce? (justificare:) in q0 se accepta oricate simboluri a cu ramanere in q0 si adaugare cate un A in stiva adica: la fiecare citire de a adaug in stiva un A (1) sau se trece in starea q1 (dupa ce am citit cel putin un a, adica am A in stiva) obs.: se poate trece in q1 oricand, fara modificarea stivei (2) sau - se scoate Z din stiva (acest lucru se poate intampla numai inainte de citirea unui simb) => se accepta secventa vida in q1 cand in varful stivei este un A, se citeste un b adica: fiecare citire de b scoate un A din stiva (3) sau: daca in varful stivei este un Z, acesta se scoate (goleste stiva) din (1) , (2) , (3) => nr(a) = nr(b) (4) q0 citeste a (oricati) (5) q1 citeste numai b; nu se poate trece inapoi in q0 din (2) , (4) , (5) => simb. a citite inaintea simb b

.
Pornind de la: un APD care accepta un limbaj dupa criteriul stivei vide construiti un APD echivalent care obtine acelasi limbaj dupa criteriul starii finale

Teoreme de echivalenta
Teorem. Fie automatul push-down M. Exist ntotdeauna un automat push-down M' astfel nct Le(M') = Lf(M); si reciproc. Teorem. Oricare ar fi G o gramatica independenta de context, exist un automat push-down M astfel nct Le(M) = L(G); si reciproc.
10

G => M astfel incat L(G)=Le(M)


Fie: G = (N, S, P, S) construim: M = ({q}, S, N U S, d, q, S, F ) 1. dac (Aa) P atunci (q,a )d (q,e,A); 2. d (q,a,a ) ={(q,e)} " aS ; 3. d (.,.,.) = F n celelalte cazuri.

11

Determinism
M = (Q, S, G, d, qo, Zo, F) este determinist dac: "ZG "qQ , "aS 1) |d(q,e,Z)| = 0 si |d(q,a,Z)| <=1 2) |d(q,e,Z)| = 1 si |d(q,a,Z)| = 0 in caz contrar, automatul nu este determinist multimea limbajelor acceptate de APD nedeterministe este strict mai larga decat multimea limbajelor acceptate de APD deterministe
12

PP ca: multimea limbajelor acceptate de APD nedeterministe este aceeasi cu multimea limbajelor acceptate de APD deterministe => " APD nedeterminist APD determ. echivalent
dem. se bazeaza pe aceste l.i.c. Fie urmatoarele 2 l.i.c. L1={an bn bn | n*} U {an bn | n*} S aSbb | abb S aSb| ab

L2={an cn cn | n*} U {an cn | n*}


S aScc | acc S aSc| ac
13

=> 2 APD deterministe care accepta L1 si L2 (resp.)

S-ar putea să vă placă și