autÔmato a pilha

29
AUTÔMATO A PILHA x 2 x 3 x 4 x 5 x 1 x 6 ... x n Q A 1 A 2 A 3 A 4 z push/pop pilh a fita de entrada esquerda p/ direita,read only unidade de controle

Upload: babu

Post on 14-Jan-2016

57 views

Category:

Documents


0 download

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

AUTÔMATO A PILHA

x2 x3 x4 x5x1 x6 ... xn

Q

A1

A2

A3

A4

z

push/poppilha

fita de entrada esquerda p/ direita,read only

unidade de controle

Definição NPDA

autômato a pilha não-determinís-tico M=< Q,,,,q0,,F>

Q ► estados ► alfabeto da fita ► alfabeto da pilhaq0Q ► estado inicialz ► símbolo de início da pilhaFQ ► estados finais ► função de transição : Q x ( U {} ) x Q x *

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.

EXEMPLO: Considere o npda comQ={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,)}

•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.

• 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 final q3 se e somente a cadeia de entrada está na linguagem

L = {anbn | n 0} {a}

•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.

• 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

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,,)pF e *}

a linguagem L(M) aceita por M por pilha vazia é

L(M)={w|(q0,w,z) |—* (p,,), qQ}

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.

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.

• 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:

(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)

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!

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.

• Para simplificar assumiremos que a linguagem é gerada por uma gramática na forma normal de Greibach.

AaB1B2…Bk, k0

• Construir de G um npda equivalente M com um único estado que aceita a linguagem por pilha vazia.

M = ({q},,N,,q,S, Φ)

q é o único estado e é estado inicial , os terminais de G, é o alfabeto de entrada de MN , os não-terminais de G, é o alfabeto da pilha de M é a função de transiçãoS é 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) )

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,))

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,,)

Lema:Para qualquer z,yΣ*, γГ*, e AN, 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

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.

• 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)

ouCi=(p,BC) (b)

• 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.

• 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 e ql varrem todo o Q.

• como símbolo inicial faça: (q0zqf)

• 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)

• 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

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:

• 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

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