Lema do Bombeamento
O lema do bombeamento diz que qualquer linguagem infinita de dada classe pode ser "bombeada" (pumped) e ainda pertencer quela classe (as linguagens finitas so todas regulares).
A linguagem pode ser bombeada se qualquer cadeia suficientemente longa na linguagem pode ser quebrada em pedaos, alguns dos quais podem ser repetidos um nmero arbitrrio de vezes para produzir uma cadeia mais longa na linguagem.
Para toda linguagem regular A, h um autmato AFD a aceita. Seja o AFD mais simples possvel, isto , aquele com o menor nmero de estados possvel. Seja p, a quantidade de estados desse AFD. Seja s A, t.q. |s| p Logo, existe uma sequncia de estados q1, ..., qf (qf final e q1 inicial), para reconhecer s. Como o AFD tem apenas p estados e |s| p, dever haver ao menos um estado "repetido", i.e. visitado mais de uma vez. (pelo princpio da casa dos pombos). Seja qr o estado repetido.
Vamos dividir s em trs subcadeias: s=xyz. x a parte que aparece antes de qr, y a parte que aparece entre as duas ocorrncias de qr e z a parte restante, que aparece aps a segunda ocorrncia de qr.
y
x
q1
qr
z qf
x
q1
qr
z qf
Lema do Bombeamento
O lema do bombeamento descreve uma propriedade fundamental das linguagens regulares. Para qualquer linguagem regular L, existe um nmero p tal que qualquer cadeia s de comprimento igual ou maior que p pode ser dividida em trs subcadeias, s = xyz, tal que a parte do meio (no-vazia), y, pode ser repetida um nmero arbitrrio de vezes (inclusive 0 vezes, o que significa remover y), gerando uma nova cadeia que tambm pertence a L. Esse processo de repetio conhecido como "bombeamento".
1. 2. 3.
Lema: Seja L uma linguagem regular. Ento existe um inteiro p 1 (chamado "comprimento de bombeamento") tal que cada cadeia s de L com comprimento maior ou igual a p pode ser escrita como s = xyz satisfazendo as seguintes condies: para todo i 0, xyiz L |y| 1 |xy| p
Linguagens regulares Lema do Bombeamento ...cada cadeia s de L, |s| p pode ser escrita como s = xyz satisfazendo as seguintes condies: 1. para todo i 0, xyiz L 2. |y| 1 3. |xy| p Podemos repetir arbitrariamente (e inclusive omitir) a subcadeia y, e a cadeia xyz resultante pertencer a L. Para poder ser bombeada, y precisa ter comprimento maior ou igual a 1; y precisa estar entre os p primeiros caracteres;
Lema do Bombeamento
O lema do bombeamento para linguagens regulares determina se uma dada linguagem no regular. Se regular ento condio. Se no condio ento no regular (contra-positiva)
Ele no pode ser usado para determinar se a linguagem regular. Embora ele seja verdadeiro para todas as LRs. Mas, ele vlido para algumas linguagens no regulares.
Vamos mostrar como o lema se aplica a LRs. Seja L= a(bc)*a. Ento um AFD para L seria:
p=4 s = xyz x=a, y=bc e z=a
b a
1.i 0, xyiz L
2. |y| 1
3. |xy| p
1.i 0, xyiz L
2. |y| 1
3. |xy| p
Mostre que L = {0n1n | n 0} no regular Vamos fazer uma prova por contradio. Vamos supor que L regular, logo o lema se aplica. Seja s = 0p1p. (|s| p, logo o lema pode se aplicar) Se y possui apenas 0s. Nesse caso, xyyz L. Temos uma contradio. Se y possui apenas 1s. Nesse caso |xy| p, violando a condio 3. Se y possui 0s e 1s, a condio 3 tb violada. Alm disso, xyyz no pertencer linguagem.
Mostre que L = {ww | w {0,1}*} no regular Vamos supor que L regular. Seja s = 0p10p1 (como |s| p, logo o lema pode se aplicar) Se x= e y possui apenas 0s. Nesse caso, xyyz L. Temos uma contradio. Se x=z=, xyiz L. Mas, |xy| p, violando a condio 3. Observe que a escolha da cadeia deve ser tal que ela mostre a no regularidade da linguagem Por exemplo, a cadeia 0p0p L pode ser bombeada, no seria uma boa escolha.
Precisamos prestar bastante ateno na escolha da cadeia. Deve ser uma cadeia onde todas as divises (em x,y e z) possveis no obedecem ao lema. Se existir apenas uma diviso onde o lema se aplica, a cadeia pode ser bombeada e portanto no seria um bom exemplo. No exemplo anterior, se s = 0p0p, x = 0p-2, y=02, teramos o lema aplicado.