Lema do bombeamento para linguagens livres de contexto

O lema do bombeamento para linguagens livres de contexto, também conhecido como o lema de Bar-Hillel, é um lema que dá uma propriedade compartilhada por todas as linguagens livres de contexto.

Enunciado formal

Se uma linguagem L é livre de contexto, então existe algum inteiro p ≥ 1 tal que qualquer sequência de caracteres s em L com |s| ≥ p (onde p é o comprimento do bombeamento) pode ser escrita como

s = uvxyz

com sub cadeias u, v, x, y e z, tal que |vxy| ≤ p, |vy| ≥ 1, e

uv nxy nz está em L para todo inteiro n ≥ 0.

Expressão formal

O lema do bombeamento para linguagens livres de contexto (chamado apenas "lema do bombeamento" de agora em diante) descreve uma propriedade que todas as linguagens livres de contexto garantidamente possuem.

A propriedade é uma propriedade de todas as cadeias na linguagem que são de comprimento pelo menos p, onde p é uma constante chamada comprimento do bombeamento -- que varia entre as linguagens livres de contexto.

Seja s uma cadeia de comprimento pelo menos p que está na linguagem.

O lema do bombeamento diz que s pode ser dividida em cinco sub cadeias, s = u v x y z {\displaystyle s=uvxyz} , onde vy não é vazia e o comprimento de vxy é no máximo p, tal que repetindo v e y qualquer (e o mesmo) número de vezes em s produz uma cadeia que ainda está na linguagem (é possível e frequentemente útil repetir zero vezes, o que remove v e y da cadeia). Este processo de "bombear para cima" cópias adicionais de v e y é o que dá nome ao lema do bombeamento.

Observe que linguagens finitas (que são regulares e portanto livres de contexto) obedecem ao lema do bombeamento trivialmente por ter p igual ao comprimento da maior cadeia em L mais um. Como não existem cadeias desse comprimento o lema do bombeamento não é violado.

O lema do bombeamento é frequentemente usado para provar que uma determinada linguagem não é livre de contexto, mostrando que para todo p podemos encontrar alguma cadeia s de comprimento pelo menos p na linguagem que não possua as propriedades citadas acima, ou seja, que não possa ser "bombeada" sem produzir algumas cadeias que não estão na linguagem.

Uso do lema

O lema do bombeamento para linguagens livres de contexto pode ser usado para mostrar que certas linguagens não são livres de contexto.

Por exemplo, podemos mostrar que a linguagem L = { a i b i c i | i > 0 } {\displaystyle L=\lbrace a^{i}b^{i}c^{i}|i>0\rbrace } não é livre de contexto usando o lema do bombeamento em uma prova por contradição. Primeiro, suponha que L {\displaystyle L} é livre de contexto. Pelo lema do bombeamento, existe um inteiro p {\displaystyle p} que é o comprimento de bombeamento da linguagem L {\displaystyle L} . Considere a cadeia s = a p b p c p {\displaystyle s=a^{p}b^{p}c^{p}} em L {\displaystyle L} . O lema do bombeamento nos diz que s {\displaystyle s} pode ser escrita na forma s = u v x y z {\displaystyle s=uvxyz} , onde u , v , x , y {\displaystyle u,v,x,y} , e z {\displaystyle z} são subcadeias, tal que | v x y | p {\displaystyle |vxy|\leq p} , | v y | 1 {\displaystyle |vy|\geq 1} , e u v i x y i z {\displaystyle uv^{i}xy^{i}z} está em L {\displaystyle L} para todo inteiro i 0 {\displaystyle i\geq 0} . Pela nossa escolha de s {\displaystyle s} e o fato de que | v x y | p {\displaystyle |vxy|\leq p} , é facilmente visto que a subcadeia v x y {\displaystyle vxy} não pode conter mais de duas letras distintas. Ou seja, temos uma das cinco possibilidades para v x y {\displaystyle vxy} :

  1. v x y = a j {\displaystyle vxy=a^{j}} para algum j p {\displaystyle j\leq p} .
  2. v x y = a j b k {\displaystyle vxy=a^{j}b^{k}} para algum j {\displaystyle j} e k {\displaystyle k} com j + k p {\displaystyle j+k\leq p} .
  3. v x y = b j {\displaystyle vxy=b^{j}} para algum j p {\displaystyle j\leq p} .
  4. v x y = b j c k {\displaystyle vxy=b^{j}c^{k}} para algum j {\displaystyle j} e k {\displaystyle k} com j + k p {\displaystyle j+k\leq p} .
  5. v x y = c j {\displaystyle vxy=c^{j}} para algum j p {\displaystyle j\leq p} .

Para cada caso, é fácil verificar que u v i x y i z {\displaystyle uv^{i}xy^{i}z} não contém quantidades iguais de cada letra para qualquer i 1 {\displaystyle i\neq 1} . Assim, u v 2 x y 2 z {\displaystyle uv^{2}xy^{2}z} não tem a forma a i b i c i {\displaystyle a^{i}b^{i}c^{i}} . Isto contradiz a definição de L {\displaystyle L} . Portanto, nossa hipótese inicial de que L {\displaystyle L} é livre de contexto deve ser falsa.

Enquanto o lema do bombeamento é muitas vezes uma ferramenta útil para provar que uma determinada linguagem não é livre de contexto, o mesmo não dá uma caracterização completa das linguagens livres de contexto. Se uma linguagem não satisfaz a condição dada pelo lema do bombeamento, temos estabelecido que ela não é livre de contexto. Por outro lado, há linguagens que não são livres de contexto, mas ainda satisfazem a condição dada pelo lema do bombeamento. Existem técnicas de provas mais poderosas disponíveis, tais como o lema de Ogden, mas estas técnicas também não dão uma caracterização completa das linguagens livres de contexto.

Ver também

Referências

  • Bar-Hillel, Y.; Perles, M. and Shamir, E. (1961). «On formal properties of simple phrase-structure grammars». Zeitschrift fur Phonetik, Sprachwissenschaft, und Kommunikationsforschung. 14: 143–177  A referência emprega parâmetros obsoletos |coautor= (ajuda)
  • Michael Sipser (1997). Introduction to the Theory of Computation. [S.l.]: PWS Publishing. ISBN 0-534-94728-X  Section 1.4: Nonregular Languages, pp. 77–83. Section 2.3: Non-context-free Languages, pp. 115–119.