1 / 29

AUTÔMATO A PILHA

A 1. A 2. A 3. A 4. z. AUTÔMATO A PILHA. fita de entrada esquerda p/ direita,read only. x 1. x 2. x 3. x 4. x 5. x 6. x n. Q. pilha. push/pop. unidade de controle. Definição NPDA. autômato a pilha não-determinís-tico M=< Q, ,,,q 0 ,,F> Q ► estados

babu
Télécharger la présentation

AUTÔMATO A PILHA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. A1 A2 A3 A4 z AUTÔMATO A PILHA fita de entrada esquerda p/ direita,read only x1 x2 x3 x4 x5 x6 ... xn Q pilha push/pop unidade de controle

  2. DefiniçãoNPDA autômato a pilha não-determinís-ticoM=< Q,,,,q0,,F> Q ► estados  ► alfabeto da fita  ► alfabeto da pilha q0Q ► estado inicial z ► símbolo de início da pilha FQ ► estados finais  ►função de transição  : Q x ( U {} ) x   Q x *

  3. se ( (p,a,A),(q,B1B2. …Bk ) )   isto significa intuitivamente que quando a máquina está no estado p lendo o símbolo a (na fita de entrada) e A (no topo da pilha),ela tira A da pilha,coloca B1B2. …Bk na pilha (Bk primeiro e B1 por último),move a cabeça para a direita uma célula passando o símbolo a e entra no estado q.

  4. EXEMPLO: Considere o npda com Q={q0,q1,q2,q3),={a,b},={0,1}, z=0, F = {q3} e (q0,a,0)={(q1,10),(q3,)} (q0, ,0) = {(q3,)} (q1,a,1) = {(q1,11)} ((q1,b,1) = {(q2,)} (q2,b,1) = {(q2,)} (q2, ,0) = {(q3,)}

  5. Não são especificadas transições para todas as combinações possíveis de entradas e símbolos da pilha; • Uma transição não especificada vai para o conjunto vazio e representa uma configuração morta do npda; • Transições cruciais •  (q1,a,1) = {(q1,11)} adiciona 1 a pilha quando é lido um a ; •  (q2,b,1) = {(q2,)} remove 1 quando um b é encontrado.

  6. Estas duas etapas contam o número de a’s e compara este número com o número de b’s. • A unidade de controle fica no estado q1 até ser encontrado o primeiro b e aí entra no estado q2. Isto assegura que nenhum b precede o último a. • Após analisar as transições restantes, veremos que o npda terminará no estado finalq3 se e somente a cadeia de entrada está na linguagem L = {anbn | n 0}  {a}

  7. A tripla (q,w,u),onde q é o estado da unidade de controle, w é a parte não lida da cadeia, e u o conteúdo da pilha (com o símbolo mais a esquerda indicando o topo da pilha) é chamada uma descrição instantânea do autô-mato a pilha.

  8. Um movimento de uma descrição instantânea para outra será denotada pelo símbolo |— (q1,aw,bx)|—(q2 ,w,yx) • é possível se e somente se (q2,y)(q1,a,b) • |—*|—+|—m

  9. A Linguagem Aceita por um Autômato a Pilha • Existem duas definições alternati-vas para aceitação, por: pilha vazia ou estado final. • Para um pda M = <Q,,,,q0,z,F> a linguagem L(M) aceita por M por estado final é L(M)={w|(q0,w,z) |—* (p,,)pF e *}

  10. a linguagem L(M) aceita por M por pilha vazia é L(M)={w|(q0,w,z) |—* (p,,), qQ} Obs: Quando a aceitação é por pilha vazia, o conjunto de estados finais é irrelevante, e neste caso geralmente defi-nimos o conjunto de estados finais como o conjunto vazio.

  11. EXEMPLO. Considere o npda com Q={q}, ={[,]},  = {,[}, q0=q, z= e (i) (q,[,) = (q,[) (ii) (q,[,[) = (q,[[) (iii) (q,],[) = (q,) (iv) (q,, ) = (q,) • Transições (i) e (ii) dizem que toda vez que o próximo símbolo de entrada é [,o [ deve ser colocado no topo da pilha.

  12. Transição (iii) diz que quando o pró-ximo símbolo de entrada é ] com um [ no topo da pilha, removemos o [ e não colocamos mais nada na pilha. • Transição (iv) ocorre quando alcan-çamos o fim da cadeia de entrada e queremos retirar  da pilha e aceitar o padrão. • Dada a entrada [[[]][]][] a sequência de configurações do autômato até a aceitação da cadeia:

  13. (q, [[[]][]][],  ) conf. Inicial (q,[[]][]][], [ ) (i) (q,[]][]][], [[ ) (ii) (q,]][]][], [[[ ) (ii) (q,][]][], [[ ) (iii) (q, []][], [ ) (ii) (q,]][], [[ ) (ii) (q,][], [ ) (iii) (q,[],  ) (iii) (q,], [ ) (i) (q,  , ) (iii) (q,  ,  ) (iv)

  14. Obs: A transição (iv) poderia ter sido usada várias vezes anteriormente, por exemplo, no primeiro passo levaria a seguinte configuração (q,[[[]][]][] , ) e autômato pararia, com a pilha vazia mas sem ter lido toda a entrada!

  15. Autômatos à Pilha E Linguagens Livre de Contexto Autômatos à pilha para linguagens livre de contexto. • Mostrar que para toda linguagem livre de contexto existe um npda que a aceita. • A idéia subjacente é construir um npda que possa, em algum sentido, efetuar uma derivação mais a esquer-da de qualquer cadeia da linguagem.

  16. Para simplificar assumiremos que a linguagem é gerada por uma gramática na forma normal de Greibach. AaB1B2…Bk, k0 • Construir de G um npda equivalente M com um único estado que aceita a linguagem por pilha vazia. M = ({q},,N,,q,S, Φ)

  17. q é o único estado e é estado inicial  , os terminais de G, é o alfabeto de entrada de M N , os não-terminais de G, é o alfabeto da pilha de M  é a função de transição S é o símbolo inicial de G, e o símbo-lo inicial da pilha de M. Φ conjunto vazio de estados finais de M • Para cada produção A  aB1B2…Bk em P,  contém a transição ((q,a,A),(q,B1B2…Bk) )

  18. Exemplo: • Considere o conjunto de cadeias de parên-teses balanceadas [ ] e uma gramática G. • Abaixo temos as regras de produção de G ao lado da transição correspon-dente pela construção vista anteriormente: (i) S  [BS ((q,,S),(q,BS)) (ii) S  [B ((q,,S),(q,B)) (iii) S  [SB (q,,S),(q,S B)) (iv) S  [SBS (q,,S),(q,SBS)) (v) B  ] (q,,B),(q,))

  19. Considere a entrada x =    regra | forma sentencial | configuração S (q,      ,S) (iii)  S B (q,     ,SB) (iv)  SBSB (q,    ,SBSB) (ii)   BBSB (q,    ,BBSB) (v) BSB (q,   ,BSB) (v)    SB (q,  ,SB) (ii)     BB (q, ,BB) (v)       B (q, ,B) (v)        (q,,)

  20. Lema:Para qualquer z,yΣ*, γГ*, e AN, A *zγ por uma derivação a esquerda se e somente se (q,zy,A) * (q,y, γ). Teorema: L(M) = L(G). Prova: x  L(G)  S * x por uma derivação a esquerda (definição de L(G) )  (q,x,s) *(q, , ) (lema)  x  L(M) definição de L(M). q.e.d

  21. Gramáticas livre de contexto para autômatos a pilha. • A inversa do teorema acima também é verdadeira. • A construção é reverter o processo de construção de L(M) = L(G), de modo que a gramática simule os movimentos do pda. • Isto significa que o conteúdo da pilha deve estar refletido na parte de variá-veis na forma sentencial, enquanto a entrada processada é o prefixo termi-nal da forma sentencial.

  22. Para simplificar assumamos que o pda M satisfaz: 1. Tem único estado final qf no qual só entra sss a pilha estiver vazia. 2. Todas as transições devem ter a forma (q,a,A)={C1,C2,…,Cn}, onde: Ci=(p,) (a) ou Ci=(p,BC) (b)

  23. Estas restrições não são tão severas quanto parece. Mostre como, dado um pda qualquer, obter um satisfazendo 1 e 2 acima. • Na construção da gramática devemos ter uma forma sentencial que reflita o conteúdo da pilha. • Observe que a configuração de um pda também envolve um estado que deve ser lembrado.

  24. Logo as varáveis da gramática têm que ter a forma (qiAqj). • (qiAqj)*w sss o pda apaga (desem-pilha) A da pilha, indo de qi para qj enquanto lê a cadeia w. • se (qj,)(qi,a,A) (tipo 2a), então (qiAqj)a • se (qj,BC)(qi,a,A) (tipo 2b), então (qiAql)a(qjBqk)(qkBql) • onde qk eql varrem todo o Q. • como símbolo inicial faça: (q0zqf)

  25. Exemplo: seja o pda definido por: (q0,a,z)=(q0,Az) (q0,a,A)=(q0,A) (q0,b,A)=(q1,) (q1,,z)=(q2,) não satisfaz condição 2, mas ... (q0,a,A)=(q3,) (q3,,z)=(q3,Az)

  26. De (q0,a,A)=(q3,), (q0,b,A)=(q1,) e (q1,,z)=(q2,) geramos: (q0Aq3)  a (q0Aq1)  b (q1zq2)   De (q0,a,z)=(q0,Az) geramos: (q0zqi)a(q0Aq0)(q0zqi)| a(q0Aq1)(q1zqi)| a(q0Aq2)(q2zqi)| a(q0Aq3)(q3zqi) para i=0,1,2,3

  27. E de (q3,,z)=(q3,Az) geramos: (q3zqi)(q3Aq0)(q0zqi)| (q3Aq1)(q1zqi)| (q3Aq2)(q2zqi)| (q3Aq3)(q3zqi) para i=0,1,2,3 • o símbolo inicial é (q0zq2). • Vejamos como se comportam M e G em aab:

  28. Em M: (q0,aab,z) |— (q0,ab,Az) |— (q3,b,z) |— (q0,b,Az) |— (q1,,z) |— (q2,, ) • em G: (q0z q2)  a(q0Aq3)(q3zq2)  aa(q3zq2)  aa(q0Aq1)(q1zq2)  aab(q1zq2)  aab

  29. Teorema. Se L=L(M) para algum pda M. então L é uma linguagem livre de contexto.

More Related