A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

1 Computabilidade e Linguagens Formais Autómatos de pilha Gabriel David / Cristina Ribeiro.

Apresentações semelhantes


Apresentação em tema: "1 Computabilidade e Linguagens Formais Autómatos de pilha Gabriel David / Cristina Ribeiro."— Transcrição da apresentação:

1 1 Computabilidade e Linguagens Formais Autómatos de pilha Gabriel David / Cristina Ribeiro

2 Autómatos de pilha-2 Autómatos e autómatos de pilha Os autómatos de pilha estão para as linguagens sem contexto como os autómatos estão para as linguagens regulares 1 Start 2 0 0,1 1 1*0(1+0)* Linguagens regulares E I | E+E | E×E | (E) I a | b | Ia | Ib | I0 | I1 Linguagens sem contexto A Start B

3 Autómatos de pilha-3 Ideia Autómato de pilha é um -NFA com uma pilha de símbolos – Adiciona a possibilidade de memorizar uma quantidade infinita de informação – Só tem acesso ao topo da pilha (LIFO), em vez de poder consultar qualquer posição de memória, como os computadores genéricos Controlo de estados finito entrada pilha Aceita/ rejeita Funcionamento – A parte de controlo lê e consome os símbolos da entrada – Transição para novo estado baseada no estado corrente, símbolo de entrada e símbolo no topo da pilha – Transição espontânea com – Topo da pilha substituído por cadeia

4 Autómatos de pilha-4 Exemplo do palindroma L wwr = {ww R | w em (0+1)*} palindromas de comprimento par – Linguagem sem contexto gerada pela gramática P | 0P0 | 1P1 Construir um autómato de pilha – Estado inicial q 0 significa que ainda não se atingiu o meio de ww R ; vai-se guardando na pilha os símbolos de w – A qualquer altura, adivinha-se que já se chegou ao meio (fim de w) e faz-se uma transição para q 1 ; a pilha contém w, a começar no fundo e a acabar no topo; o não determinismo é simulado pela manutenção dos dois estados – Em q 1 comparam-se os símbolos de entrada com o topo da pilha; se não houver correspondência, a aposta foi errada e este ramo da computação morre; outro poderá ter sucesso – Se a pilha se esvaziar (e a entrada acabar) descobriu-se w e w R

5 Autómatos de pilha-5 Definição Autómato de pilha (PDA) P= (Q,,,, q 0, Z 0, F) – Q: conjunto finito de estados – : conjunto finito de símbolos de entrada – : alfabeto da pilha finito – : função de transição (q, a, X) = {(p 1, 1 ), …} finito q é um estado, a um símbolo de entrada ou, X um símbolo da pilha p 1 é o novo estado, 1 é a cadeia de símbolos da pilha que substitui X no topo – 1 = pop do topo da pilha – 1 = X pilha inalterada – 1 = YZ X substituído por Z e push do Y a seguir – q 0 : estado inicial – Z 0 : símbolo inicial, conteúdo inicial da pilha – F: conjunto de estados de aceitação ou finais

6 Autómatos de pilha-6 De novo o exemplo PDA de L wwr P = ({q 0,q 1,q 2 }, {0,1}, {0,1,Z 0 },, q 0, Z 0, {q 2 }) – Z 0 usado para marcar o fundo da pilha e permitir no fim da leitura de ww R passar para o estado de aceitação q 2 – (q 0,0,Z 0 )= {(q 0,0Z 0 )} e (q 0,1,Z 0 )= {(q 0,1Z 0 )} topo da pilha à esquerda – (q 0,0,0)= {(q 0,00)}, (q 0,0,1)= {(q 0,01)}, (q 0,1,0)= {(q 0,10)}, (q 0,1,1)= {(q 0,11)} – (q 0,,Z 0 )= {(q 1,Z 0 )}, (q 0,,0)= {(q 1,0)}, (q 0,,1)= {(q 1,1)} – (q 1,0,0)= {(q 1, )} e (q 1,1,1)= {(q 1, )} – (q 1,,Z 0 )= {(q 2,Z 0 )}

7 Autómatos de pilha-7 Diagrama de transição Nós são estados Start indica o estado inicial Arcos correspondem às transições – Etiqueta a,X/α de q para p significa que (q,a,X) contém (p,α) – O arco indica a entrada e o topo da pilha antes e depois Start q0q0 q1q1, Z 0 /Z 0, 0/0, 1/1 q2q2, Z 0 /Z 0 0, Z 0 /0Z 0 1, Z 0 /1Z 0 0, 0/00 0, 1/01 1, 0/10 1, 1/11 0, 0/ 1, 1/

8 Autómatos de pilha-8 Descrição instantânea Computação de um PDA – Evolui de configuração em configuração, em resposta a símbolos de entrada (ou ) e alterando a pilha – Num DFA: toda a informação no estado; num PDA: estado + pilha Descrição instantânea (q,w, ) – q: estado – w: entrada remanescente (em vez de só um símbolo, conveniência) – : conteúdo da pilha (topo à esquerda) Passo de um PDA (Q,,,, q 0, Z 0, F) – Se (q,a,X) contiver (p,α), para todas as cadeias w em * e em * – (q, aw, X ) P (p,w,α ) – Usa-se * para zero ou mais passos (computação)

9 Autómatos de pilha-9 Ainda o exemplo Entrada w=1111 Descrição instantânea (DI) inicial: (q 0, 1111, Z 0 ) (q 0, 1111, Z 0 ) (q 1, 1111, Z 0 ) (q 2, 1111, Z 0 ) (q 0, 111, 1Z 0 ) (q 0, 11, 11Z 0 ) (q 0, 1, 111Z 0 ) (q 0,, 1111Z 0 )(q1,, 1111Z 0 ) (q 1, 11, 11Z 0 ) (q 1, 1, 1Z 0 ) (q 2,, Z 0 )(q 1,, Z 0 ) (q 1, 111, 1Z 0 ) (q 1, 11, Z 0 ) (q 2, 11, Z 0 ) (q1, 1, 111Z 0 ) (q1,, 11Z 0 )

10 Autómatos de pilha-10 Princípios relativos a DI Se uma sequência de DIs (computação) é legal para um PDA P então a computação que resulta de adicionar uma qualquer cadeia w à entrada em cada DI também é legal Se uma computação é legal para um PDA P então a computação que resulta de adicionar um qualquer conjunto de símbolos abaixo da pilha em cada DI também é legal – Teorema 1: Se (q,x,α) * (p,y, ) então (q,xw,α ) * (p,yw, ) Se uma computação é legal para um PDA P e uma cauda da entrada não é consumida, então a computação que resulta de remover essa cauda da entrada em cada DI também é legal – Teorema 2: Se (q,xw,α) * (p,yw, ) então (q,x,α) * (p,y, )

11 Autómatos de pilha-11 Comentários Dados para os quais P nunca olha não podem afectar a sua computação Conceito semelhante à própria noção de linguagem sem contexto: o que está ao lado não influencia a computação Teorema 2 não é o inverso do 1 porque o que está na pilha pode influenciar a computação mesmo sem ser descartado – Pode por exemplo ir sendo retirado da pilha um símbolo de cada vez e no último passo repor tudo

12 Autómatos de pilha-12 Linguagens de um PDA Aceitação por estado final – Seja o PDA P = (Q,,,, q 0, Z 0, F) – Linguagem de P aceite por estado final – L(P) = {w | (q 0,w,Z 0 ) * (q,,α)} e q F – Conteúdo final da pilha é irrelevante Exemplo: – (q 0,ww R,Z 0 ) * (q 0,w R,w R Z 0 ) (q 1,w R,w R Z 0 ) * (q 1,,Z 0 ) (q 2,,Z 0 ) Aceitação por pilha vazia – N(P) = {w | (q 0,w,Z 0 ) * (q,, )} – Linguagem aceite por pilha vazia, conjunto de entradas w que P consome esvaziando ao mesmo tempo a pilha (N(P) – pilha nula) Mesmo exemplo: modificação para esvaziar a pilha e obter N(P)=L(P) – (q 1,,Z 0 )= {(q 2,Z 0 )} passa a ser (q 1,,Z 0 )= {(q 2, )} – (q 0,ww R,Z 0 ) * (q 0,w R,w R Z 0 ) (q 1,w R,w R Z 0 ) * (q 1,,Z 0 ) (q 2,, )

13 Autómatos de pilha-13 Da pilha vazia ao estado final Teorema: Se L = N(P N ) para um PDA P N = (Q,,, N, q 0, Z 0 ) então existe um PDA P F tal que L = L(P F ) – Dois métodos de aceitação de uma entrada equivalentes – Embora para um PDA P possa ser L(P) N(P) – Partindo de P N, usa-se um novo X 0 como símbolo inicial de P F e como marcador do fundo da pilha: P F vê X 0 quando pilha de P N vazia Start, X 0 /Z 0 X 0 pfpf, X 0 / p0p0 q0q0 PNPN P F = (Q {p 0,p f },, {X 0 }, F, p 0, X 0,{p f })

14 Autómatos de pilha-14 Do estado final à pilha vazia Start, X 0 /Z 0 X 0, any/ p0p0 q0q0 PFPF p

15 Autómatos de pilha-15 Exemplo de conversão Defina um PDA que processe sequências de i e e, significando if e else, construção presente em muitas linguagens de programação, detectando sequências inválidas (sequências que têm mais es que is num prefixo) – Símbolo inicial Z; pilha com Z n significa que nº is - nº es = n-1 – Aceitação por pilha vazia (balanço de mais um e que i) – Conversão para aceitação por estado final Start, X 0 / q r Start, X 0 /ZX 0 pq e, Z/ i, Z/ZZ e, Z/ i, Z/ZZ pilha vaziaEstado final

16 Autómatos de pilha-16 Equivalência entre PDAs e CFGs Prova-se que as linguagens sem contexto, definidas por CFG, são as linguagens aceites por pilha vazia por um PDA e portanto também as aceites por estado final por um PDA Ideia: dada uma CFG G construir um PDA que simula as derivações mais à esquerda de G – Qualquer forma frásica esquerda não terminal pode ser escrita como xAα, onde A é a variável mais à esquerda. Aα é a cauda. – CFG G = (V,T,Q,S) – PDA que aceita L(G) por pilha vazia: P = ({q}, T,V T,,q,S) – Para cada variável A: (q,,A)={(q, ) | A é produção em G} – Para cada terminal a: (q,a,a)={(q, )}

17 Autómatos de pilha-17 De CFG para PDA Dada a CFG Obter um PDA de aceitação por pilha vazia que aceite a mesma linguagem. – P N = ({q}, {a,b,0,1,(,),+, × }, {a,b,0,1,(,),+, ×,E,I},, q, E) – (q,,I) = {(q,a), (q,b), (q,Ia), (q,Ib), (q,I0), (q,I1)} – (q,,E) = {(q,I), (q,E+E), (q,E × E), (q,(E))} – (q,a,a) = {(q, )}; (q,b,b)={(q, )}, (q,0,0) = {(q, )}; (q,1,1) = {(q, )}; (q,(,() = {(q, )}; (q,),)) = {(q, )}; (q,+,+) = {(q, )}; (q, ×, × ) = {(q, )} Só um estado; processamento das variáveis espontâneo; só os terminais consomem entrada E I | E+E | E×E | (E) I a | b | Ia | Ib | I0 | I1

18 Autómatos de pilha-18 Exercício Usando a CFG e o PDA para a linguagem das expressões – a) obtenha uma derivação mais à esquerda de a (a+b00) – b) obtenha o traço da respectiva computação no PDA, isto é, a sequência de Descrições Instantâneas a) – E E×E I×E a×E a×(E) a×(E+E) a×(I+E) – a×(a+E) a×(a+I) a×(a+I0) a×(a+I00) a×(a+b00) b) – (q, a (a+b00), E) (q, a (a+b00), E E) (q, a (a+b00), I E) – (q, a (a+b00), a E) (q, (a+b00), E) (q, (a+b00), E) – (q, (a+b00), (E)) (q, a+b00), E)) (q, a+b00), E+E)) – (q, a+b00), I+E)) (q, a+b00), a+E)) (q, +b00), +E)) – (q, b00), E)) (q, b00), I)) (q, b00), I0)) (q, b00), I00)) – (q, b00), b00)) (q, 00), 00)) (q, 0), 0)) (q,),)) (q,, )

19 Autómatos de pilha-19 De PDA para CFG Ideia: reconhecer que o evento fundamental num processamento num PDA é o pop final de um símbolo da pilha enquanto se consome entrada Acrescentar variáveis na linguagem para – Cada eliminação definitiva de um símbolo X da pilha – Cada mudança de estado de p para q ao eliminar X, representada por um símbolo composto [pXq] Regra: do PDA P= (Q,,, N, q 0, Z 0 ) construir CFG G= (V,, R, S) – Variáveis V: contém S e os símbolos [pXq]

20 Autómatos de pilha-20 De PDA para CFG (cont) Produções R: – Para todos os estados p, G contém S [q 0 Z 0 p] O símbolo [q 0 Z 0 p] gera todas as cadeias w que extraem Z 0 da pilha enquanto vão do estado q 0 para o estado p, (q 0,w,Z 0 ) * (p,, ) Então S gera todas as cadeias w que esvaziam a pilha – Se (q,a,X) contém o par (r,Y 1 Y 2 …Y k ), k 0, a ou a= então para todas as listas de estados r 1,r 2,…,r k, G contém [qXr k ] a[rY 1 r 1 ][r 1 Y 2 r 2 ]…[r k-1 Y k r k ] Uma forma de extrair X e ir de q a r k é ler a (pode ser ) e usar alguma entrada para extrair Y 1 ao ir de r para r 1, etc.

21 Autómatos de pilha-21 Exemplo Converter o PDA P N =({q},{i,e},{Z}, N,q,Z) numa gramática – aceita as cadeias que violam pela 1ª vez a regra de que um e deve corresponder a um i precedente Solução: – só um estado q e só um símbolo de pilha Z – Duas variáveis: S, símbolo inicial; [qZq], único símbolo a partir dos estados e símbolos de P N – Produções: S [qZq] (se houvesse mais estados p e r teríamos S [qZp] e S [qZr]) De N (q,i,Z)={(q,ZZ)} obter [qZq] i[qZq] [qZq] (se houvesse mais estados p e r teríamos [qZp] i[qZr] [rZp]) De N (q,e,Z)={(q, )} obter [qZq] e (Z é substituído por nada) Chamando A a [qZq] fica S A e A iAA | e

22 Autómatos de pilha-22 Propriedades das CFL Simplificação das CFGs forma normal de Chomsky Eliminação de símbolos inúteis – Símbolo útil: S * αX * w, w T* – Símbolo gerador: X * w Qualquer terminal é gerador, dele próprio! – Símbolo atingível: S * αX – Útil = gerador + atingível – Eliminar primeiro os não geradores e depois os não atingíveis Exemplo – S AB | aS a [B não é gerador] S a – A bA b [A não é atingível]

23 Autómatos de pilha-23 Eliminação de símbolos inúteis Algoritmo: descobrir os símbolos geradores – os terminais são geradores – A α e α só tem geradores; então A é gerador Algoritmo: descobrir os símbolos atingíveis – S é atingível – A é atingível, A α; então todos os símbolos em α são atingíveis

24 Autómatos de pilha-24 Eliminação de produções- Variável anulável: A * Transformação: B CAD passa a B CD | CAD e impede-se que A produza Algoritmo: descobrir as variáveis anuláveis – A C 1 C 2 … C k, todos os C i são anuláveis; então A é anulável Se uma linguagem L tem uma CFG então L-{ } tem uma CFG sem produções- – Determinar todos os símbolos anuláveis – Para cada A X 1 X 2 … X k se m X i s são anuláveis substituir por 2 m produções com todas as combinações de presenças de X i. – Excepção: se m=k, não se inclui o caso de todos os X i ausentes – Produções A são eliminadas

25 Autómatos de pilha-25 Exemplo Gramática – S AB – A aAA | – B bBB | A e B são anuláveis, logo S também S AB | A | B A aAA | aA | aA | a B bBB | bB | b

26 Autómatos de pilha-26 Eliminação de produções unitárias Produção unitária: A B, em que A e B são variáveis – Podem ser úteis na eliminação de ambiguidade (ex: linguagem das expressões) – Não são imprescindíveis; introduzem passos extra nas derivações Eliminam-se por expansão – I a | b | Ia | Ib | I0 | I1 – F I | (E) – T F | T × F – E T | E + T De E T passar a E F | T × F a E I | (E) | T × F e finalmente E a | b | Ia | Ib | I0 | I1 | (E) | T × F – Problema no caso de ciclos

27 Autómatos de pilha-27 Eliminação de produções unitárias Algoritmo: descobrir todos os pares unitários, deriváveis apenas com produções unitárias – (A, A) é um par unitário – (A, B) é um par unitário e B C, C variável; então (A, C) é unitário Exemplo: (E, E), (T, T), (F, F), (E, T), (E, F), (E, I), (T, F), (T, I), (F, I) Eliminação: substituir as produções existentes de forma a que para cada par unitário (A, B) se incluam todas as produções da forma A α em que B α é uma produção não unitária (incluir A=B)

28 Autómatos de pilha-28 Gramática sem produções unitárias I a | b | Ia | Ib | I0 | I1 F I | (E) T F | T × F E T | E + T ParProduções (E, E) E E + T (E, T) E T × F (E, F) E (E) (E, I) E a | b | Ia | Ib | I0 | I1 (T, T) T T × F (T, F) T (E) (T, I) T a | b | Ia | Ib | I0 | I1 (F, F) F (E) (F, I) F a | b | Ia | Ib | I0 | I1 (I, I) I a | b | Ia | Ib | I0 | I1

29 Autómatos de pilha-29 Sequência de simplificação Se G é uma CFG que gera uma linguagem com pelo menos uma cadeia diferente de, existe uma CFG G 1 que não tem produções-, produções unitárias ou símbolos inúteis e L(G 1 ) O= L(G) – { } – Eliminar produções- – Eliminar produções unitárias – Eliminar símbolos inúteis

30 Autómatos de pilha-30 Forma normal de Chomsky (CNF) Todas as CFL sem têm uma gramática na forma normal de Chomsky: sem símbolos inúteis e em que todas as produções são da forma – A BC (A, B, C variáveis) ou – A a (A variável e a terminal) Transformação – Começar com uma gramática sem produções-, produções unitárias ou símbolos inúteis – Deixar as produções A a – Passar todos os corpos de comprimento 2 ou mais para só variáveis Variáveis novas D para os terminais d nesses corpos, substituir e D d – Partir corpos de comprimento 3 ou mais em cascatas de produções só com 2 variáveis A B 1 B 2 …B k para A B 1 C 1, C 1 B 2 C 2, …

31 Autómatos de pilha-31 Gramática das expressões Variáveis para os terminais em corpos não isolados – A aB bZ 0O 1 – P +M ×L (R ) – E EPT | TMF | LER | a | b | IA | IB | IZ | IO – T TMF | LER | a | b | IA | IB | IZ | IO – F LER | a | b | IA | IB | IZ | IO – I a | b | IA | IB | IZ | IO Substituir corpos compridos – E EC 1 | TC 2 | LC 3 | a | b | IA | IB | IZ | IO – T TC 2 | LC 3 | a | b | IA | IB | IZ | IO – F LC 3 | a | b | IA | IB | IZ | IO – C 1 PT C 2 MF C 3 ER

32 Autómatos de pilha-32 Lema da bombagem para CFL Dimensão de uma árvore de análise – Considerar apenas o caso das CNF: árvores binárias em que as folhas são terminais sem irmãos (produções A a) – Numa gramática com árvore de análise CNF e colheita w terminal, se o comprimento do maior caminho for n então |w| 2 n-1 Seja L uma CFL. Existe uma constante n tal que, para qualquer cadeia z em L com |z| n se pode escrever z=uvwxy – |vwx| na parte do meio não é demasiado comprida – vx pelo menos uma é não vazia – Para todo i 0, uv i wx i y Lbombagem dupla, a começar em 0

33 Autómatos de pilha-33 Prova Obter uma gramática CNF G para L G contém m variáveis. Escolher n=2 m. Cadeia z em L |z| n. Qualquer árvore de análise com caminho mais longo de comprimento até m tem colheita até 2 m-1 =n/2. – z seria demasiado longa; árvore para z tem caminho m+1 ou maior Na figura, o caminho A 0 …A k a é de comprimento k+1, k m – Há pelo menos m+1 variáveis no caminho; logo há pelo menos uma repetição de variáveis (de A k-m a A k ). – Supõe-se A i =A j com k-m i < j k

34 Autómatos de pilha-34 Continuação da prova Se cadeia z suficientemente longa, tem que haver repetições de símbolos Divide-se a árvore: – w é a colheita da subárvore de A j – v e x são tais que vwx é a colheita de A i (como não há produções unitárias pelo menos um de v e x é não nulo) – u e y são as partes de z à esquerda e à direita de vwx u v w x y z A0A0 A i =A j AjAj AkAk a

35 Autómatos de pilha-35 Continuação da prova Como A i =A j, pode-se – substituir a subárvore de A i pela de A j, obtendo o caso i=0, uwy. – substituir a subárvore de A j pela de A i, obtendo o caso i=2, uv 2 wx 2 y e repetir para i=3, … (bombagem) |vwx| n porque se pegou num A i próximo do fundo da árvore, k-i m, caminho mais longo de A i até m+1, colheita até 2 m =n u v w x y A A S u A S y w u v x y A A S v w x A

36 Autómatos de pilha-36 Lema da bombagem no caso das LR: o lema da bombagem decorre de o número de estados de um DFA ser finito – para aceitar uma cadeia suficientemente comprida tem que haver repetições de estados No caso das CFL: decorre de o número de símbolos numa CFG ser finito – para aceitar uma cadeia suficientemente comprida tem que haver repetições (duplas) de símbolos LR (DFA)CFL (CFG)

37 Autómatos de pilha-37 Provar que uma linguagem não é CFL Seja L = {0 k 1 k 2 k | k 1}. Mostre que não é CFL. – Supondo que L é uma CFL, existe uma constante n indicada pelo lema da bombagem; tome-se z = 0 n 1 n 2 n que faz parte de L – Fazendo z=uvwxy, sujeito a |vwx| n e v, x não ambos nulos, temos que vwx não pode conter simultaneamente 0s e 2s – Caso vwx não contém 2s; então vx tem só 0s e 1s e tem pelo menos um símbolo. Então, pelo lema da bombagem, uwy também deveria pertencer à linguagem. Mas tem n 2s e menos do que n 0s ou 1s e portanto não pertence à linguagem. – Caso vwx não contém 0s: argumento semelhante. – Obtém-se contradição em ambos os casos; portanto a hipótese é falsa e L não é uma CFL

38 Autómatos de pilha-38 Problemas na prova Seja L = {0 k 1 k | k 1}. Mostre que não é CFL. – Supondo que L é uma CFL, existe uma constante n indicada pelo lema da bombagem; tome-se z = 0 n 1 n que faz parte de L – Fazendo z=uvwxy, sujeito a |vwx| n e v, x não ambos nulos, pode acontecer de escolher v= 0 k e x=1 k – Neste caso uv i wx i y pertence sempre a L. – Não se obtém a contradição pretendida Não se consegue provar que L não é CFL – De facto é uma CFL

39 Autómatos de pilha-39 Substituição Seja um alfabeto; para cada um dos seus símbolos a define-se uma função (substituição) que associa uma linguagem L a ao símbolo – Cadeias: se w= a 1 …a n então s(w) é a linguagem de todas as cadeias x 1 …x n tais que x i está em s(a i ) – Linguagens: s(L) é a união de todos as s(w) tais que w L Exemplo: – ={0,1}, s(0)={a n b n | n 1}, s(1)={aa,bb} – Se w=01, s(w) = s(0)s(1) = {a n b n aa | n 1} {a n b n+2 | n 1} – Se L=L(0*), s(L) = (s(0))* = a n1 b n1 …a nk b nk, para n1, …, nk qq Teorema: seja L uma CFL e s() uma substituição que associa a cada símbolo uma CFL; então s(L) é uma CFL.

40 Autómatos de pilha-40 Aplicação do teorema da substituição As CFL são fechadas para: – União – Concatenação – Fecho (*) e fecho positivo (+) – Homomorfismo – Reverso – Intersecção com uma LR Intersecção com uma CFL não é garantida – Homomorfismo inverso

41 Autómatos de pilha-41 CFL e intersecção Seja L 1 = {0 n 1 n 2 i | n 1, i 1} e L 2 = {0 i 1 n 2 n | n 1, i 1} L 1 e L 2 são CFL – S ABS AB – A 0A1 | 01A 0A | 0 – B 2B | 2B 1B2 | 12 L 1 L 2 = {0 n 1 n 2 n | n 1} – Já está provado que não é CFL Logo as CFL não são fechadas para a intersecção

42 Autómatos de pilha-42 Complexidade das conversões Conversões lineares no comprimento da representação – CFG para PDA – PDA de estado final para PDA de pilha vazia – PDA de pilha vazia para PDA de estado final Conversão O(n 3 ) – PDA para CFG (tamanho da CFG também O(n 3 )) Conversão O(n 2 ) – CFG para CNF (tamanho da CNF também O(n 2 ))

43 Autómatos de pilha-43 Propriedades de decisão das CFL Teste de linguagem vazia – Verificar se S é gerador Com estrutura de dados adequada, O(n) Teste de pertença numa CFL – O(n 3 ), usando programação dinâmica, preenchimento de tabela X 15 X 14 X 25 X 13 X 24 X 35 X 12 X 23 X 34 X 45 X 11 X 22 X 33 X 44 X 55 a1a1 a2a2 a3a3 a4a4 a5a5 {S,A,C} {B} {S,A}{B}{S,C}{S,A} {B}{A,C} {B}{A,C} b a aba S AB | BC A BA | a B CC | b C AB | a w=baaba X 12 : X 11 X 22 ; X 24 : X 22 X 34 X 23 X 44

44 Autómatos de pilha-44 Problemas não decidíveis Não há algoritmo para responder a estas perguntas – Uma dada CFG é ambígua? – Uma dada CFL é inerentemente ambígua? – A intersecção de duas CFL é vazia? – Duas CFL dadas são a mesma linguagem? – Uma CFL é o universo *, em que é o seu alfabeto?


Carregar ppt "1 Computabilidade e Linguagens Formais Autómatos de pilha Gabriel David / Cristina Ribeiro."

Apresentações semelhantes


Anúncios Google