220 likes | 370 Vues
Lema do Bombeamento – Gramáticas Livres do Contexto. Programa de Pós-Graduação em Ciência da Computação Profa. Sandra de Amo. Forma Normal de Chomsky. Toda gramática livre do contexto é equivalente a uma gramática onde as regras são do tipo: A BC ou A a
E N D
Lema do Bombeamento – Gramáticas Livres do Contexto Programa de Pós-Graduação em Ciência da Computação Profa. Sandra de Amo
Forma Normal de Chomsky • Toda gramática livre do contexto é equivalente a uma gramática onde as regras são do tipo: A BC ou A a • Observação: frequentemente suporemos que a gramática está na forma normal de Chomsky
Relação entre tamanho da palavra e tamanho da derivação Se |w| = n então o tamanho da derivação de w é 2n-1 S Prova : Por indução sobre n a Base da indução |w| = 1 1 regra aplicada Tamanho da derivação = 1 2. 1 – 1 = 1 Logo : Tamanho da derivação = 2n-1 w = a
C A B b Hipótese de Indução Suponhamos que para toda palavra de comprimento k o tamanho de uma derivação é 2k-1 Seja w uma palavra de comprimento k+1. No exemplo: w=aba...c b Construimos uma outra Gramática G’ substituindo a regra C AB por C c A palavra u= aba....c é gerada por G’ e tem comprimento k, já que |w| = k+1 Pela Hipótese de Indução : tamanho da derivação de u = 2k – 1 Tamanho da derivaçãode w = 2k – 1 + 2 = 2(k+1) – 1 C c a b a c
Caminhos na árvore de derivação Caminho = S – A1 – A2 - ... – An onde S, A1,...,An são variáveis (nós internos) cada A1 é filho de S e cada Ai é filho de Ai-1 S A1 B A2 a b b c
Quando um caminho contém variáveis repetidas ? • Seja K = Número de variáveis da gramática. • Se o caminho tem tamanho maior ou igual a K então com certeza contém variáveis repetidas
Quando um caminho da raiz até o nível logo acima de uma folha contém variáveis repetidas ? S 5 S -> AB S->a A-> AC A -> a B-> AC C -> c C-> SB B A 4 A A C C 3 A C 2 c a c B S a 1 C a A K = 4 Variáveis repetidas a c
Qual a relação entre o tamanho da palavra gerada e o tamanho máximo dos caminhos da árvore de derivação ? Teorema : Se todos os caminhos têm comprimento ≤ n então a palavra derivada tem comprimento ≤ 2n-1 Tamanho do maior caminho = Número de níveis da árvore de derivação Se número de níveis = n então : Nivel 1 Nivel 2 Nivel n-2 Número máximo de elementos na última camada = 2n-1 Nivel n-1 Nivel n
Consequentemente : Se a palavra derivada tem comprimento > 2n-1 então existe um caminho de comprimento > n Portanto: Seja K = Número de variáveis da gramática Se a palavra derivada tem comprimento > 2K-1 então existe um caminho de comprimento > K Se um caminho tem tamanho > K então com certeza contém variáveis repetidas.
S A A x y v w u A x w v Como detectar se uma linguagem não é livre do contexto ? S A u v x x y y
S B A A A C C S -> AB S->a A-> AC A -> a B-> AC C -> c C-> AB A C c a c B A a a A C B A a A C a z = a c a a a a a c c a c K = número de variáveis da gram. = 4 |z| = 9 > 24-1 = 8
S a ca a a a a cc z = B A u v w x y A A A C a ca aa a a a a ca a c c C x y x w u v v A C A C c a ca aa aa a a a a ca a ca a c c a c u y x x v x v v w B B B B S S S A a a C a a C C A A S A B B B A a a A C C A a a A C c c a a a a c
Como detectar se uma linguagem nao é livre do contexto ? • Se L é livre do contexto então • Existe n > 0 (n > 2K-1, K = número de variáveis da gramática que gera L) tal que • Para toda palavra z em L com |z| > n • Existe uma maneira de dividir z em 5 partes • z = u v w x y • Para todo i ≥ 0 • u vi w xi y pertence a L
Restrição “na quebra em 5” Se |z| > n = 2k-1 então existe maneira de dividir z em 5 partes : z = u v w x y tal que : |v w x| ≤ n Prova: • Se |z| = n > 2k-1então existe caminho de comprimento > k • Consideremos um destes caminhos • Subimos k+1 nós a partir do último nó • Com certeza encontramos no caminho 2 nós com a mesma variável A • Considere o nó contendo a segunda ocorrência da variável A e pegue a subárvore SA com raiz neste nó. • Este vai ser o nó que norteará a divisão de Z em 5 partes. • A palavra gerada pela subárvore SA é z’ = v w x • Altura de SA é ≤ k +1 • Logo |z’| ≤ 2k ≤ n
Altura > k A A
Altura de SA≤ k+1 Subárvore SA Altura > k A A Palavra derivada por SA tem comprimento ≤ 2k ≤ n
Como detectar se uma linguagem nao é livre do contexto ? • Se o texto abaixo não é verdadeiro então L não é livre do contexto • Existe n > 0 (n = 2K-1, K = número de variáveis da gramática que gera L) tal que • Para toda palavra z em L com |z| > n • Existe uma maneira de dividir z em 5 partes • z = u v w x y • | vwx | ≤ n • | vx | > 0 tal que (JUSTIFIQUE !!) • Para todo i ≥ 0 • u vi w xi y pertence a L
Logo, se a condição abaixo é verificada então L não é livre do contexto • Para todo n > 0 • Existe uma palavra z em L com |z| > n • Para toda maneira de dividir z em 5 partes • z= u v w x y • | vwx | ≤ n • | vx | > 0 tal que • Existe i ≥ 0 • u vi w xi y não pertence a L
Condição suficiente para L não ser livre do contexto • Para todo n > 0 • Existe uma palavra z em L com |z| > n • Para toda maneira de dividir z em 5 partes • z = u v w x y • | vwx | ≤ n • | vx | > 0 tal que • Existe i ≥ 0 • u vi w xi y não pertence a L
Exemplos • Vimos que L = {0k1k | k ≥ 0 } não é regular. • Entretanto L é livre do contexto • L = L(G) S ε S 0 S 1
Exemplo Mostrar que {0k1k2k | k ≥ 0} não é livre do contexto (não é gerada por uma Gramática LC) Seja n > 0 Considere w = 000...0 111...1 22...2 = 0n1n2n Seja w = u v w y x com |vwy| ≤ n Então necessariamente uma das possibilidades a seguir se verifica: • vwy está contida no grupo de 0’s. Neste caso quando bombeamos v e y obtemos uma palavra com mais 0’s do que 1’s ou 2’s. • vwy está contida no grupo de 2’s. Análogo a (1) • vwy está contida no grupo de 1’s. Análogo a (1) • v contém 0’s e 1’s: bombeando v obtemos uma palavra que não está na linguagem (conterá 0’s seguidos de 1’s) • v contém 1’s e 2’s: Análogo a (4)
Todas as linguagens Linguagens Turing Decidíveis Linguagens livres do contexto Linguagens Regulares