Lei do Bombeamento - Pumping Lemma¶
O que é?¶
- Lei do Bombeamento / Pumping Lemma = ferramenta teórica usada para provar que certas linguagens não são regulares
- não é um teste para provar que uma linguagem é regular, apenas que ela não pode ser
Enunciado - para linguagens regulares¶
- se uma linguagem
Lé regular, então existe um número inteirop ≥ 1- chamado de "constante de bombeamento" - tal que, para qualquer strings ∈ Lcom comprimento∣s∣ ≥ p, a stringspode ser dividida em três partes:s = x, y, z
- condições
∣xy∣ ≤ p∣y∣ > 0- para todo
i ≥ 0, a stringxy^i z ∈ L
Intuição¶
- a ideia é que, como o autômato finito tem um número finito de estados, uma string suficientemente longa deve fazer com que o autômato repita algum estado
- Isso implica em um "ciclo" que pode ser "bombeado" e ainda resultar em uma string da linguagem.
- "bombear" = repetir arbitrariamente
Aplicação¶
- Etapas para provar que uma linguagem não é regular
- Supor que a linguagem é regular
- Usar a lei do bombeamento para encontrar uma contradição
- Mostrar que, para qualquer forma de dividir
s = xyz, existe umital quexy^i z ∉ L
Exercícios Resolvidos¶
Exemplo 1¶
- Linguagem -
L1 = {a^n b^n ∣ n ≥ 0} - Prove que L1 não é regular.
- Solução...
1. Supor que L1 seja regular
- pelo Pumping Lemma, existe um inteiro
p- constante de bombeamento - tal que qualquer strings ∈ L1com∣s∣ ≥ ppode ser dividida ems = xyzcom∣xy∣ ≤ p∣y∣ > 0- para todo
i ≥ 0, a stringxy^i z ∈ L ∀ i ≥ 0, x(y^i)z ∈ L1
2. Escolher uma string específica em L1 com ∣s∣ ≥ p
s = a^p b^p
3. Dividir s = xyz, com ∣xy∣ ≤ p
- como os primeiros
pcaracteres são todosa, tantoxquantoysão só compostos por letrasa - portanto
x = a^ky = a^l, coml > 0z = a^(p-k-l) b^p
4. Aplicar i = 2
x y^2 z = a^k a^2l a^(p−k−l) b^p = a^(p+l) b^p
1. Verificar se x y^2 z ∈ L1
- há
p + lletrasaepletrasb- ou seja, a quantidade de
a's ≠ quantidade deb's ⇒
- ou seja, a quantidade de
x y^2 z ∉ L1
Conclusão
- contradição ⇒ a suposição de que L1 é regular está errada.
- Logo, L1 não é regular.
Exercício 2¶
L2 = {a^n b^m ∣ n = 2m}
1. Supor que L2 seja regular
- supor que L2 é regular ⇒ existe um
ptal que toda strings ∈ L2com∣s∣ ≥ ppode ser decomposta emxyzcom as condições do Pumping Lemma∣xy∣ ≤ p∣y∣ > 0- para todo
i ≥ 0, a stringxy^i z ∈ L2 ∀ i ≥ 0, x(y^i)z ∈ L2
2. Escolher uma string específica
- no caso, escolher
s = a^2p b^p ∈ L2, poisn = 2p,m = p
3. Dividir s = xyz, com ∣xy∣ ≤ p
∣xy∣ ≤ p, entãoxeyestão na parte dea's- logo
x = a^ky = a^l, coml > 0z = a^(2p−k−l) b^p
4. Aplicar i=2
x y^2 z = a^k a^2l a^(2p−k−l) b^p = a^(2p+l) b^p- agora
- número de
a's =2p + l - número de
b's =p ⇒ n ≠ 2mn ⇒ x y^2 z ∉ L2
- número de
Conclusão
- contradição ⇒ L2 não é regular
Exercício 3¶
- Linguagem
L3 = {ww ∣ w ∈ {a,b}∗} - ou seja - cadeias compostas por uma palavra repetida duas vezes
abab,aaaa,bb,abccabcc...
1. Supor que L3 é regular
- Pelo lema do bombeamento, existe um
ptal que qualquer string com∣s∣ ≥ ppode ser bombeada
2. Escolher string específica
- no caso,
s = a^p b a^p b ∈ L3 - nessa string,
w = a^p b, entãoww = a^p b a^p b
3. Dividir s = xyz, com ∣xy∣ ≤ p
- como
∣xy∣ ≤ p, e os primeirospsímbolos são todosa, entãox = a^ky = a^l, coml > 0z = a^(p−k−l) b a^p b
4. Aplicar i = 2
x y^2 z = a^k a^2l a^(p−k−l) b a^p b = a^(p+l) b a^p b- agora, essa nova string não está na forma
ww- a primeira metade agora tem mais
a's que a segunda
- a primeira metade agora tem mais
⇒ x y^2 z ∉ L3
Conclusão
- contradição! ⇒ L3 não é regular
Exercícios Sugeridos¶
Lista¶
-
Prove que as seguintes linguagens não são regulares usando o Pumping Lemma.
-
L1 = {a^n b^n ∣ n ≥ 1} L2 = {a^p | p é primo}L3 = {a^n b^m ∣ n ≠ m}L4 = {a^n b^n c^k ∣ n, k ≥ 0}L5 = {a^(n^2) ∣ n ≥ 1}
Gabarito¶
L1 = {a^n b^n ∣ n ≥ 1}- supor que L1 é regular
- escolher
s = a^p b^p ∈L1 - como
∣xy∣ ≤ p, entãoyestá só na parte dea's - bombeando
y→ número dea’s muda, número deb’s permanece → desequilíbrio →x y^i z ∉ L1 - contradição ⇒ não regular
L2 = {a^p | p é primo}- supor que L2 é regular
- escolher
s = a^q, comqprimo grande≥ p - bombear
ycom|y| = k > 0 - para
i = q + k, o número dea's deixa de ser primo- soma de múltiplos
- portanto,
x y^i z ∉ L2para algumi - ⇒ contradição ⇒ não regular
L3 = {a^n b^m ∣ n ≠ m}- Supor regular
- o complemento
{a^n b^n} ∪ {a^n b^m ∣ n,m ∈ N e n = m}seria regular - mas
{a^n b^n}não é regular ⇒ complemento não regular ⇒ L3 não é regular. - solução alternativa = fazer prova direta com
s = a^p b^p, que está fora da linguagem, e usar bombeamento levando para dentro
L4 = {a^n b^n c^k ∣ n, k ≥ 0}- supor regular
- escolher
s = a^p b^p c^k - como
∣xy∣ ≤ p, entãoyestá nosa’s - bombeando
y→ número dea’s muda,b’s ec’s não ⇒ desequilíbrio entrea’s eb’s ⇒ string fora da linguagem ⇒ L4 não regular
L5 = {a^(n^2) ∣ n ≥ 1}- supor regular
- escolher
s = a^(p^2) ∈ L5 - bombear
ycom|y| = k > 0 - para i=2
x y^2 z = a^(p^2 + k)- mas
p^2 + knão é necessariamente um quadrado perfeito ⇒x y^i z ∉ L5
- contradição ⇒ L5 não regular