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

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

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

Apresentações semelhantes


Apresentação em tema: "Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica."— Transcrição da apresentação:

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

2 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 AFs).

3 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

4 GLC: exemplos | | um(a) | o(a) garoto | garota | flor toca | gosta | vê com GLC que descreve uma parte da língua portuguesa

5 GLC: exemplos um garoto vê um garoto um garoto vê Derive: o garoto vê uma flor um um garoto

6 G 1 = (V,, R, S) V = {A,B}, = {0,1}, R = {A 0B, B 1}, S = A G 2 = ({A}, {a}, {A aA, A a}, A) G 3 = ({A,B}, {0,1}, {A 0A1, A }, A) GLC: exemplos

7 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 u 1, u 2,... u k tal que: u 1 = u u k = v u i u i+1 para 1 i k Derivação: definição

8 u * v sse u = v, ou existir uma derivação de v a partir de u u = u 1 u 2... u k = v Exemplos: G 2 = ({A}, {a}, {A aA, A a}, A) 1. AA * aAaA pois AA AaA aAaA 2. AA * aa pois AA aA aa Derivação

9 Defini ç ão: Uma gram á tica livre-de-contexto G= gera uma palavra w * se, e somente se, S * w A palavra 00 #11 * é gerada pela gramática G 1, pois: Exemplo: G 4 = ({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

10 Exemplo: G 5 = ({S}, {0, 1}, R, S) R: S 0S1 S Palavra gerada 0S1 00S S1 00S11 000S S S S

11 Seja G= 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

12 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

13 Exemplo: obter uma gram á tica para a linguagem: {0 n 1 n : n 0} {1 m 0 m : m 0} Gram á tica Livre-de-contexto S 1 0S 1 1 | S 2 1S 2 0 | S S 1 | S 2 S 1 0S 1 1 | S 2 1S 2 0 | Primeiro, construir uma gramática para {0 n 1 n : n 0}: Segundo, construir uma gramática para {1 m 0 m : m 0}: E por fim, adicionar a regra S S 1 | S 2 :

14 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 R i para cada estado q i do AFD. 2. Adicione a regra R i aR j à GLC se (q i, a) = q j é uma transi ç ão no AFD. 3. Adicione a regra R i se q i é um estado de reconhecimento do AFD. 4. Fa ç a R 0 o s í mbolo inicial, onde q 0 é o estado inicial. Gram á tica Livre-de-contexto

15 Exemplo: L = {w {0, 1}* : w = x1, x {0, 1}* }. G =, V = {R 1, R 2 }, = {0, 1}, S = R 1 R: R 1 0R 1 R 1 1R 2 R 2 0R 1 R 2 1R 2 R 2 Gram á tica Livre-de-contexto

16 Considere a gram á tica G 4 =, onde : V = {,, } = {a, +,, (, )} R = + | | ( ) | a S = Á rvore de deriva ç ão (Parse tree)

17 As palavras a + a a e (a + a) a podem ser geradas em G4. As seguintes figuras( á rvores) ilustram esse fato: Árvore

18 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

19 Exemplo: G 5 + ( ) a A palavra a + a a é derivada ambiguamente em G 5. Ambig ü idade

20 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

21 Defini ç ão: Uma GLC G = é dita ser linear- à -direita se suas produ ç ões forem da forma A xB, onde A V, B (V ) e x * Exemplo: G = L(G) = L(a*baa) Gram á tica Linear- à -Direita

22 Teorema 9 Dado um AFD M =, então existe uma gram á tica linear- à -direita G M para a qual L(M) = L(G M ). Prova: Assuma que Q = {q 0, q 1,..., q n }, para algum n. Defina G M =, onde: R M = {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

23 Então existe uma seq ü ência de estados: q 0, q 1,..., q n, onde q 0 é inicial e q n é final e as transi ç ões q 0 q 1 q 2... q n. Então, existe a deriva ç ão seguinte em G M : q 0 a 1, (q 0, a) a 1 a 2 (q 1,a 2 ).... a 1 a 2...a M q M a 1 a 2...a M. Gram á tica Linear- à -Direita Seja w = a 1 a 2...a n L(M) Assim, w L(G M ).

24 Exemplo: Seja M =, onde: (S, a) = T (T, a) = S (S, b) = T (T, b) = S. Então, G M =, onde: S aT | bT T aS | bS | Gram á tica Linear- à -Direita

25 Teorema 10 Seja G = uma gramática linear-à- direita. Então, existe um AFND NG para o qual L(G) = L(NG).

26 Prova: Defina N G =, onde: Q G = { | z = ou z V ou existe um y * e um B V tal que B yz é uma produ ç ão em R}. q 0G = { }. F G = { }. G (, a) = { |existe um y * e um B V tal que w = ax e B yw R}. G Tamb é m cont é m: G (, ) = { | B v R }. Gram á tica Linear- à -Direita

27 Exemplo: G =. Então: N G = } >, onde: Q G = {,,,,,, } G (, ) = {, } G (, ) = { } G (, a) = { } G (, b) = { } G (, a) = { } G (, a) = { } e todas as outras são vazias: G (, a) =, etc. Gram á tica Linear- à -Direita

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

29 Defini ç ão: Uma gram á tica livre-de-contexto est á na Forma Normal de Chomsky (FNC) se cada regra é da forma: A BC A 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

30 Teorema 12 Qualquer linguagem de livre contexto é gerada por uma gram á tica de livre contexto na forma normal de Chomsky Id é ia da prova Efetuar modifica ç ões na gram á tica original preservando a linguagem gerada 1. Adicionamos um novo s í mbolo inicial S 0 e a regra S 0 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

31 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

32 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

33 4. Convertemos todas as regras restantes para a forma apropriada. Substitu í mos cada regra A u 1 u 2...u k, onde k 3 e cada u i é uma vari á vel ou s í mbolo terminal, com as regras A u 1 A 1, A 1 u 2 A 2, A 2 u 3 A 3,... A k-1 u k. Os A i são novas vari á veis. Se k 2, substitu í mos qualquer terminal u i na regra anterior com a(s) nova(s) vari á vel(is) U i e adicionamos a regra U i u i. Forma Normal de Chomsky

34 Exemplo: original GLC G 6 : Forma Normal de Chomsky S ASA | aB A B | S B b | 1) S 0 S S ASA | aB A B | S B b |

35 2.1) Remover regra B : S 0 S S ASA | aB | a A B | S | B b 2.2) Remover regra A : S 0 S S ASA | aB | a | SA | AS | S A B | S B b Forma Normal de Chomsky

36 3.1) Remover regras S S e S 0 S : S 0 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 : S 0 ASA | aB | a | SA | AS S ASA | aB | a | SA | AS A b | ASA | aB | a | SA | AS B b Forma Normal de Chomsky

37 4) Converter as regras remanescentes p/ a forma apropriada: Forma Normal de Chomsky S 0 AA 1 | UB | a | SA | AS S AA 1 | UB | a | SA | AS A b | AA 1 | UB | a | SA | AS A 1 AS U a B b

38 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

39 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

40 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. q 0 Q é o estado inicial 6. F é o conjunto de estados finais (ou de aceitação). Um autômato de pilha P é uma 6-tupla, onde: Controle de Estados a abb entrada y x z pilha Definição:

41 Autômato de Pilha: palavra aceita Um AP aceita uma palavra w = w 1 w 2...w m, w i, sse existem sequências: r 0, r 1,..., r m r i Q e s 0, s 1,…, s m s j * tais que: 1. r 0 = q 0 e s 0 = (começa no estado inicial e a pilha vazia). 2. para i = 0,…, m-1, (r i+1, b) d(r i, w i+1, a), onde: s i =at e s i+1 =bt para algum a, b e t * 3. r m F

42 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(P 1 ) = ? P 1 : Exemplo 1

43 Autômato de Pilha P 2 : L(P 2 ) = ? Exemplo 2

44 Autômato de Pilha Construir P tal que L(P) = { ww R : w {0,1}* } Exercício:

45 Autômato de Pilha (extensão de ) (q,a,s) = (r, xyz) q r a, s xyz q2q2 q1q1 q r a, s z, y, x

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

47 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. Secasa, 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.

48 Autômato de Pilha (equivalência) 1. (q inicio,, ) = { (q loop, S$) } 2. (q loop,, A) = { (q loop, w) : A w R } (q loop, a, a) = { (q loop, ) } (q loop,, $) = { q aceita, )} q inicia l q loop q final, S$, A w para a regar A w a, a para o terminal a, $

49 Autômato de Pilha (equivalência) Lema 2 Se 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.

50 Linguagens R e LC Sabemos que : Linguagens Livre de contexto Linguagens Regulares E que existem outro tipo de linguagens além dessas ( LR e LLC ) : - Pelo teorema do bombeamento. Por exemplo : {a n b n c n : n 0} - Por existir um número incontável de linguagens e a classe LLC é contável (enumerável).

51 Linguagem sensível-ao-contexto Seja G =, onde R: S S aSBC S Abc CB BC aB ab bB bb bC bc cC cc L(G) = { a n b n c n : n 0 }

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

53 Hierarquia de Chomsky Tipo 1 – reconhecida por LBA Tipo 2 – reconhecida por APs Tipo 3 – AFs Tipo 0 – reconhecida por Máquina de Turing


Carregar ppt "Linguagens Livre-de-contexto Livre-de-contexto Teoria da Computação 2005.1 Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica."

Apresentações semelhantes


Anúncios Google