esquerda p/ direita,read only

Slides:



Advertisements
Apresentações semelhantes
Decidibilidade e Indecidibilidade
Advertisements

Linguagens Livre-de-contexto
FAPE - Curso de Ciência da Computação
Variantes de Máquina de Turing
5.5 – Análise Bottom-Up Tentativa de construir uma árvore sintática para a sentença analisada, começando das folhas, indo em direção à raiz (pós-ordem.
Teoria da Computação MÁQUINA DE TURING (Continuação) Fabrício Dias
I - Noções dum compilador
Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica e Informática – CEEI Departamento de Sistemas e Computação – DSC Máquina de.
Prof. Yandre Maldonado e Gomes da Costa
Prof. Yandre Maldonado e Gomes da Costa
TEORIA DA COMPUTAÇÃO Parte II  Linguagens Livres de Contexto
Teoria da Computação FIC– Ciência da Computação
Análise Sintática Ascendente ­
Computabilidade e Linguagens Formais
3 AUTÓMATOS FINITOS.
Ling. Formais e Autômatos Autômatos finitos
Complexidade de Linguagens Influência do Modelo de Computação
Lema do Bombeamento – Gramáticas Livres do Contexto
Teorema da Recursão Teoria da Computação
Profa. Heloise Manica Paris Teixeira
Linguagens Livres de Contexto
Q={s,q1,…,q10,t,r} ={a,b,c} ={├,■,} Função de transição:
Linguagens Livre de Contexto
Linguagens e Máquinas WILSON ROSA DE OLIVEIRA DEPARTAMENTO DE INFORMÁTICA UFPE
autômatos finitos com transições e
Análise Dada uma cadeia de terminais w, queremos saber se wL(G) ou não. Se for o caso, poderemos querer achar uma derivação de w. Um algoritmo que pode.
Linguagens Sensíveis ao Contexto
Identificando Linguagens Não Regulares
Máquina de Turing e Computabilidade
Relações em uma Gramática
Construção de Compiladores
Construção de Compiladores
Exercícios Linguagens Formais.
Informática Teórica Engenharia da Computação
Lema do Bombeamento Linguagens Livres de Contexto
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Lema do Bombeamento Linguagens Livres de Contexto
Gramáticas Livres de Contexto
Erick Vagner Cabral Igor Lucena Vitor Baptista
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
SIPSER – Capítulo 3: A tese de Church-Turing
Expressões Regulares e Gramáticas
Autómatos de Pilha. UM NOVO MODELO PARA OS AUTÓMATOS FINITOS As linguagens regulares são aceites por autómatos finitos. E as linguagens não regulares?
Inteligência Artificial
Capítulo II Gramáticas e Linguagens
Analise sintática aula-07-analise-sintática.pdf.
Teoria da Computação WILSON ROSA DE OLIVEIRA
Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica e Informática – CEEI Departamento de Sistemas e Computação – DSC Teoria da.
Máquinas de Turing.
LFA: Unidade 03 – Parte B Engenharia/Ciência da Computação
Redução.
Linguagens Livres de Contexto
MÁQUINAS DE TURING Acadêmicos: Karen Juliani Tosta Tomaz RA – 47566
tópicostópicos itens 01. Terminologia 02. Operações básicas 03. Representação de linguagens 04. Formalização de gramáticas 05. Processo de derivação 06.
Tese de Church-Turing.
Reverso de uma Linguagem Regular
1 Decidibilidade continuação…. 2 Teorema: Para qualquer linguagem recursivamente enumerável é indecidível determinar se é finita Prova: Vamos reduzir.
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação. Autômatos Com Pilha São como autômatos finitos não-determinísticos mas com uma pilha. São como autômatos.
Transcrição da apresentação:

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

autômato a pilha não-determinís-tico M=< Q,,,,q0,,F> Definição NPDA autômato a pilha não-determinís-tico M=< 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 *

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

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,,)pF e *}

L(M)={w|(q0,w,z) |—* (p,,), qQ} 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.

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

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

(i) S  [BS ((q,,S),(q,BS)) (ii) S  [B ((q,,S),(q,B)) 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,,)

 S * x por uma derivação a esquerda  (q,x,s) *(q, , ) (lema) 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

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) ou Ci=(p,BC) (b)

Estas restrições não são tão severas quanto parece 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.

(qiAql)a(qjBqk)(qkBql) 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:

 aa(q3zq2)  aa(q0Aq1)(q1zq2)  aab(q1zq2)  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 Teorema. Se L=L(M) para algum pda M. então L é uma linguagem livre de contexto.