linguagens livre-de-contexto livre-de-contexto teoria da computação 2005.1 universidade federal de...

53
Linguagens Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica e Informática – Centro de Engenharia Elétrica e Informática – CEEI CEEI Departamento de Sistemas e Computação – DSC Departamento de Sistemas e Computação – DSC

Upload: internet

Post on 16-Apr-2015

103 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

LinguagensLinguagens

Livre-de-contextoLivre-de-contexto

Teoria da Computação 2005.1

Universidade Federal de Campina Grande – UFCGUniversidade Federal de Campina Grande – UFCGCentro de Engenharia Elétrica e Informática – CEEICentro de Engenharia Elétrica e Informática – CEEIDepartamento de Sistemas e Computação – DSCDepartamento de Sistemas e Computação – DSC

Page 2: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Linguagens Livre-de-contexto

Gramática

Gramática é um método de descrever linguagens através de um processo de geração de suas palavras

(em oposição ao processo de reconhecimento

inerente aos AF’s).

Page 3: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Definição Formal: Uma gramática livre-de-contexto G é uma quádrupla (V, , R, S), onde:

1. V é um conjunto finito de variáveis (não-terminais).2. é um conjunto finito de elementos (terminais)3. R é um conjunto finito de regras do tipo onde

V e (V )*4. S V é o símbolo inicial.

Gramática Livre-de-Contexto

Page 4: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

GLC: exemplos

<FRASE> <FRASE NOMINAL><FRASE VERBAL> <FRASE NOMINAIL> <SUJEITO COMPOSTO>| <SUJEITO

COMPOSTO><FRASE PREPOSICIONAL>

<FRASE VERBAL> <VERBO COMPOSTO>|<VERBO COMPOSTO><FRASE

PREPOSICIONAL> <FRASE PREPOSICIONAL> <PREPOSIÇÃO><SUJEITO COMPOSTO> <SUJEITO COMPOSTO> <ARTIGO><SUJEITO> <VERBO COMPOSTO> <VERBO> | <VERBO><FRASE NOMINAL> <ARTIGO> um(a) | o(a) <SUJEITO> garoto | garota | flor <VERBO> toca | gosta | vê <PREPOSIÇÃO> com

GLC que descreve uma parte da língua portuguesa

Page 5: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

GLC: exemplos

um garoto vê

<FRASE NOMINAL><FRASE VERBAL>

um garoto <VERBO COMPOSTO>

um garoto <VERBO>

um garoto vê

Derive: o garoto vê uma flor

<SUJEITO COMPOSTO> <FRASE VERBAL>

<ARTIGO><SUJEITO> <FRASE VERBAL>

um <SUJEITO> <FRASE VERBAL>

um garoto <FRASE VERBAL>

<FRASE>

Page 6: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

G1= (V, , R, S) V = {A,B}, = {0,1}, R = {A 0B, B 1}, S = A

G2= ({A}, {a}, {A aA, A a}, A)

G3= ({A,B}, {0,1}, {A 0A1, A }, A)

GLC: exemplos

Page 7: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Sejam: (i) G = (V, , R, S) uma gramática livre-de-contexto, (ii) u, v e w (V )* e (iii) A w uma regra de G.

Dizemos que uAv produz/deriva uwv pela aplicação da regra A w, e expressamos isso como: uAv uwv .

Escrevemos u * v para o caso de: u = v , ou existir uma seqüência u1, u2, ... uk tal que:

u1 = u uk = v ui ui+1 para 1 i k

Derivação: definição

Page 8: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

u * v sse u = v , ou existir uma derivação de v a partir de u

u = u1 u2 ... uk = v

Exemplos:

G2= ({A}, {a}, {A aA, A a}, A)

AA * aAaA pois AA AaA aAaA

AA * aa pois AA aA aa

Derivação

Page 9: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Definição: Uma gramática livre-de-contexto G=<V, , R, S> gera uma palavra w * se, e somente se, S * w

A palavra 00 #11 * é gerada pela gramática G1, pois:

Exemplo: G4 = ({A, B}, {0, 1, #}, R, A)

R: A 0A1 A B A #

Palavra gerada

A

Ou seja, A * 00#11

0A1 00A11 00B11 00#11

Page 10: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Exemplo: G5 = ({S}, {0, 1}, R, S)

R: S 0S1 S

Palavra gerada

0S1 00S11 0011

0S1 00S11 000S111 000111

S S

S

Page 11: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Seja G=<V, , R, S> uma gramática livre-de-contexto. Então,

L(G) = {w *: S * w}

L é uma linguagem livre-de-contexto se, e somente se, existir uma gramática G livre-de-contexto tal que L = L(G).

Linguagem Livre-de-contexto

Page 12: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Se a linguagem em mente pode ser “quebrada” em linguagens mais simples, então construa uma gramática para cada linguagem simples. As gramáticas individuas podem ser facilmente combinadas em uma gramática para a linguagem original.

Concepção de Gramática Livre-de-contexto

Page 13: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Exemplo: obter uma gramática para a linguagem:

{0n1n: n ≥ 0} {1m0m: m ≥ 0}

Gramática Livre-de-contexto

S1 0S11 |

S2 1S20 |

S S1 | S2

S1 0S11 | S2 1S20 |

Primeiro, construir uma gramática para {0n1n: n ≥ 0}:

Segundo, construir uma gramática para {1m0m: m ≥ 0}:

E por fim, adicionar a regra S S1 | S2 :

Page 14: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Construir uma gramática livre-de-contexto para uma linguagem regular é fácil se podemos primeiro construir um AFD para aquela linguagem.

Converter uma AFD para uma GLC:1. Crie uma variável Ri para cada estado qi do AFD.2. Adicione a regra Ri aRj à GLC se (qi , a) = qj é

uma transição no AFD.3. Adicione a regra Ri se qi é um estado de

reconhecimento do AFD.

4. Faça R0 o símbolo inicial, onde q0 é o estado inicial.

Gramática Livre-de-contexto

Page 15: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Exemplo: L = {w {0, 1}* : w = x1, x {0, 1}* }.

G = <V, , R, S>, V = {R1, R2}, = {0, 1}, S = R1

R: R1 0R1

R1 1R2

R2 0R1

R2 1R2

R2

Gramática Livre-de-contexto

Page 16: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Considere a gramática G4 = <V, , R, S>, onde :

V = {<EXPR>, <TERMO>, <FATOR>}

= {a, +, , (, )}

R = <EXPR> <EXPR> + <TERMO> | <TERMO>

<TERMO> <TERMO> <FATOR> | <FATOR>

<FATOR> (<EXPR>) | a

S = <EXPR>

Árvore de derivação (Parse tree)

Page 17: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

As palavras a + a a e (a + a) a podem ser geradas em G4. As seguintesfiguras(árvores) ilustram esse fato:

Árvore

Page 18: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Algumas gramáticas podem gerar o mesmo string (palavra) de formas diversas.

Tais palavras terão diferentes árvores de derivação e assim diferentes significados.

Esse é um resultado indesejável em algumas aplicações como, por exemplo, em linguagens de programação onde um programa deve ter um único significado.

Se uma gramática gera uma mesma palavra de diferentes maneiras, dizemos que a palavra é derivada ambiguamente pela gramática.

Se uma gramática gera alguma palavra ambiguamente, dizemos que a gramática é ambígua.

Ambigüidade

Page 19: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Exemplo: G5

<EXPR> <EXPR> + <EXPR>

<EXPR> <EXPR> <EXPR> <EXPR> (<EXPR>) <EXPR> a

A palavra a + a a é derivada ambiguamente em G5.

Ambigüidade

Page 20: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Uma derivação de uma palavra w em uma gramática G é uma derivação mais à esquerda se em todos os passos, a variável mais à esquerda remanescente é a substituída.

Uma palavra w é derivada ambiguamente em uma gramática livre-de-contexto G se ela tem duas ou mais diferentes derivações mais à esquerda.

Geralmente, quando temos uma gramática ambígua, podemos encontrar uma gramática não-ambígua que gera a mesma linguagem.

Contudo, algumas linguagens livre-de-contexto só podem se geradas por gramáticas ambíguas. Essas linguagens são chamadas de inerentemente ambíguas.

Ambigüidade

Page 21: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Definição:

Uma GLC G = <V, , R, S> é dita ser linear-à-direita se suas produções forem da forma A xB, onde A V, B (V ) e x *

Exemplo: G = <{S}, {a, b}, {S aS, S baa}, S>

L(G) = L(a*baa)

Gramática Linear-à-Direita

Page 22: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Teorema 9

Dado um AFD M = <Q, , , q, F>, então existe uma gramática linear-à-direita GM para a qual L(M) = L(GM).

Prova:

Assuma que Q = {q0, q1, ..., qn}, para algum n.

Defina GM = <Q, , RM, q0 >, onde:

RM = {q a(q,a) | q Q, a } {q | q F}.

Ou seja, existe uma produção da forma s bt para cada transição no autômato do estado s para o estado t tendo lido b, e uma produção da forma s para cada estado final s em F.

Gramática Linear-à-Direita

Page 23: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Então existe uma seqüência de estados: q0, q1, ..., qn, onde q0 é inicial e qn é final e as transições q0 q1 q2 ... qn.

Então, existe a derivação seguinte em GM: q0 a1, (q0, a) a1a2 (q1,a2 ) .... a1a2...aM qM a1a2...aM.

Gramática Linear-à-Direita

Seja w = a1a2...an L(M)

Assim, w L(GM).

Page 24: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Exemplo: Seja M = < {S, T}, {a, b}, , S,{T}>, onde:

(S, a) = T

(T, a) = S (S, b) = T

(T, b) = S.

Então, GM = <{S, T}, {a, b}, RM, S>, onde:

S aT | bTT aS | bS |

Gramática Linear-à-Direita

Page 25: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Gramática Linear-à-Direita

Teorema 10

Seja G = < V, , R, S > uma gramática linear-à-direita. Então, existe um AFND NG para o qual L(G) = L(NG).

Page 26: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Prova:

Defina NG = <QG, , G, q0G, FG>, onde:

QG = {<z> | z = ou z V ou existe um y * e um B V tal que B yz é uma produção em R}.

q0G = {<S>}. FG = {< >}. G (<w>, a) = {<x>|existe um y * e um B V tal

que w = ax e B yw R}. G Também contém: G (<B>, ) = {< v >| B v R }.

Gramática Linear-à-Direita

Page 27: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Exemplo:G = <{T, S}, {a, b}, {S aS, S bT, T aa}, S>. Então:

NG = <QG, {a, b}, G ,{< >} >, onde: QG = {<aS>, <S>, <bT>, <T>, <aa>, <a>, <>}

G(<S>, ) = {<aS>, <bT>} G(<T>, ) = {<aa>}

G(<aS>, a) = {<S>} G(<bT>, b) = {<T>} G(<aa>, a) = {<a>} G(<a>, a) = {< >}

e todas as outras são vazias: G(<S>, a) = , etc.

Gramática Linear-à-Direita

Page 28: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Teorema 11Uma gramática livre-de-contexto G é dita ser regular ou tipo3 se ela é linear-à-direita / linear-à-esquerda.

Gramática Regular

Page 29: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Definição:

Uma gramática livre-de-contexto está na Forma Normal de Chomsky (FNC) se cada regra é da forma:

A BCA a

onde a é um terminal e A, B e C são variáveis - exceto que B e C não podem ser a variável inicial. Permitimos também a regra S , onde S é a variável inicial.

Forma Normal de Chomsky

Page 30: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Teorema 12

Qualquer linguagem de livre contexto é gerada por uma gramática de livre contexto na forma normal de Chomsky

Idéia da provaEfetuar modificações na gramática original preservando a linguagem gerada

1. Adicionamos um novo símbolo inicial S0 e a regra S0 S, onde S era o símbolo inicial original.

Esta modificação nos certifica de que o símbolo inicial não ocorrerá no lado esquerdo de uma regra.

Forma Normal de Chomsky

Page 31: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

2. Removemos uma regra vazia A , onde A não é a variável inicial. Então, para cada ocorrência de A na parte direita de uma regra, adicionamos uma nova regra com esta ocorrência eliminada.Em outras palavras, se R uAv é uma regra em que u e v são cadeias de variáveis e terminais, adicionamos a regra R uv.Fazendo isto para cada ocorrência de A, então a regra R uAvAw nos leva a adicionar a regra R uvw. Se tivermos a regra R A, adicionamos R , a não ser que tenhamos removido a regra anteriormente. Repetimos o procedimento até que sejam eliminadas todas as regras vazias que não envolvam a variável inicial

Forma Normal de Chomsky

Page 32: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

3. Terceiro, tratamos de todas as regras unitárias.

Remove-se regras unitárias do tipo A B, e então sempre que surge uma regra do tipo B u, a substituímos por A u , a não ser que esta seja uma regra unitária removida anteriormente.

Como antes, u é uma cadeia de variáveis e terminais. Repetimos o processo até que tenhamos eliminado todas as regras unitárias.

Forma Normal de Chomsky

Page 33: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

4. Convertemos todas as regras restantes para a forma apropriada.

Substituímos cada regra A u1u2...uk, onde k 3 e cada ui é uma variável ou símbolo terminal, com as regras A u1A1, A1 u2A2, A2 u3A3, ... Ak-1 uk.

Os Ai são novas variáveis. Se k 2, substituímos qualquer terminal ui na regra anterior com a(s) nova(s) variável(is) Ui e adicionamos a regra Ui ui.

Forma Normal de Chomsky

Page 34: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Exemplo: original GLC G6 :

Forma Normal de Chomsky

S ASA | aBA B | SB b |

1) S0 S

S ASA | aB A B | SB b |

Page 35: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

2.1) Remover regra B :

S0 S S ASA | aB | a

A B | S | B b

2.2) Remover regra A :

S0 S S ASA | aB | a | SA | AS | S

A B | S B b

Forma Normal de Chomsky

Page 36: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

3.1) Remover regras S S e S0 S :

S0 ASA | aB | a | SA | AS S ASA | aB | a | SA | AS A B | S B b

3.2) Remover regras A B e A S :

S0 ASA | aB | a | SA | ASS ASA | aB | a | SA | AS

A b | ASA | aB | a | SA | AS B b

Forma Normal de Chomsky

Page 37: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

4) Converter as regras remanescentes p/ a forma apropriada:

Forma Normal de Chomsky

S0 AA1 | UB | a | SA | AS

S AA1 | UB | a | SA | AS

A b | AA1 | UB | a | SA | AS

A1 AS

U aB b

Page 38: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Gramáticas FNC permitem uma correspondência exata entre o comprimento de uma palavra (apenas terminais) e o comprimento da derivação que produz a palavra.

As árvores de derivação de uma gramática FNC são árvores binárias e os limites máximo e mínimo de profundidade (nível) da árvore de derivação para uma palavra de comprimento n pode ser calculado.

Forma Normal de Chomsky

Page 39: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Definição:

Uma gramática livre-de-contexto G é dita estar na Forma Normal de Greibach (FNG) se as suas produções são da forma A aB, , B (V )* e B não contem o símbolo inicial S. É permitido a produção S .

Assim como FNC, toda gramática G pode ser colocada na forma FNG.

Toda produção contém no mínimo um terminal. (|w| > 0), então G produz palavras de comprimento n > 0 em no máximo n passos.

Evita a ocorrência de recursão à esquerda.

Forma Normal de Greibach

Page 40: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Autômato de Pilha (Pushdown)

1. Q é o conjunto de estados

2. é o alfabeto de entrada

3. é o alfabeto da pilha

4. : Q x x l P(Q x l )

5. q0 Q é o estado inicial

6. F é o conjunto de estados finais (ou de aceitação).

Um autômato de pilha P é uma 6-tupla <Q, , , , q0, F>, onde:Controle

de Estados

a a b b

entrada

y

x

z

pilha

Definição:

Page 41: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Autômato de Pilha: palavra aceita

Um AP aceita uma palavra w = w1w2...wm, wi , sse existem sequências:

r0, r1,..., rm ri Q e

s0, s1,…, sm sj *

tais que:

1. r0 = q0 e s0 = (começa no estado inicial e a pilha vazia).

2. para i = 0,… , m-1, (ri+1, b) d(ri, wi+1, a), onde:si=at e si+1=bt para algum a, b e t *

3. rm F

Page 42: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Autômato de Pilha

a,b c : a máquina lê um a na entrada e substitui o símbolo b do topo da pilha pelo símbolo c.

Se a = , ela faz a transição sem ler qualquer símbolo da entrada.

Se b = , ela insere o símbolo c no topo da pilha (empilhar).

Se c = , ela retira o símbolo b do topo da pilha (desempilha).

L(P1) = ?

P1 :

Exemplo 1

Page 43: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Autômato de Pilha

P2 :

L(P2) = ?

Exemplo 2

Page 44: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Autômato de Pilha

Construir P tal que L(P) = { wwR : w {0,1}* }

Exercício:

Page 45: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Autômato de Pilha (extensão de )

’(q,a,s) = (r, xyz)

q

r

a, s xyz

q2

q1

q

r

a, s z

, y

, x

Page 46: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Autômato de Pilha (equivalência)

Lema 1

Se uma linguagem é livre-de-contexto então ela é reconhecida por um autômato de pilha P.

Idéia:

P é construido a partir da gramática que define a linguagem.

P aceita entrada w determinando (não-deterministicamente) se existe alguma série de substituições usando regras da gramática que leve do símbolo inicial à w.

Page 47: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Autômato de Pilha (equivalência)

Funcionamento de P:

1. Colocar a cadeia S$ na pilha.2. Repetir

1. Se o topo da pilha é uma variável A, selecionar (não-deterministicamente) uma das regras para A, (A w), e substituir A na pilha pelo lado direito da regra (w).

2. Se o topo da pilha é um terminal a, ler a entrada e compará-la com a. Se“casa”, desempilha a e repetir. Se não, rejeitar esse ramo do não-determinismo.

3. Se o topo da pilha é $ entrar no estado de aceitação. A palavra é aceita.

Page 48: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Autômato de Pilha (equivalência)

1. (qinicio, , ) = { (qloop, S$) }

2. (qloop, , A) = { (qloop, w) : A w R }(qloop, a, a) = { (qloop, ) } (qloop, , $) = { qaceita, )}

qinicial

qloop

qfinal

, S$

, A w para a regar A wa, a para o terminal a

, $

Page 49: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Autômato de Pilha (equivalência)

Lema 2Se um autômato de pilha reconhece uma linguagem, então ela é livre-de-contexto.

Prova:

ver o livro

Teorema 13

Uma linguagem é livre de contexto se e somente se existe um autômato de pilha que a reconhece.

Page 50: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Linguagens R e LC

Sabemos que :Linguagens Livre de contexto

LinguagensRegulares

E que existem outro tipo de linguagens além dessas ( LR e LLC ) :- Pelo teorema do bombeamento. Por exemplo : {anbncn : n 0}- Por existir um número incontável de linguagens e a classe LLC é contável (enumerável).

Page 51: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Linguagem sensível-ao-contexto

Seja G = < {S,B,C},{a,b,c},S,R >, onde R:

S S aSBCS AbcCB BCaB abbB bbbC bccC cc

L(G) = { anbncn : n 0 }

Page 52: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Hierarquia de Chomsky

Linguagens Regulares (tipo 3)

AFND,AFD ----- Gramáticas Regulares (lineares), Expressões regulares

Linguagens Livre-de-Contexto (tipo 2)

APND ------- Gramáticas livre-de-contexto

APD ---------- Gramáticas não-ambíguas

Linguagens Sensíveis-ao-Contexto (tipo 1)

LBA ----------- Gramáticas Sensíveis-ao-contexto

Linguagens em Geral (tipo 0)

Máquina de Turing ------ Gramáticas tipo 0.

Page 53: Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica

Hierarquia de Chomsky

Tipo 1 – reconhecida por LBA

Tipo 2 – reconhecida por AP’s

Tipo 3 – AF’s

Tipo 0 – reconhecida por Máquina de Turing