Você está na página 1de 25

CAPTULO 1 AUTOMATOS DE PILHA E LINGUAGENS LIVRES DE CONTEXTO

As Linguagens Regulares foram caracterizadas como linguagens geradas por gramticas regulares e aceitas por autmatos finitos. Agora, vamos apresentar uma classe de mquinas, os autmatos de pilha, que aceitam as linguagens livres de contexto. Um autmato de pilha uma mquina de estado finito ampliada com uma memria externa. A adio de uma pilha a uma mquina de estado finito, prov o autmato de pilha da capacidade de administrar uma memria do tipo first-in , last-out. 1.1 AUTOMATO DE PILHA Foi demonstrado que a linguagem L= {anbn | n 0} no aceita por um autmato finito. A restrio de que o autmato tenha um nmero finito de estados, no permite que o mesmo possa memorizar um nmero qualquer de as da entrada. Para reconhecer uma linguagem L, uma mquina precisa ter a habilidade de recordar o processamento de qualquer nmero finito de as. Para tanto, um novo tipo de autmato construdo, dotando a funo de transio deste da capacidade de utilizar uma memria no limitada. Assim, uma pilha adicionada ao autmato finito, para construir uma nova mquina, o autmato de pilha (PDA). As operaes de pilha somente modifica o topo da pilha. O operao push coloca um elemento no topo da pilha e a operao pop remove o elemento do topo da pilha. Definio 1.1.1 Um Autmato de Pilha uma sxtupla M = (Q, , , , q0 , F), onde Q um conjunto de estados, um conjunto finito de smbolos, chamado alfabeto de entrada, um conjunto finito de smbolos, chamado alfabeto de pilha, q0 o estado inicial, F Q o conjunto de estados finais e uma funo de transio de Q x ({ }) x ({ }) em Q x ({ }). Um PAD tem dois alfabetos: um alfabeto de entrada , usado para representar as entradas do autmato e um alfabeto de pilha , cujos elementos so armazenados na pilha. Os smbolos de so representados por letras maisculas, enquanto os smbolos de , por letras minsculas. A pilha ser representada por uma palavra de , sendo o elemento mais a esquerda aquele que se encontra no topo da pilha. Letras gregas representam

palavras do alfabeto de pilha. A notao A representa uma pilha que tem o elemento A em seu topo. A pilha vazia indicada por . Um PAD consulta o estado corrente, um smbolo de entrada e o smbolo no topo da pilha para ento determinar a transio a ser efetuada. A funo de transio lista todas as possveis transies para um dado estado, smbolo de entrada e smbolo no topo da pilha. O valor da funo de transio (qi , a , A) = {[qj ,B] , [qk , C]} indica que duas transies so possveis quando o autmato est no estado qi e processa o smbolo de entrada a, tendo A no topo da pilha. A transio [qj, B] (qi, a, A)
novo estado smbolo atual na pilha

novo smbolo no topo da pilha

smbolo atual na entrada

estado atual

conduz a mquina aos seguintes procedimentos: i) mudar do estado qi para qj ii) processar o smbolo a (avana o cabeote de leitura) iii) remover A do topo da pilha (operao pop) iv) colocar B no topo da pilha O domino da funo de transio permite como smbolo de entrada e como smbolo de topo da pilha. Um como argumento da funo de transio especifica que o valor da componente no deve ser consultado ou modificado pela transio. A aplicabilidade da transio completamente determinada pelas posies que no contm lambada. Se a posio do smbolo de entrada contm , a transio no processa o smbolo de entrada. As seguintes transies produzem as aes indicadas: i) [qi, ] (qi, , A) : pop A, sem processar a entrada ii) [qi, A] (qi, , ) : push A na pilha, sem alterar o estado ou a entrada iii)[qi, ] (qj, a, ) : esta transio torna o PDA semelhante a um autmato

Uma configurao de um PDA representada pela tripla [ qi , w, ], onde qi o estado da mquina, w a entrada no processada e o contedo da pilha. A notao [qi, w, ] [qj, v, ], indica que a configurao [ qj, v, ] pode ser M obtida de [qi, w, ] por uma simples transio. Como j indicado, representa M o resultado de uma seqncia de zero ou mais transies. A computao de um PDA uma seqncia de transies comeando com a mquina no estado inicial e a pilha vazia. Exemplo 1.1.1 O PDA M abaixo reconhece a linguagem {an bn n 0} M: Q = {q0, q1} = {a, b} = {A } F = {q0, q1} : (q0, a, ) = {[q0, A]} (q0, b, A) = {[q1, ]} (q1, b, A) = {[q1, ]}

O processamento da entrada aaabbb o seguinte: [q0, aaabbb, ] [q0, aabbb, A] [q0, abbb, AA] [q0, bbb, AAA] [q1, bb, AA] [q1, b, A] [q1, , ]

Dizemos que uma computao teve sucesso quando ela aceita a palavra de entrada. Quando a computao processa a palavra por inteiro e termina em uma configurao de no aceitao, ns dizemos que ela no teve sucesso. Devido a natureza no determinstica da funo de transio pode existir computaes que no processam a palavra por inteiro. Tais computaes so tambm consideradas sem sucesso. Definio 1.1.2

Seja M = (Q, , , , q0 , F) um PDA. Uma palavra w * aceita por M se existe uma computao [q0, w, ]

[qi, , ]

onde qiF. A linguagem de M, denotado por L(M), o conjunto de palavras aceitas por M. Exemplo 1.1.2 O PDA M abaixo aceita a linguagem {wcwt w{a, b}*} M: Q = {q0 , q1} = {a , b , c} = {A , B} F = {q1} : (q0 , a , ) = {[q0 , A]} (q0 , b , ) = {[q0 , B]} (q0 , c , ) = {[q1 , ]} (q1 , a , A) = {[q1 , ]} (q1 , b , B) = {[q1 , ]} O processamento da palavra z = abbcbba o seguinte: [q0 , abbcbba , ] [q0 , bbcbba , A] [q0 , bcbba , BA] [q0 , cbba , BBA] [q1 , bba , BBA] [q1 , ba , BA] [q1 , a , A] [q1 , , ] Um PDA dito ser determinstico se existe, no mximo, uma transio para cada combinao de estado, smbolo de entrada e smbolo no topo da pilha. Duas transies [qj, B] (qi, u, A) e [qk, C] (qi, v, B) so ditas compatveis, se qualquer uma das seguintes condies satisfeita: i) ii) iii) iv) u=v e A=B u = v e A = ou B = A = B e u = ou B = u = ou v = e A = ou B =

Transies compatveis podem ser aplicadas s mesmas configuraes de mquina. Um PAD determinstico se no contm transies compatveis distintas. Os PDAs dos exemplos anteriores so compatveis.

Exemplo 1.1.3 A linguagem L = {an n 0} {anbn n 0} contm palavras somente com as e palavras com igual nmero de as e bs. No PDA a seguir apresentado, que reconhece L, a pilha usada para recordar o nmero de as processados at que um b seja encontrado e a computao seja concluda. Q = {q0, q1, q2} = {a, b} = {A } F = {q1, q2} (q0, a, ) = {[q0, A]} (q0, , ) = {[q2, ]} (q0, b, A) = {[q1, ]} (q1, b, A) = {[q1, ]} (q2, , A) = {[q2, ]} Observe que existem duas transies que podem ser aplicadas quando o autmato se encontra no estado q0 e a cabea de leitura aponta para o smbolo a. Uma palavra de forma anbn, com n > 0, aceita por uma computao que permanece nos estados q0 e q1. Se uma transio para o estado q2 ocorrer aps o processamento do ltimo a da subpalavra an, a pilha esvaziada e a entrada aceita. Caso o autmato passe para o estado q2 em situao diferente desta ltima, a computao no ter sucesso. Exemplo 1.1.4 O PAD M, abaixo especificado, aceita os palindromos sobre o alfabeto {a, b} de comprimento par, isto , L(M) = {wwt w {a, b}* e o comprimento de w par} M: Q = {q0, q1} = {a, b } = {A, B} F = {q1} (q1, b, B) = {[q1, ]} (q0, a, ) = {[q0, A]} (q0, b, ) = {[q0, B]} (q0, , ) = {[q1, ]} (q1, a, A) = {[q1, ]}

Uma computao de M concluda com sucesso se M permanecer em q0 enquanto processa w por inteiro, passando para o estado q1 ao processar o primeiro smbolo de wt. Caso o estado q1 no seja alcanado imediatamente aps o processamento do ltimo smbolo de w, a computao no ter sucesso.

Diferentemente do exemplo 1.1.2, neste exemplo no existe uma marca que indique o meio da palavra wwt. Mesmo assim, devido ao no determinismo de M, possvel a mquina reconhecer wwt.

1.2 VARIAES SOBRE PDAs Autmatos de Pilha so freqentemente definidos de um modo ligeiramente diferente daquele da definio 1.1.1. Nesta seo ns vamos examinar vrias alteraes em nossa definio de autmatos de pilha, que, no entanto, preservam o conjunto de palavras aceitas pelo PDA. Junto com uma mudana de estado, uma transio de um PDA provoca trs aes: adiciona ou retira um elemento da pilha e processa um smbolo de entrada. Um PDA chamado de atmico se cada uma de suas transies apresenta apenas uma dessas aes. As transies de um PDA atmico tem a seguinte forma: [qj , ] (qi , a, ) [qj , ] (qi , , A) [qj , A] (qi , , ) Teorema 1.2.1 Se M um PDA. Existe um PDA atmico M tal que L(M) = L(M) processo o smbolo a pop A push A

Prova: Para construir M, as transies no atmicas de M so substitudas por uma seqncia de transies atmicas. Seja [ qj, B] (qi, a, A) uma transio de M. A transio atmica equivalente requer dois novos estados P1 e P2 e as seguintes transies: [p1, ] (qi, a, ) (p1, ,A) = {[p2, ]} (p2, , ) = {[qi, B]} De modo semelhante, uma transio que muda o estado e realiza duas aes adicionais pode ser substitudo por duas transies atmicas. Removendo-se todas as transies no atmica produz um PDA atmico.

Uma transio estendida uma operao sobre um PDA que insere na pilha uma palavra * cujo comprimento maior que 1 ( > 1) no lugar de um simples elemento de . Um PDA que contem transies estendidas chamado de PDA estendido. A transio [qj, BCD] (qi, , A) insere BCD na pilha no lugar de A. Teorema 1.2.2 Seja M um PDA estendido. Ento, existe um PDA M' tal que L(M') = L(M). Prova: Para transformar M em M' basta substituir cada uma das transies estendidas de M por um conjunto de transies simples. Assim, a transio [qj, Ak ... A2A1] (qi, , A) pode ser substitudo pelo seguinte conjunto de k transies: [ p1, A1 ] (qi, , A) (p1, , ) = { [ p2, A2 ] } (p2, , ) = { [ p3, A3 ] } . . (pk-1, , ) = { [ qj, A1 ] } Exemplo 1.2.1 Seja L = {anb2nn 1}. Um PDA, um PDA atmico e um PDA estendido so construdos para aceitar L. Para todos eles = {a, b}, = {A}, F = {q1} e q0 so os mesmos. PDA Q = {q0, q1, q2} (q0, a, ) = { [q2, A] } (q2, , ) = { [q0, A] } (q0, b, A) = { [q1, ] } (q1, b, A) = { [q1, ] } PDA atmico Q = {q0, q1, q2, q3, q4} (q0, a, ) = { [q3, ] } (q3, , ) = { [q2, A] } (q2, , ) = { [q0, A] } (q0, b, ) = { [q4, ] } (q4, , A) = { [q1, ] } (q1, b, ) = { [q4, ] } PDA estendido Q = {q0, q1} (q0, a, ) = { [q0, AA] } (q0, b, A) = { [q1, ] } (q1, b, A) = { [q1, ] }

De acordo com a definio 1.1.2, uma palavra w aceita por um PDA se existe uma computao que processa a palavra por inteiro, deixando o PDA em um estado final e a pilha vazia. Este tipo de aceitao referido como aceitao por estado final e pilha vazia. Vamos relaxar esse conceito, para permitir a definio de aceitao, em termos apenas de estado final ou de pilha vazia. Tais definies, no entanto, no alteram o conjunto das linguagens reconhecidas pelo autmatos de pilha.
7

Definio 1.2.1 i) Uma palavra w aceita por estado final se existe uma computao [q0, w, ] [qi, , ], onde qi F e *. ii) Uma palavra w aceita por pilha vazia se existe uma computao [q0, w, ] [qi, , ], sem que nenhuma restrio seja feita sobre qi. Uma linguagem aceita por estado final ser denotado por LF, enquanto uma aceita por pilha vazia ser denotada por LV. Lema 1.2.3 Seja L uma linguagem aceita por estado final pelo PDA M = (Q, , , , q0, F). Ento, existe um PDA que aceita L por estado final e pilha vazia. Prova: Seja o PDA M = (Q {qf}, , , , q0, {qf}), construdo a partir de M. O estado final de M o novo estado qf e as transies de M so aquelas de M acrescidas de: (qi, , ) = { [qf, ] }, para todo qi F (qf, , A) = { [qf, ] }, para todo A . As palavras aceitas por M so exatamente aquelas cujas computaes, a partir de q0, conduzem M a um estado final. A partir deste as duas transies acrescidas, conduzem M para o estado qf para em seguida esvaziar a pilha. Assim, M aceita as mesmas palavras que M. Observe que [q0, w, ] * [qi, , ]
M

uma computao de M que termina com a aceitao de w por estado final (qiF). Assim, usando as transies de acrescidas, temos: [q0, w, ] * [qi, , ] * [qf, , ] * [qf, , ]
M M M

Lema 1.2.4 Seja L uma linguagem aceita por um PDA M = (Q, , , , q0, F) por pilha vazia. Ento, existe um PDA M que aceita L por estado final e pilha vazia. Prova:

Defina o PDA M = (Q, , , , q0, Q), idntico a M, exceto pelo fato de que todos os estados de M so finais. Assim, como toda computao de M termina com pilha vazia, sendo tambem uma computaao de M, e todos os estados de M so finais, LE(M) = L(M). Os lemas 1.2.3 e 1.2.4 mostram que toda linguagem aceita por estado final ou pilha vazia tambm aceita por estado final e pilha vazia. Claramente, qualquer linguagem aceita por estado final e pilha vazia tambm aceita por um automato de pilha que utiliza uma forma de aceitao menos restritiva, isto , somente por estado final ou somente por pilha vazia . Esta observao conduzem aos seguintes teoremas: Teorema 1.2.5 As seguintes trs condies so equivalentes i) ii) iii) A linguagem L aceita por algum PDA Existe um PDA M1 com LF(M1) = L Existe um PDA M2 com LE(M2) = L

1.3 AUTOMATOS DE PILHA E LINGUAGENS LIVRES DE CONTEXTO A caracterizao de autmatos pilha como reconhecedores de linguagens livre de contexto fica estabelecida mediante a explicitao de uma correspondncia entre as computaes de um PDA e as derivaes de uma gramtica livre de contexto. Inicialmente ns vamos provar que toda linguagem livre de contexto aceita por um PDA estendido. Para isto, as regras da gramtica sero usadas para gerar as transies do PDA correspondente. Em seguida ns mostraremos que as linguagens aceitas pelos PDAs so precisamente quelas livre de contexto. Vale lembrar que: a) Uma gramtica livre de contexto uma quadrupla G=( ,V,P,S) onde o alfabeto de G, V um conjunto finito de variveis, S um elemento destinguido de V e P o conjunto finito de regras de produo, da forma A w, com AV e w(V )* Exemplo 1.3.1 A gramtica G =( {a , b}, {S,A}, {S AbAbA, A aA, A },S} ) livre de contexto. Para comprovar isso, basta verificar a forma de suas produes. b) Se L uma linguagem livre de contexto, L pode ter a sua gramtica expressa na Forma Normal de Greibach. Nesta forma, as produes da gramtica so apresentas do seguinte trs modos,
9

i) A aA1A2... An , ii) A a , iii) S , com a e Ak V - {S}, para k = 1, 2...., n. Exemplo 1.3.2 A seguinte gramtica livre de contexto G, que gera linguagem L={anbnn>0}, est na Forma Normal de Greibach. G: S aABaB A aABaB B b

A partir da gramtica livre de contexto expressa na Forma Normal de Greibach, fcil se construir um PDA que aceite as palavras geradas pela gramtica. Tal PDA muito simples e tem apenas dois estados: o estado inicial q0 e o estado final q1. Uma regra da forma S aA1A2....An gera uma transio do autmato que processa o smbolo a, coloca A1A2....An no topo da pilha e muda para o estado q1. As demais transies usam o smbolo de entrada e o smbolo do topo da pilha para determinar a transio a ser efetuada. Para a gramtica G livre de contexto do exemplo anterior, o PDA estendido M=(Q, , , , q0, F), que reconhece as palavras geradas por G o seguinte: M: Q = {q0,q1} ={a,b} ={A,B} F = {q1} : (q0,a, ) = { [q1, AB], [q1 , B] } (q1,a, A) = { [q1, AB], [q1 , B] } (q1,b, B) = { [q1, ] }

A seguir, apresentamos a gerao da palavra w = aaabbb pela gramtica G e o reconhecimento da mesma palavra pelo autmato de pilha estendido : Gerao de w S aAB aaABB aaaBBB aaabBB aaabbB aaabbb Processamento de w [ q0, aaabbb, ] [q1, aabbb, AB] [q1, abbb, ABB] [q1, bbb, BBB] [q1, bb, BB] [q1,b, B] [q1, , ]

10

Observe que uma derivao em G consiste de sentenas formadas de um prefixo de terminais seguido de um sufixo de no terminais, isto , variveis. J o processamento de um smbolo de entrada por M, corresponde a sua gerao na derivao. A pilha do PDA contm as variveis da sentena derivada.

Teorema 1.3.1 Seja L uma linguagem livre de contexto. Ento existe um PDA que aceita L. Prova Seja G = (V, , P, S) uma gramtica livre de contexto na Forma Normal de Greibach, que gera a linguagem L. Defina um PDA M = (Q, , , , q0, F) com segue: Q = {q0, q1} = = V - {S} F = {q1} : (q0,a, ) = { [q1,w], S aw P } (q1,a, A) = { [q1,w], A aw P e A V {S} } (q0,, ) = { [q1, ] } , se S P Primeiro vamos mostrar que L L(M). Depois mostraremos que L(M) L. a) L L (M Seja S uw uma derivao com u + e w V*. Vamos provar que existe uma computao em M, tal que: [ q0, u, ]
* *

[ q1, , w ]

Esta prova feita por induo sobre o tamanho da derivao e utiliza a correspondncia existente entre as derivaes em G e as computaes em M.
1

Base: Para uma derivao de tamanho um, S aw, a transio gerada pela produo A aw mostra que [ q0, a, ]
1

[ q1, , w ] uma computao de M.

Hiptese de Induo: Suponha que toda forma sentencial uw, gerada por * S uw, existe uma computao em M, tal que
n

11
8 8

[ q0, u , ]

[ q1, , w ]. u = va + e w V*. Esta

Induo: Seja S uw uma derivao, com derivao pode ser escrita como
n

S vAw2 uw, onde w = w1w2 e A aw1 uma regra em P. Pela hiptese de induo e pela transio de M da forma [q1, w1] [ q1, a, A ], a seguinte computao produzida: [ q0, va, ] [ q1, a, Aw2 ]
*

[ q1, , w1 w2 ].

Para toda palavra uL, u1, existe uma computao em M que a aceita u e tal * computao corresponde a derivao S u. No caso de L, S uma produo de G e a computao [ q0, , , ] [ q1, , ]. b) L(M) L. Isto feito mostrando-se que para toda computao [ q0, , u, ]
* *

[ q1, , w ],

existe uma derivao correspondente S uw em G. A prova feita por induo e fica como exerccio.

Para completar a caracterizao de que as linguagens livres de contexto so precisamente aquelas aceitas pelos autmatos de pilha , ns precisamos mostrar que toda a linguagem aceita por um PDA livre de contexto. Isto feito construindo-se as regras da gramtica a partir da transies do PDA, do seguinte modo: Seja M = (Q, , , , q0, F) um PDA dado. Construa o PDA estendido M' com a funo de transio ' igual a funo acrescida das seguintes duas transies: i) ' (qi, u, A) = { [qj, A] A } , sempre que [qj, ] (qi, u, ) ii) ' (qi, u, A) = { [qj, BA] A } , sempre que [qj, B] (qi, u, ) A interpretao para estas transies que uma transio de M que no remove um elemento da pilha pode ser considerada como o resultado de uma transio que inicialmente remove o smbolo do topo da pilha e em seguida, uma outra transio, reinsere este smbolo no topo da pilha. Qualquer palavra aceita por uma computao que use uma das novas transies pode, tambm, ser obtida pela aplicao da transio original. Ento, L(M) = L(M).
12

Agora, construa a gramtica G = (V, , P, S), a partir das transies de M', onde o mesmo de M V composto do smbolo S e de smbolos da forma <qi,A,qj>, onde qi e qj so estados de M' e A { }.

A varivel <qi,A,qj> representa uma computao que comea no estado qi, termina em qj e remove o smbolo A da pilha. O conjunto P das regras de G construdo do seguinte modo: 1. S <q0, , qj> para cada qj F 2. Cada transio [qj, B] (qi, x, A), onde A e B { }, gera o conjunto de regras { <qi, A, qk> x<qj, B, qk> qk Q } 3. Cada transio [qj, BA] (qi, x, A), onde A gera o conjunto de regras { <qi, A, qk> x <qj, B, qn> <qn, A qk> qk, qn Q } 4. Para cada estado qk Q <qk, , qk> Uma derivao comea com uma regra do tipo 1, cujo lado direito representa uma computao que comea no estado q0 , termina num estado final e a pilha est vazia, isto , uma computao de sucesso em M'. As regras do tipo 2 e 3 traam as aes da mquina. As regras tipo 3 correspondem s transies estendidas de M'. Em uma computao, essas transies provocam a reduo do tamanho da pilha. O efeito da regra correspondente introduzir uma varivel nova na derivao. As regras do tipo 4 so usadas para terminar as derivaes. Assim, as regras <qk, , qk> representam a computao que parte do estado qk para ele mesmo, sem altera o contedo da pilha, isto , uma computao nula. Exemplo 1.3.1 Aplique a construo descrita para obter a gramtica G que gera a linguagem aceita pelo seguinte PDA M: M: Q = {q0, q1} = {a, b, c} = {A}
13

F = {q1} (q0, a, ) = {[q0, A]} (q0, c, ) = {[q1, ]} (q1, b, A) = {[q1, ]}

Soluo Construa o PDA estendido M, com todos os elementos iguais aos de M, exceto as transies que so formados por aquelas de M ( ) acrescidas de (q0, c, A) = {[q1, A]} (q0, a, A) = {[q0, AA]} As regras de G so dadas a seguir, devidamente precedidas das transies que lhe deram origem. Transio Regra da Gramtica S <q0, , q1> (q0, a, ) = {[q0, A]} (q0, a, A) = {[q0, AA]} <q0, , q1> a <q0, A, q0> <q0, , q1> a <q0, A, q1> <q0, A, q0> a <q0, A, q0> <q0, A, q0> <q0, A, q1> a <q0, A, q0> <q0, A, q1> <q0, A, q0> a <q0, A, q1> <q1, A, q0> <q0, A, q1> a <q0, A, q1> <q1, A, q1> <q0, , q0> c <q1, , q0> <q0, , q1> c <q1, , q1> <q0, A, q0> c <q1, , q0> <q0, A, q1> c <q1, , q1> <q1, A, q0> b <q1, , q0> <q1, A, q1> b <q1, , q1> <q0, , q0> <q1, , q1> A relao entre as computaes do PDA do exemplo 1.3.1 e as derivaes na gramtica G obtida a partir daquele, para a palavra w = aacbd, apresentada a seguir.
14

(q0, c, ) = {[q1, ]} (q0, c, A) = {[q1, A]} (q1, b, A) = {[q1, ]}

[q0, aacbb, ]

[q0, acbb, A] [q0, cbb, AA] [q1, bb, AA] [q1, b, A] [q1, , ]

S <q0, , q1> a<q0, , q1> aa<q0, A, q1> <q1, A, q1> aac<q1, A, q1> <q1, A, q1> aacb<q1, , q1> <q1, A, q1> aacb<q1, A, q1> aacbb<q1, , q1> aacbb

Observe que a derivao de w comea coma aplicao da regra S. Os passos seguintes correspondem ao processamento de um smbolo de entrada M. A primeira componente da varivel mais a esquerda contm o estado da computao. J a terceira componente da varivel mais a direita contm o estado final no qual a computao termina. A pilha pode ser recuperada a partir da segunda componente da varivel. A varivel <q0, , q1>, obtida pela aplicao da regra S, indica que a computao que leva do estado q0 para o estado q1 no requer nenhuma alterao da pilha. O resultado da aplicao da regra subsequente, sinaliza a necessidade de uma computao que de q0 para q1 que remove A do topo da pilha. A aplicao da quarta regra demonstra a necessidade de se aumentar as transies de M quando contm transies que no remove um smbolo da pilha. A aplicao da regra <q0, A, q1> c <q1, , q1> representa a computao que processa o smbolo c sem remover o smbolo A do topo da pilha. O teorema seguinte, para o qual no apresentaremos a prova, estabelece a correspondncia entre PDAs e LLCs, isto , Autmatos de Pilha e Linguagens Livres de Contexto. Teorema 1.3.2 Seja M um PDA. Ento existe uma gramtica L(M)=L(G). livre de contexto G, tal que

1.4 O LEMA DO BOMBEAMENTO PARA LINGUAGENS LIVRE DE CONTEXTO Nesta seo vamos admitir que as gramticas livres de contexto se encontrem Na Forma Normal de Chomsky. Desse modo, a derivao de uma palavra em tais gramticas pode ser representada por uma rvore binria. Lema 1.4.1
15

Seja G uma gramtica livre de contexto, expressa no forma normal de Chomsky, * Aw uma derivao de w * e T a rvore de derivao de w. Se a profundidade de T n, ento w 2n-1 Prova feita por induo na profundidade da rvore de derivao. Base: Uma rvore de derivao com profundidade 1 que representa a derivao de uma palavra de uma gramtica G, uma vez que G esta na Forma Normal de Chomsky, apresenta uma das seguintes formas:

Em ambos os casos o tamanho da palavra derivada, ou a, menor ou igual a 1, isto , 20 = 21-1. Hiptese Indutiva: Suponha que toda palavra w derivada em G e rvore de derivao de profundidade igual ou menor a n, vale que w2n-1 Induo: Seja Aw uma derivao, cuja rvore de derivao tem profundidade * * n+1. A derivao de w pode ser escrita como A BC w, onde B u, * * Cv e w=uv. A rvore de derivao * * de A w construda de TB e TC, as rvores de derivao de Bu e Cv.
*

As rvores de derivao TB e TC tm profundidade menor ou igual a n. Assim, por hiptese de induo, u2n-1 e v2n-1. Desse modo, w=uv=u+v 2n-1+2n-1 = 2.2n-1 2.2n-1 = 2n 2n
16

Corolrio 1.4.2 Seja G = (V, , P, S) uma gramtica livre de contexto, na forma normal de * Chomsky e Sw a derivao de wL(G). Se w2n, ento a rvore de derivao de w tem profundidade no mximo n+1. Prova : Seja G=(V, , P, S) uma gramtica na Forma Normal de Chomsky que gera L e seja n=card(v). Ns vamos mostrar que todas as palavras em L com tamanho maior ou igual a 2n podem ser decomposta de modo a satisfazer as condies do * lema do Bombeamento. Seja zL(G) uma palavra e Sz uma derivao de z em G. Pelo corolrio, existe uma rota de tamanho, no mnimo, n+1=card(v)+1 na rvore de derivao. Ento, essa rota consiste de n+2 ns, com somente um deles sendo um smbolo terminal. Isso nos garante que deve existir alguma varivel A que deve ocorrer duas vezes na rota. A rvore de derivao pode ser dividida em trs subrvores, como segue

A derivao de z consiste das subderivaes 1. 2. 3. 4. 5. S r1Ar2 * r u *1 A vAx * Aw r2y


*

A subderivao 3 pode ser obtida ou substituda por um certo nmero de vezes antes da aplicao da subderivao 4. Assim, a derivao resultante gera as palavras uviwxiyL(G). O lema do bombeamento estabelece uma propriedade de periodicidade para palavras de uma linguagem livre de contexto. Derivaes recursivas em uma gramtica livre de contexto tm a forma A uAv. rvores de derivao so
17

usadas para estabelecer condies que garantem a presena de subderivaes recursivas em uma derivao suficientemente longa. Definio 1.4.1 Uma gramtica livre de contexto G=(V, , P, S) esta na Forma Normal de Chomsky se cada regra da forma i) ABC ii) Aa iii) S, onde B, C V-{S} Embora no seja aqui demonstrado, importante salientar que existe um algoritmo para construir uma gramtica M = (V, , P, S) na Forma Normal de Chomsky, a partir de uma gramtica livre de contexto G = (V, , P, S).

Teorema 1.4.3 (Lema do bombeamento para LLC) Seja L uma linguagem livre de contexto. Existe um nmero k, dependendo de L, tal que qualquer palavra z L, como z>k, pode ser escrita como z = uvwxy, onde i) ii) iii) vwx K v+x > 0 uviwxiy L, para i 0

Exemplo 1.4.1 A linguagem L = { aibici i 0 } no livre de contexto. Prova Suponha que L livre de contexto. Pelo lema do bombeamento, existe um nmero k tal que, para toda palavra z L, com z> k, z pode ser decomposta em z = uvwxz, satisfazendo as seguintes condies: i) ii) iii) vwx k v+x > 0 uviwxiy L, para i 0

18

Fazendo i = k, temos z = a kbkck L, com z = 3k decompor z em uvwxy, satisfazendo i, ii e iii.

> k. Assim, podemos

Vamos considerar as possibilidades de formao de v e x, considerando que vwxk, o que claramente determina ser vwx composto de um mesmo tipo de smbolo ou de dois tipos diferentes de smbolos e nunca de trs tipos diferentes de smbolos. a) vwx subpalavra de ak, bk ou ck Nesse caso, x ou v diferente de e formado de apenas um tipo de smbolo, o bombeamento de um deles ou dos dois, aumenta o nmero do(s) smbolo(s) bombeado(s). Desse modo a igualdade entre o numero de as, bs e cs no ser preservada. Portanto, uviwxiy L. b) vwx subpalavra de akbk ou bkck, tendo, obrigatoriamente, dois smbolos diferentes. Aqui, se qualquer um de v ou x contiver dois smbolos diferentes, ao bombelos teremos b antecedendo a ou c antecedendo b. De qualquer modo no ser preservada a condio de que a precede b, que precede c. Portanto, uviwxiy L. Exemplo 1.4.2 A linguagem L = { wa* w primo } no livre de contexto. Suponha que L livre de contexto. Ento, pelo lema do bombeamento, existe um k tal que para qualquer palavra z L, z k, z pode ser decomposta em uvwxy, onde iv) v) vi) vwx k v+x > 0 uviwxiy L, para i 0

Seja n um primo maior que k. Como a n L e a> k, an pode ser decomposta em uvwxy, tal que uviwxiy satisfaz o lema do bombeamento. Seja m = u+w+y. Comuvwxy = n, temos que v+x = n m. O comprimento de uviwxiy = u+ i.v+w+ i.x+y = m + i (n m) = u+w+y+ i.(v+x) De um modo particular, fazendo i = m, temos uvmwxmy = m + m(n - m) = m (1 + (n - m)), que divisvel por m, e portanto no primo. Assim, uviwxiy L. Portanto, L no livre de contexto.
19

1.5 PROPRIEDADES DOFECHO PARA LINGUAGENS LIVRES DE CONTEXTO

A flexibilidade das regras das gramticas livres de contexto usada para estabelecer propriedades de fecho sobre o conjunto das linguagens livres de contexto. Operaes que preservam as linguagens livres de contexto so ferramentas que podem ser usadas para se obter outras linguagens livres de contexto. Essas operaes, combinadas com o Lema do Bombeamento podem ser usadas para mostrar que existem certas linguagens que no so Livres de Contexto. Vamos apresentar a seguir alguns resultados sobre Linguagens Livres de Contexto sem no entanto entrarmos nos detalhes de suas provas. Teorema 1.5.1 O conjunto das Linguagens Livres de Contexto fechado sobre as operaes de Unio, Concatenao e Estrela de Kleene.

Teorema 1.5.2 O conjunto das Linguagens Livres de Contexto no fechado sobre Interseo ou Complemento . Teorema 1.5.3 Seja R uma linguagem regular e L uma linguagem livre de contexto. Assim, RL livre de contexto. 1.6 AUTMATO DE PILHA COM DUAS PILHAS Os Autmatos Finitos aceitam as linguagens regulares. Os Autmatos de Pilha aceitam as linguagens livres de contexto. A ampliao do conjunto das linguagens aceitas pelos autmatos de pilha pode ser feita coma a adio de mais uma pilha ao autmato. o caso de se perguntar: um autmato com duas pilhas melhor que aquele com somente uma? Definio 1.6.1 Um Autmato de Pilha com duas pilhas uma sextupla ( Q, , , , q0, F), onde Q, , , q0 e F tm o mesmo significado que aqueles de um autmato de uma pilha. A funo de transio mapeia Q x ({ }) x ({ }) x ({ }) em um subconjunto de Q x ({ }) x ({ }).
20

A transio de um estado qi para qj se d mediante o processamento de um smbolo de entrada x e a leitura dos smbolos que se encontram nos topos das duas pilhas. Assim, ( qi, x, A, B) = { [ qj, M, N ], ...} significa que o PDA passa do estado qi para o estado qj, o smbolo x processado e os topos das pilhas, A e B so substitudos por M e N, respectivamente. Exemplo 1.6.1 O PDA com duas pilhas a seguir definido, aceita a linguagem L = { aibicii 0 }. A primeira pilha usada para comparar o nmero de a's e b's, enquanto a segunda pilha usada para comparar o nmero de b's e c's. M: Q = {q0 , q1, q2} = {a , b , c} = {A } F = {q2} : (q0 , , , ) = {[q2 , , ]} (q0 , a , , ) = {[q0 , A , ]} (q0 , b , A , ) = {[q1 , , A]} (q1 , b , A , ) = {[q1 , , A]} (q1 , c , , A) = {[q2 , , ]} (q2 , c , , A) = {[q2 , , ]} O diagrama de M o seguinte:

A palavra w = aabbcc tem o seguinte processamento: [ q0 , aabbcc , , ] [ q0 , abbcc , A , ] [ q0 , bbcc , AA , ] [ q1 , bcc , A , A ] [ q1 , cc , , AA ] [ q2 , c , , A ] [ q2 , , , ]


21

Claramente, toda LCC aceita por um autmato de 2 pilhas. A linguagem aceita por um 2PDA, inclui, mas no est limitada as LLC. A aceitao de {aibicii 0} por um autmato de 2 pilhas, mostra que as LLC so um subconjunto prprio da linguagem aceita pelo autmato com 2 pilhas. Conforme vimos ao longo do curso, a i uma linguagem regular aceita por DAF, akbi livre de contexto aceita por um PDA e aibici aceito por 2PDA. Pergunta: necessrio uma outra pilha para aceitar a ibicidi ?

EXERCICIOS 1. Seja M o PDA Q = { q 0, q 1, q 2 } = { a, b } = { A} F = { q 1, q 2 } (q0, a, ) = { [q0, A] } (q0, , ) = { [q1, ] } (q0, b, A) = { [q2, ] } (q1, , A) = { [q1, ] } (q2, b, A) = { [q2, ] } (q2, , A) = { [q2, ] }

a) Descreva a linguagem aceita por M. b) Mostre todas as computaes das palavras aab, abb, aba em M. c) Mostre que aabb, aaab L(M). 2. Seja o PDA do exemplo 1.1.3. a) Trace todas as computaes das palavras ab, abb, abbb em M. b) Mostre que aaaa, baab L(M). c) Mostre que aaa, ab L(M). 3. Construa um PDA que aceite cada uma das seguintes linguagens. d) { aibj i j }
22

e) f) g) h) i) j) k) l) m) n)

{ aicjbi i, j 0 } { aibjck i + k = j } { w w {a, b }* , tendo w o mesmo nmero de as e bs } { w w {a, b }*, tendo w duas vezes mais as que bs } { aibi i 0 } a* b* { aibjck i = j ou j = k } { aibj i j } { aibj i j 2i } { ai+jbicj i, j > 0 } O conjunto dos palndromos sobre {a, b}

4. Construa um PDA com somente dois smbolos de pilha que aceite a linguagem { wdwR w {a, b, c}* }. 5. Usa a tcnica do teorema 1.3.1 para construir um PDA que aceite a linguagem gerada pela gramtica a seguir, expressa na Forma Normal de Greibach. S aABA aBB A bA b B cB c

6. Seja M o seguinte PDA. Q = { q0, q1, q2 } = { a, b } ={A} F = { q2 } (q0, a, ) = { [q0, A] } (q0, b, A) = { [q1, ] } (q1, b, ) = { [q2, ] } (q2, b, A) = { [q1, ] }

a) Descreva a linguagem aceita por M. b) Use a tcnica do teorema 1.3.2, para construir uma gramtica livre de contexto G que gere L(M). c) Trace as computaes para aabbbb em M. d) D uma derivao para aabbbb em G. 7. Seja G uma gramtica na Forma Normal de Greibach e M um PDA * construdo a partir de G. [q1, , w], ento existe * Prove que se [q 0, u, ] uma derivao S uw em G que completa a prova do teorema1.3.1. 8. Seja L = { a2ibi i 0 }. a) Construa um PDA M1 com L(M1) = L. b) Construa um PDA atmico M2 com L(M2) = L. c) Construa um PDA estendido M3 com L(M3) = L. d) Mostre as computaes da palavra aab em M1, M2 e M3 .
23

9. Seja L = { a2ib3i i 0 }. a) Construa um PDA M1 com L(M1) = L. b) Construa um PDA atmico M2 com L(M2) = L. c) Construa um PDA estendido M3 com L(M3) = L. d) Mostre as computaes da palavra aabbb em M1, M2 e M3 . 10. Seja L a linguagem { w {a,b}* w tem um prefixo com mais bs que as}. Por exemplo, baa, abba, abbaaa L, mas aab, aabbab L. a) Construa um PDA que aceite L por estado final. b) Construa um PDA que aceite L por pilha vazia. 11. Use o Lema do Bombeamento para provar que cada uma das linguagens a seguir no livre de contexto. a) { ak k um quadrado perfeito } b) { aibjcidj i, j 0 } c) { aib2iai i 0 } d) { aibjck i < j < k } e) { wwRw w {a, b}* } f) O conjunto dos prefixos de tamanho finito da palavra infinita abaabaaabaaaab ... banban+1b...

12. Prove que cada uma das linguagens a seguir so livres de contexto. a) L1 = { aib2icji, j 0 } b) L2 = { ajbic2ii, j, k 0 } c) L1 L2 d) Prove que cada uma das linguagens a seguir so livres de contexto L1 = { aibicjdji, j 0 } e) L2 = { ajbicidki, j, k 0 } f) L1 L2 13. Seja M um PDA do exemplo 1.1.1. a) Trace uma computao em M que aceite bbcbb. b) Use a tcnica do teorema 1.3.2 para construir uma gramatica G que gera L(M). c) D a derivao de bbcbb em G. 14. Faa o que se pede. a) Construa um DAF N que aceite todas as palavras em {a,b}* com um nmero par de as. b) Construa um PDA M que aceite { a3ibi i 0 }. c) Use a tcnica do teorema 1.5.3 para construir um PDA M que aceite L(N)L(M).
24

d) Trace as computaes que aceitam aaab em N, M e N. 15. Seja G = (V,, P, S) uma gramtica livre de contexto. Defina um PDA estendido M, como segue: Q = {q0} = G = G V F = {q0} (q0, , A) = {[q0, w]A w P} (q0, a, a) = {[q0, ]a } Prove que L(M) = L(G). 16. Seja L uma linguagem livre de contexto sobre um alfabeto e a . Defina era(L) como sendo o conjunto obtido ao se remover as ocorrncias de as das palavras de L. Assim, ara(L) a linguagem L com as ocorrncias de as apagadas. Por exemplo, se abab, bacb, aa L, ento bb, bcb, e era(L). Prove que era(L) e livre de contexto. Sugesto: Converta a gramtica que gera L na gramtica que gera era(L). 17. Construa um PDA com duas pilhas que aceite as seguintes linguagens a) { aib2iai i 0 } b) { aibjaibj i, j 0 } c) { ww w {a, b}* } 18.

25