Você está na página 1de 17

Captulo 4

Propriedades das Linguagens


Regulares

Estamos no momento de colocar a seguinte quest ao: quao geral s


ao as linguagens regulares?
Seria toda linguagem formal regular? Talvez qualquer conjunto que possamos especificar seja
aceito por algum aut omato finito, embora complexo. Como veremos essa conjectura e falsa.
Para entender essa resposta, devemos nos aprofundar na natureza das linguagens regulares e ver
que propriedades a famlia como um todo tem.
A primeira quest ao que levantaremos e o que acontece quando operamos com linguagens
regulares. As operacoes que consideraremos s
ao operacoes tais como concatenacao, uni
ao, etc.

E a linguagem resultante ainda regular? Nos referiremos a isso como uma quest ao de fecho.
Propriedades de fecho, embora, principalmente, de interesse te orico, permiti-nos-
a discriminar
muitas linguagens regulares que encontraremos.
A segunda quest ao que levantaremos trata de nossa habilidade para decidir sobre certas
propriedades. Por exemplo, podemos fazer um algoritmo que decida se uma linguagem regular
arbitr
aria e finita ou n
ao? Como veremos, tais questoes s
ao facilmente respondidas para a classe
das linguagens regulares, mas n ao para outras classes de linguagens.
Finalmente, consideremos a importante quest ao: como podemos dizer se uma dada linguagem
e regular ou n
ao? Se a linguagem e de fato regular, podemos sempre mostrar isso exibindo um
afd que a reconhece, ou uma express ao regular que a denota ou uma gram atica regular que
a gera. Mas se n ao for o caso, precisaramos de outra abordagem, pois o fato de n ao termos
conseguido encontrar um afd que reconheca a linguagem n ao significa necessariamente que tal
automato nao exista. Uma maneira de mostrar que uma linguagem n ao e regular e estudar as
propriedades gerais das linguagens regulares.

4.1 Propriedades de Fecho de Linguagens Regulares

Considere a seguinte questao: dadas duas linguagens regulares arbitr arias L 1 e L2 , e sua inter-
seccao tambem regular? Em exemplos especficos a resposta pode ser obvia, mas aqui pretende-
mos atacar o problema em geral. Formularemos quest oes an
alogas para as demais operacoes.

83
4.1. Propriedades de Fecho de Linguagens Regulares

Teorema 4.1.1 Se L1 e L2 s ao L1 L2 , L1 L2 , L1 , L1 , L1 L2 e
ao linguagens regulares, ent
L1 L2 tambem s ao. Dizemos com isso que a famlia das linguagens regulares e fechada sob
uni
ao, concatenaca
o, fecho estrela, complemento e intersecca
o.

Demonstrac ao: Se L1 e L2 s ao linguagens regulares, ent


ao existem express
oes regulares r 1 e
r2 tais que L(r1 ) = L1 e L(r2 ) = L2 .

Uni
ao e fecho estrela: Da definicao 3.2.1, temos

L1 L2 = L(r1 ) L(r2 ) = L(r1 + r2 )

L1 L2 = L(r1 )L(r2 ) = L(r1 r2 )

L1 = (L(r1 )) = L(r1 )

Portanto, o fecho sob uni


ao, concatenacao e fecho-estrela e imediato.

Complemento: Seja M = hQ, , , q0 , F i um afd que aceita L1 . Ent


ao, trivialmente, o afd

c = hQ, , , q0 , Q F i,
M

aceita L1 . Observe que na definicao de um afd, assumimos que era uma funcao total, ou seja
a definida para todo w . Conseq
(q0 , w) est uentemente, ou (q0 , w) e um estado final, e
nesse caso w L1 , ou n ao ( (q0 , w) Q F ) e nesse caso w L1 .

Intersec ao: Sejam M1 = hQ, 1 , 1 , q0 , F1 i e M2 = hP, 2 , 2 , p0 , F2 i afds que reconhecem


c
L1 e L2 , ou seja L1 = L(M1 ) e L2 = L(M2 ). Vamos construir a partir de M1 e M2 o aut omato

c = hQ,
M b (q0 , p0 ), Fbi,
b 1 2 , ,

cujo conjunto de estados, Q b = Q P , consiste de pares (qi , pj ), e cuja funcao de transicao b e tal
que Mc est
a no estado (qi , pj ), se M1 est
a no estado qi e M2 est a no estado pj . Isto e conseguido
tomando

b i , pj ), a) = (1 (qi , a), 2 (qj , a)).


((q

Fb e definido como o conjunto de todos os (qi , pj ) tal que qi F1 e pj F2 , isto e, Fb = F1 F2 .


f
E c). Assim, L(M
acil ver que w L1 L2 se, e somente se, w L(M c) = L(M1 ) L(M2 ).
uentemente, L1 L2 e regular.
Conseq

Introduca
o a
` Teoria da Computaca
o:
Linguagens Formais, automatos e Computabilidade
84
Captulo 4. Propriedades das Linguagens Regulares

Diferenca: A famlia das linguagens regulares e fechada com respeito a` diferenca, se quando
L1 e L2 s ao L1 L2 tambem e regular. Mas
ao linguagens regulares, ent

L1 L2 = L1 L2 .

Como j
a mostramos aqui que as linguagens regulares s ao fechadas sobre a interseccao e
complemento, podemos concluir que L1 L2 e uma linguagem regular.

Exemplo 4.1.2 Sejam M1 e M2 os afds descritos nas figuras 4.1 e 4.2, respectivamente. A
intersecca
o das linguagens L(M1 ) com L(M2 ), e reconhecida pelo aut omato do exerccio 2.2.6,
o qual, se substituirmos P P por (q0 , q0 ), P I por (q0 , q1 ), IP por (q1 , q0 ) e II por (q1 , q1 ),
e exatamente o mesmo aut omato que o construdo usando o mecanismo descrito no teorema
anterior, para a intersecca
o.

a a
b

q q1
0

Figura 4.1: afd M1

b b
a

q q
0 1

Figura 4.2: afd M2

Exemplo 4.1.3 Sejam as linguagens L1 = {waau / w, u {a, b} } e L2 = {wbbbu / w, u


{a, b} }. Os automatos ilustrados na figura 4.3.A e 4.3.B, reconhecem as linguagem L 1 e
L2 , respectivamente. Note que L1 = L((a + b) aa(a + b) ) e L2 = L((a + b) bbb(a + b) ). A
o destas linguagens, isto e L1 L2 , e reconhecida pelo aut
intersecca omato ilustrado na figura
4.4.

Defini
c o h : 1 2 e chamada um homo-
ao 4.1.4 Sejam 1 e 2 alfabetos. Uma funca
morfismo.

Introduca
o a
` Teoria da Computacao:
Linguagens Formais, aut omatos e Computabilidade
85
4.1. Propriedades de Fecho de Linguagens Regulares

b a,b
a

a
q q q
0 1 2

(A)

a a,b
b

p b b
p p p
0 1 2 3

(B)

Figura 4.3: afds que reconhecem as linguagens L1 = L((a + b) aa(a + b) ) e L2 = L((a +


b) bbb(a + b) ).

Em outras palavras, um homomorfismo e uma substituicao no qual um simples smbolo e


possvel estender a funcao h para uma funcao b
trocado por uma cadeia. E h cujo domnio sejam
cadeias em 1 em vez de smbolos de modo obvio.

Definiao 4.1.5 Sejam 1 e 2 alfabetos e h : 1 2 um homomorfismo. Um homomor-


c
fismo estendido de h, denotado por b o b
h e a funca h : 1 2 definida por:

1. b
h() =
2. b
h(a) = h(a) para cada a 1
3. b
h(wa) = b
h(w)h(a) para cada w 1 e a 1 .

ao b
Assim, se w = a1 a2 . . . an , ent h(w) = h(a1 )h(a2 ) . . . h(an ). Note que trivialmente b
h(wv) =
wb
bv .
Se L e uma linguagem, sobre 1 , sua imagem homomorfa e definida como

h(L) = {b
h(w) / w L}.

Note que b bv . Portanto, trivialmente, temos que h(L1 L2 ) = h(L1 )h(L2 ).


h(wv) = wb
Por simplicidade notacional e em vista de que b h e uma extens
ao obvia de h, de aqui em
diante usaremos o mesmo nome de funcao (h) para ambos o homomorfismo e sua extens ao.

Introduca
o a
` Teoria da Computaca
o:
Linguagens Formais, automatos e Computabilidade
86
Captulo 4. Propriedades das Linguagens Regulares

a
b
a a b
q p0 q p q p q p q p a,b
0 1 0 0 2 1 2 2
2 b
a
b a q p
a b a 2 3

a
b b q p a
q P q p q p
0 1 0 2 0 3 1 3

b
b

Figura 4.4: afd que reconhece L((a + b) aa(a + b) ) L((a + b) bbb(a + b) ).

Exemplo 4.1.6 Sejam 1 = {a, b} e 2 = {a, b, c}. Defina h por h(a) = ab e h(b) = bbc.
ao h(aba) = h(a)h(b)h(a) = abbbcab. A imagem homomorfa de L = {aa, aba} e a linguagem
Ent

h(L) = {abab, abbbcab}.

Exemplo 4.1.7 Tome 1 = {a, b} e 2 = {b, c, d}. Defina h : 1 2 por

h(a) = dbcc
h(b) = bdc

Se L e a linguagem regular denotada por r = (ab + b )(aa) , ent


ao

r1 = (h(a)h(b) + h(b) )(h(a)h(a)) = (dbccbdc + (bdc) )(dbccdbcc) ,

denota a linguagem regular h(L).

Teorema 4.1.8 Seja h : 1 2 um homomorfismo. Se L e uma linguagem regular, sobre


o alfabeto 1 , ent
ao sua imagem homomorfa e uma linguagem regular sobre o alfabeto 2 . A
famlia das linguagens regulares e, portanto, fechada sob homomorfismos arbitr
arios.

Demonstrac o: Seja L uma linguagem regular, sobre 1 , denotada por alguma express
a ao
regular r, isto e L(r) = L. Seja h(r) a express
ao obtida ao substituir em r, cada smbolo a 1
por h(a) 2 , de modo similar ao exemplo 4.1.7. Note que no caso particular das express oes
regulares primitivas e , h() = e h() = . Pode ser mostrado diretamente apelando a`
definicao de uma expressao regular que o resultado (h(r)) e uma express f
ao regular. E acil ver
que a express ao regular h(r) denota h(L(r)). Tudo que precisamos fazer e mostrar que para todo
w L(r), o correspondente h(w) est a em L(h(r)) e, inversamente, que para todo v L(h(r))

Introduca
o a
` Teoria da Computacao:
Linguagens Formais, aut omatos e Computabilidade
87
4.2. Quest
oes Elementares sobre Linguagens Regulares

existe w L tal que v = h(w). Noutras palavras, devemos mostrar que L(h(r)) = h(L(r)).
Deixamos os detalhes como exerccio.
A importancia do homomorfismo, e que pode server para simplificar demonstracoes. Por
exemplo, se sabemos que a linguagem L = {10n 1k 0 / n, k 1}, ent ao via o homomorfismo
,
h(0) = aa e h(1) = bb, saberemos que a linguagem L = {bb(aa)n (bb)k aa n, m sao pares maiores
ou iguais a {2} tambem e uma linguagem regular, nao precisamos construir um automato finito
que reconheca ela, ou uma gram atica regular que a gere ou uma expressao regular que denote
essa linguagem.
As linguagens regulares tambem s
ao fechadas sobre revers
oes, prefixos e sufixos, como mostra
o seguinte teorema.

ao LR , LP e LS tambem s
Teorema 4.1.9 Se L e uma linguagem regular, ent ao regulares.

Demonstrac o: Se L e regular, ent


a atica linear a` direita que gera L. Logo,
ao existe uma gram
o procedimento descrito no teorema 3.6.5 teramos uma gram atica linear a` esquerda que gera
R R
L e portanto L e uma linguagem regular.
Se L e regular, ent
ao existe um afd, M , que reconhece L. Construa um novo afd a partir
de M dando o status de estado final a cada estado que esteja em algum caminho do estado
inicial a algum estado final de M . Claramente, L(M ) = LP .
Por outro lado, como trivialmente LS = ((LR )P )R , e linguagens regulares s
ao fechadas sobre
prefixos e revers
oes, ent S
ao L e tambem uma linguagem regular.

4.2 Quest
oes Elementares sobre Linguagens Regulares

Podemos discutir agora o seguinte problema fundamental: dada uma linguagem arbitr aria L e
uma cadeia w, podemos determinar algoritmicamente se w pertence a L ou n ao? Esta quest ao
e conhecida como quest ao de pertin encia e o metodo de responde-la e o algoritmo de per-
tinencia. A quest
ao da existencia e natureza desse algoritmo ser a de muito interesse no que
seguir
a. E um problema em geral difcil. Para as linguagens regulares, no entanto, ele e f
acil.
O que queremos dizer por dado uma linguagem . . .? Em muitos argumentos e importante
que essa frase seja clara. Usamos v arias maneiras de descrever as linguagens regulares: descricao
verbal informal, notacao de conjunto, aut omatos finitos, expressoes regulares e gramaticas reg-
ulares. Somente as tres u ltimas sao suficientemente bem definidas para usar em provas de
teoremas. Portanto, dizemos que uma linguagem regular e dada numa representa c
ao padr ao
se, e somente se, ela e descrita por um automato finito, uma express ao regular ou uma gram atica
regular.

Teorema 4.2.1 Dado uma representaca o padr aria L, sobre


ao de uma linguagem regular arbitr
, e uma cadeia w , existe um algoritmo para determinar se w L ou n
ao.

Demonstrac ao: Primeiro representamos a linguagem por algum aut omato finito (se a rep-
resentacao padr
ao da linguagem e outra, ent
ao podemos, usando os algoritmo deste captulo,
sempre transformar este num aut omato finito equivalente). Depois simulamos o comportamento

Introduca
o a
` Teoria da Computaca
o:
Linguagens Formais, automatos e Computabilidade
88
Captulo 4. Propriedades das Linguagens Regulares

do aut
omato para a entrada w. Se ao finalizar a simulacao o automato p
ara num estado final,
ent
ao o algoritmo aceita a cadeia sen
ao o algoritmo rejeita a cadeia.

Existem diversos simuladores de aut


omatos finitos disponveis na internet, por exemplo o
SAGEMoLic desenvolvido pelo grupo de Teoria da Computacao da Universidade de Brasilia e
disponvel em: http://www.mat.unb.br/ ayala/TCgroup/SAGEMoLiC/.
Outras quest
oes importantes s
ao:

1. L e uma linguagem vazia ou n


ao vazia?

2. L e uma linguagem finita ou infinita?

ao L1 e L2 a mesma linguagem?
3. S

4. L1 e um subconjunto de L2 ?

Teorema 4.2.2 Existe um algoritmo para determinar se uma dada linguagem regular, na rep-
resentaca
o padr
ao, e vazia, finita ou infinita.

Demonstrac o: A resposta e imediata a partir da representacao da linguagem como grafo de


a
transicao de um afd. Se existe um caminho do vertice inicial a qualquer vertice final, ent
ao a
linguagem e n ao-vazia.
Para determinar se a linguagem e infinita ou n ao, achamos todos os vertices que s
ao a base
de algum ciclo. Se alguns desses est ao sobre um caminho de um vertice inicial a um final, a
linguagem e infinita. Caso contr
ario, ela e finita.

Algoritmos para encontrar caminhos e ciclos s


ao bem conhecidos em teoria dos grafos.
Outra forma de verificar se uma linguagem e infinita, e verificar se na representacao padr
ao
oes regulares, ela contem o fecho estrela aplicado a uma express
de express ao contendo pelo
menos um smbolo de .
A quest ao da igualdade de duas linguagens e tambem um problema pr atico importante.
Frequentemente, existem v arias definicoes de uma linguagem de programacao e, precisamos
saber, apesar de suas diferencas aparente, se elas especificam a mesma linguagem. Esse, em
geral, e um problema difcil. Mesmo para linguagens regulares o argumento n ao e obvio. N
ao
e possvel argumentar na comparacao palavra a palavra, pois ele s o funciona para linguagens
finitas. Nao e tambem f
acil apelar para express oes regulares, gram
aticas regulares ou afds,
pois existem, por exemplo, infinitas express oes regulares para denotar a mesma linguagem.
Uma solucao elegante usa a propriedade de fecho.

Teorema 4.2.3 Dadas as linguagens regulares L1 e L2 , na representaca


o padr
ao, existe um
algoritmo para determinar se L1 = L2 ou n
ao.

Introduca
o a
` Teoria da Computacao:
Linguagens Formais, aut omatos e Computabilidade
89
4.3. Identificando Linguagens N
ao Regulares

Demonstrac
ao: Usando L1 e L2 podemos construir a linguagem

L3 = (L1 L2 ) (L1 L2 ).

L3 e regular, pois L1 e L2 s
ao e pelo teorema 4.1.1, a uni
ao, interseccao e diferenca de duas
linguagens regulares s ao regulares. Portanto, podemos achar um afd, M , que reconheca L 3 .
Observe que se L1 = L2 , ent ao
L3 = (L1 L2 ) (L1 L2 )
= (L1 L1 ) (L1 L1 )
= L 1 L1
=
Se L1 6= L2 , ent
ao ou existe um elemento w L1 tal que w
6 L2 ou existe um elemento
w L2 tal que w 6 L1 . Em ambos os casos w L1 L2 e w 6 L1 L2 . Logo, L3 =
(L1 L2 ) (L1 L2 ) 6= .
Assim, L1 = L2 se, e somente se, L3 = .
Logo, podemos usar o algoritmo do teorema 4.2.2 para determinar se L 3 e vazia ou n
ao e
assim concluir se L1 = L2 ou L1 6= L2 .

4.3 Identificando Linguagens N


ao Regulares

As linguagens regulares podem ser infinitas. No entanto, o fato delas poderem ser associados com
automatos que tem mem oria finita, imp
oe alguns limites na estrutura das linguagens regulares.
Nossa intuicao diz que uma linguagem e regular somente se, em processando qualquer cadeia, a
informacao a ser armazenada em qualquer est agio e estritamente limitada. Isso e verdade, mas
teremos de mostrar precisamente.

4.3.1 Usando o Princpio da Casa de Pombos

O termo princpio da casa de pombos e usado pelos matem aticos para se referir a` seguinte
simples observacao: Se colocamos n objetos (pombos) em m caixas (casa de pombos), e se
n > m, entao no mnimo uma caixa deve conter mais de um tem. Nesta met afora, a casa dos
pombos correspondem aos estados de um afd e os n pombos a uma cadeia de tamanho n.

Exemplo 4.3.1 A linguagem L = {an bn / n 0} e regular? A resposta e n ao. Mostraremos


usando uma prova por contradica o. Suponha que L e regular. Ent ao, existe um afd M =
hQ, {a, b}, , q0 , F i que a reconhece. Agora, olhemos para (qo , ai ), com i = 1, 2, 3, . . .. Como
existe um n umero ilimitado de is, mas somente um n umero limitado de estados em M , o
princpio da casa de pombos nos diz que para n > |Q| deve existir algum estado, digamos q, tal
que

(q0 , an ) = q e (q0 , am ) = q, para algum m 6= n.

Introduca
o a
` Teoria da Computaca
o:
Linguagens Formais, automatos e Computabilidade
90
Captulo 4. Propriedades das Linguagens Regulares

Mas, como M aceita an bn , devemos ter

(q0 , an bn ) = qf F
( (q0 , an ), bn ) = qf F
(q, bn ) = qf F.

Disso podemos concluir que

(q0 , am bn ) = ( (q0 , am ), bn ) = (q, bn ) = qf F.

o original de que M aceita am bn somente se m = n (e neste caso


Isto contradiz a suposica
m 6= n). Logo, L n ao pode ser regular.

Neste argumento, o princpio da casa de pombos e uma maneira de estabelecer precisamente


o que queremos dizer quando dizemos que um aut omato finito tem mem oria limitada. Para
reconhecer todos an bn , um aut omato teria de distinguir todos os prefixos de an . Mas como
existe somente um numero finito de estados internos para fazer isso, quando n for maior que a
quantidade de estados existiriam alguns prefixos de an para os quais essa distincao n
ao poderia
ser feita.
Para usar esse tipo de argumento numa variedade de situacoes e conveniente codific
a-lo como
um teorema geral. Existem v arias maneiras de fazer isso, a que faremos e talvez a mais famosa.

4.3.2 Lema do Bombeamento para Linguagens Regulares

O resultado que segue, conhecido como lema do bombeamento para linguagens regulares, usa
o princpio da casa de pombos numa outra forma. A prova e baseada na observacao de que
num grafo de transicao com n vertices, qualquer caminho de comprimento n ou mais longo deve
repetir algum vertice, isto e, contem um ciclo. O lema do bombeamento s o precisara analisar
linguagens infinitas, pois trivialmente toda linguagem finita necessariamente e regular.

Teorema 4.3.2 (Lema do bombeamento) Seja L uma linguagem infinita. Se L e regular


ao, existe um inteiro positivo m tal que todo w L, com |w| m, pode ser decomposto como
ent
w = xyz, com |xy| m e |y| 1 tal que

wi = xy i z, (4.1)

a tambem em L, para todo i = 0, 1, 2, . . ..


est

Demonstrac o: Se L e regular, existe um afd que a reconhece. Seja M um desses afds, com
a
estados rotulados por q0 , q1 , . . . , qn . Agora tome uma cadeia w L tal que |w| = k m = n + 1.
Como L e infinita isso pode sempre ser considerado. Seja q0 , qi , qj , . . . , qf o conjunto de estados
do aut
omato quando ele reconhece w.
Como essa cadeia tem no mnimo n + 1 entradas, ent ao pelo menos um estado deve ser
repetido, e tal repeticao deve comecar n
ao ap
os o m-esimo movimento. Portanto, a seq
uencia
deve ter a seguinte forma

Introduca
o a
` Teoria da Computacao:
Linguagens Formais, aut omatos e Computabilidade
91
4.3. Identificando Linguagens N
ao Regulares

q0 , qi , qj , . . . , qr , . . . , qr , . . . , qf ,

indicando que devem existir subcadeias x, y, e z de w tal que

(q0 , x) = qr ,
(qr , y) = qr ,
(qr , z) = qf ,

com |xy| n + 1 = m e |y| 1. Donde segue imediatamente que

(q0 , xz) = qf , assim como (q0 , xy 2 z) = qf , (q0 , xy 3 z) = qf ,

e assim por diante, completando a prova do teorema.

Ou seja, se L for regular e infinita, ent


ao toda palavra suficientemente longa em L pode ser
quebrada em tres partes, de tal modo que um n umero arbitrario de repeticoes da parte do meio
gera necessariamente uma outra palavra em L. Dizemos que a cadeia do meio e bombeada.
mas isto n
ao significa que em qualquer decomposicao xyz da cadeia w, y possa ser bombeada ar-
bitrariamente, ou seja perfeitamente podem existir decomposicoes de w tais que o bombeamento
da parte do meio gere uma cadeia n ao pertencente a` linguagem.
Por exemplo a linguagem L = {an / n e par} e infinita e regular e portanto satisfaz o lema
do bombeamento. Para ver isto basta escolher m = 2, pois qualquer cadeia w = a 2k para algum
k 1 pode ser decomposta em x = , y = aa e z = a2(k1) , ao bombear y i-vezes, teremos a
cadeia

xy i z = (aa)i a2(k1) = a2i a2(k 1) = a2(i+(k1))


0
que e da forma a2k e portanto faz parte da linguagem L. Observe que se tivessemos decomposto
w em x = , y = a e z = a2k1 , ao bombear y duas vezes (i = 2), teramos a cadeia xy 2 z =
a2 a2k1 = a2+2k1 = a2k+1 que n ao e de comprimento par.
Enunciamos o lema do bombeamento somente para linguagens infinitas. Linguagens finitas,
embora sempre regulares, nao podem ser bombeadas pois o bombeamento automaticamente cria
um conjunto infinito de cadeias. Assim, o teorema n
ao vale para linguagens finitas, pois ele se
tornaria v
acuo (poderia ser escolhido um m maior do que o maior comprimento das cadeias na
linguagem, de modo que nenhuma cadeia pode ser bombeada).

Exemplo 4.3.3 Seja a linguagem

L = {w {a, b} / Na (w) e Nb (w) s


ao pares}.

Esta linguagem e regular (veja exemplo 2.5). Logo, pelo lema do bombeamento deve existir
um inteiro positivo m tal que todo w L, com |w| m, pode ser decomposto como w = xyz,
com |xy| m e |y| 1 satisfazendo a equaca
o 4.1.

Introduca
o a
` Teoria da Computaca
o:
Linguagens Formais, automatos e Computabilidade
92
Captulo 4. Propriedades das Linguagens Regulares

Seja m = 3 e uma cadeia arbitr aria w = a1 a2 . . . an L (Portanto Na (w) = 2p e Nb (w) = 2q


para algum p, q N) tal que |w| = n m = 3. Claramente, como so temos dois smbolos no
alfabeto ou a2 = a1 ou a2 = a3 . Supondo que a2 = a1 = a ent ao podemos decompor w em x = ,
y = a1 a2 e z = a3 . . . an , bombeando y k vezes, nos teremos que
Na (xy k z) = Na (x) + Na (y k ) + Na (z)
= 0 + Na ((aa)k ) + (Na (w) 2)
= 2k + 2p 2
= 2(k + p 1)
Portanto, Na (xy k z) e par. por outro lado, como n
ao modificamos a quantidade de b0 s, temos
k k
que Nb (xy z) = Nb (w) = 2q. Assim, xy z L. Se a2 = a1 = b procedemos de forma similar.
a se a2 = a3 = a ou se a2 = a3 = b ent
J ao podemos decompor w em x = a1 , y = a2 a3 e
z = a4 . . . an e proceder de forma an
aloga ao caso anterior.
Portanto L e uma linguagem regular.

Porem o lema do bombeamento, assim como o argumento do princpio da casa de pombos


do exemplo 4.3.1, e mais usado para se mostrar que certas linguagens n
ao s
ao regulares. A
demonstracao e sempre por contradicao.

Exemplo 4.3.4 Usaremos o lema do bombeamento para mostrar que L = {an bn / n 0} n ao e


uma linguagem regular. Suponhamos que L e regular, portanto o lema do bombeamento deveria
valer. N
ao sabemos o valor de m, mas qualquer que seja ele podemos escolher n > m. Logo, a
subcadeia y deve consistir inteiramente de as. Suponha que |y| = k com k 1. Ent
ao, a cadeia
obtida usando-se i = 0, na equacao 4.1, e

ank bn .

Como n k 6= n, ent ao, claramente, ank bn n a em L. Isso contradiz o lema do


ao est
otese e falsa, isto e, L n
bombeamento e, portanto, a hip ao e regular.

Exemplo 4.3.5 Seja a linguagem LP al do exemplo 3.5.7. Vamos demonstrar usando o lema
do bombeamento, que esta linguagem n
ao e regular. Suponhamos que e regular, portanto o lema
do bombeamento deveria valer. Como n ao conhecemos o valor de m, usemos um m generico.
Agora escolha a cadeia

am bam .

Claramente, am bam e um palndromo, independente do valor de m. Pelo lema do bombea-


mento, podemos decompor essa cadeia em tres partes (x, y e z) satisfazendo as condicoes do
lema do bombeamento e bombear a subcadeia y tantas vezes quanto desejarmos, que ainda obte-
mos uma cadeia em LP al . Para refutar este resultado devemos mostrar que qualquer que seja
o de am bam (satisfazendo as condico
esta decomposica es do lema) podemos gerar, ao bombear a
subcadeia y, uma cadeia que nao pertence a` linguagem. Faremos estas decomposico
es generica-
mente. Como |xy| m e |y| 1 ent i j
ao x = a com i m, y = a com 1 j m, i + j m

Introduca
o a
` Teoria da Computacao:
Linguagens Formais, aut omatos e Computabilidade
93
4.3. Identificando Linguagens N
ao Regulares

e z = am(i+j) bam . Pelo lema do bombeamento, todas as cadeias da forma xy k z, com k N


tambem pertencem a LP al . Porem para k = 2, temos que

xy 2 z = ai aj aj am(i+j) bam
= ai aj am(i+j) aj bam
= am aj bam
= am+j bam

e portanto xy 2 z =
6 an b2n an+j ) para todo n N. Ou seja xy 2 z n ao e um palndromo o que
contradiz o lema do bombeamento. Logo a hip otese que LP al e uma linguagem regular e falsa.

Estes exemplos sugerem que e possvel reescrever o lema do bombeamento na sua forma
contra-positiva para demonstrar diretamente quando uma linguagem nao e regular.

Corolario 4.3.6 Seja L uma linguagem infinita. Se para qualquer inteiro positivo m existe
uma cadeia w L tal que |w| m e para toda possvel decomposica
o de w em tres cadeias x, y
i
e z (w = xyz) com |xy| m e |y| 1, temos que a cadeia xy z 6 L para algum inteiro n ao
ao L n
negativo i, ent ao e regular.

Exemplo 4.3.7 Demonstremos usando o corol


ario acima que a linguagem

L = {uu / u {a, b} }

n
ao e regular.
Seja m um inteiro positivo qualquer e w = am bam b. Ent ao, w = uu para u = am b e portanto
w L e |w| = 2m + 2 > m. Suponha que w = xyz com |xy| m e |y| 1. Claramente,
y est
a na primeira metade e est a so composto de a0 s. No menor dos casos y = a. Logo se
bombearmos y, digamos em tres vezes, a quantidade de a0 s da primeira metade aumentar a pelo
menos em dois, e portanto o unico b que fazia parte da primeira metade passar
a para a segunda
metade, resultando assim numa cadeia cuja metade esquerda e necessariamente diferente da
metade direita e portanto n
ao pertenceraa` linguagem. Formalmente, se |x| = p e |y| = q (com
q 1 e p + q m) entao w = ap aq am(p+q) bam b. Bombeando duas vezes y teremos a cadeia
xy 3 z = ap a2q am(p+q) bam b
= am(p+q)+p+q+q bam b
= am+q bam b
Como q 1 entao m + q > m e portanto xy 3 z = am+q bam b 6 L. Logo, L n
ao e uma
linguagem regular.

Lamentavelmente, o lema do bombeamento estabelece apenas uma condicao necess aria para
uma linguagem infinita ser regular. Mas isto nao e suficiente para provarmos que uma linguagem
qualquer seja regular ou nao. Analogamente, o corol ario 4.3.6, da uma condicao suficiente, mas
n
ao necessaria, para provarmos que uma linguagem n ao e regular, ou seja existem linguagens
que satisfazem as condicoes desse corol
ario mas que n ao sao regulares.

Introduca
o a
` Teoria da Computaca
o:
Linguagens Formais, automatos e Computabilidade
94
Captulo 4. Propriedades das Linguagens Regulares

Exemplo 4.3.8 Seja a linguagem

L = {uuR v / u, v {a, b}+ }

Mostraremos que esta linguagem embora claramente n


ao seja regular, n
ao pode ser provada
pelo lema do bombeamento.
Seja m = 4 e w = a1 . . . an L tal que n 4. Por definica
o da linguagem, existe um n
umero
1 k d n2 e 1 tal que para cada 1 j k, aj = a2kj+1 , ou seja fazendo u = a1 . . . ak e
v = a2k+1 . . . n temos que |u| 1, |v| 1 e w = uuR v.
ao e suficiente escolher x = a1 a2 , y = a3 e z = a4 . . . an , pois neste caso x = uuR
Se k = 1 ent
e portanto trivialmente xy i z L.
Se k 2 entao considere x = , y = a1 e z = a2 . . . an . Note que se a1 . . . a2k e uma
palndromo de tamanho par, ent ao a2 . . . a2k1 tambem e um palndromo de tamanho par. Logo,
i
para i = 0, xy z = z = a2 . . . an = u0 u0R v, onde u0 = a2 . . . ak e v = a2k+1 . . . an e por tanto est a
em L. Se i = 1 entao trivialmente xy i z = xyz = w L. Se i 2 ent ao xy i z = a1 a1 ai2
1 a2 . . . an .
Assim tomando u = a1 e v = ai2 1 a 2 . . . an temos que |u| 1, |v| 1 e w = uu R v. Portanto

xy i z L.
Desta forma seria impossvel aplicar o corol
ario 4.3.6 para provarmos que essa linguagem
n
ao e regular.

Existem formas seguras de provarmos que linguagens n ao regulares s


ao de fato n
ao regulares.
Por exemplo [LV95] apresenta uma tecnica eficiente com provas simples, mas que estao baseadas
na complexidade de Kolmogorov que n ao foi considerada neste texto.

Introduca
o a
` Teoria da Computacao:
Linguagens Formais, aut omatos e Computabilidade
95
4.4. Exerccios

4.4 Exerccios

1. Prove que toda linguagem finita e regular.

2. Aplique a construcao usada na prova do teorema 4.1.1 para obter o afd que reconhece a
interseccao das linguagens aceitas pelos afds da figura 4.5.

0 0
0,1 0,1
0
q0 q1 q0 q1 q2

1 1

Figura 4.5: afd do exerccio 2.

3. Quais das seguintes igualdades s


ao verdadeiras para todas as linguagens regulares e todos
os homomorfismos? Justifique.

(a) h(L1 L2 ) = h(L1 ) h(L2 )


(b) h(L1 L2 ) = h(L1 ) h(L2 )
(c) h(Ln ) = h(L)n
(d) h(L ) = h(L)
(e) h(LR ) = h(L)R
(f) h(L) = h(L)
(g) h(L1 L2 ) = h(L1 ) h(L2 )

4. Na prova do teorema 4.1.8, mostre que h(r) e uma express


ao regular. Ent
ao, mostre que
h(r) denota h(L).

5. Mostre que a famlia das linguagens regulares e fechada sobre uni ao finita e interseccao
finita, isto e, se L1 , L2 , . . . , Ln s
ao linguagens regulares ent
ao

n
[ n
\
Li e Li
i=1 i=1

tambem s
ao.

Introduca
o a
` Teoria da Computaca
o:
Linguagens Formais, automatos e Computabilidade
96
Captulo 4. Propriedades das Linguagens Regulares

6. Sejam L1 e L2 duas linguagens sobre os alfabetos 1 e 2 , respectivamente. O NEM de


L1 e L2 e definido por

N EM (L1 , L2 ) = {w (1 2 ) / w 6 L1 e w 6 L2 }.

Mostre que a famlia das linguagens regulares e fechada sobre NEM.

7. Mostre que as linguagens regulares s ao fechadas sobre a uni ao disjunta, onde a uni
ao
disjunta de dois conjuntos (linguagens) L1 e L2 e definida por

L1 ] L2 = {w0/ w L1 } {w1/ w L2 }

8. Seja = {a, b} e b. : a operacao definida recursivamente a seguir:

b=a

wa
c = bw
b
c = aw
wb b

Seja L uma linguagem regular sobre . Mostre que Lb = {w/


b w } tambem e regular.

9. Seja = {a, b} e b. : a operacao definida a seguir:

Lb = {wa / wb L} {wb / wa L}

Mostre que a classe das linguagens regulares e fechada sobre esta operacao.

10. Seja L uma linguagem sobre um alfabeto . Conforme visto no captulo 1, a linguagem
de sufixos de L, denotada por LS , e definida como

LS = {w / vw L para algum v }.

Demonstre que a classe das linguagens regulares e fechada sobre sufixos.

11. Seja L uma linguagem sobre um alfabeto . Defina

(a) L = {w/w 6 L e |w| =


6 100}
(b) LT = {w / aw L para algum v }. Observe que claramente, LT LS .

Demonstre que a classe das linguagens regulares e fechada sobre estes operadores.

12. Sejam L1 e L2 duas linguagens, defina o operador por

L1 L2 = {w L1 / w 6 L2 } {w L2 / w 6 L1 }

ao fechadas sobre a operacao entre linguagens.


Mostre que as linguagens regulares s

Introduca
o a
` Teoria da Computacao:
Linguagens Formais, aut omatos e Computabilidade
97
4.4. Exerccios

a b c
a a a c
b c a b
c b c a

Tabela 4.1: Tabela multiplicativa n


ao associativa nem comutativa.

13. Sejam L1 e L2 linguagens sobre alfabetos 1 e 2 , respectivamente. Defina o operador 2


por

L1 2 L2 = {uv/ u L1 L2 e v (1 2 ) }

ao fechadas sobre a operacao 2 entre linguagens.


Mostre que as linguagens regulares s

14. Seja = {a0 , . . . , an }. Defina o complemento n de w , denotado por w c , como sendo


c = e (wai )C = wc ani
Por exemplo se = {a, b, c, d} e considerando a0 = a, a1 = b, a2 = c e a3 = d, ent
ao
aabcdc = ddcba.
Se L e uma linguagem regular sobre um alfabeto = {a0 , . . . , an }, demonstre que a
linguagem

Lc = {wc / w L},

tambem e regular.

15. Mostre que existe um algoritmo para determinar se L1 L2 , para qualquer linguagem
regular L1 e L2 .

16. Mostre que existe um algoritmo para determinar se a interseccao e uni


ao de duas linguagens
regulares e finita, vazia ou infinita.

17. Seja a tabela 4.1. A primeira coluna representa os r


otulos de cada fila na tabela enquanto a
otulos de cada coluna na tabela. Para cada x, y = {a, b, c}
primeira fila representa os r
denote por T (x, y) o conte udo da tabela para a posicao (x, y). Seja a seguinte funcao
A : + definida por

A(a) = a, para cada a e


A(wa) = T (A(w), a), para cada w + e a .

Demonstre que a seguinte linguagem e regular:

L = {w + /A(w) = A(w R )}

18. Seja = {0, 1}. Mostre que e possvel aplicar o lema do bombeamento para as seguintes
linguagens regulares.

Introduca
o a
` Teoria da Computaca
o:
Linguagens Formais, automatos e Computabilidade
98
Captulo 4. Propriedades das Linguagens Regulares

(a) L = {w / 0110 e um prefixo de w}


(b) L = {w / 0110 e um sufixo de w}
(c) L = {w / w = u111v para algum u, v }
(d) L = {w / 6 u, v tal que w = u111v}

19. Mostre que as linguagens sobre = {a, b}, definidas a seguir, n


ao s
ao regulares.

(a) L = {w / Na (w) = Nb (w)}


(b) L = {w / Na (w) 6= Nb (w)}
(c) L = {w / u = v para algum prefixo u 6= e sufixo v de w}.
(d) L = {am bn / m > n}
(e) L = {am bn / m 6= n}
(f) L = {an ban+1 / n 1}
(g) L = {am bn / 1 m n 2m}
(h) L = {am+1 bn+1 / 2 n m 3n}

onde Na (w) e o n
umero de as que figuram em w
20. Seja = {a, b} e b. : a operacao definida recursivamente a seguir:
b=

wa
c = wb
b
c
wb = wa
b

Mostre usando o lema do bombeamento que as linguagens

(a) L = {ww/
b w }
bR }
(b) L = {w / w = w

n
ao s
ao linguagens regulares.
21. Seja = {a, b} e b. : a operacao definida recursivamente a seguir:
b=

wa
c = waa
b
c = wbb
wb b

Mostre usando o lema do bombeamento que a linguagem L = {ww/


b w } n
ao e regular.
22. Seja L uma linguagem sobre um alfabeto qualquer. Defina P (L), recursivamente por

P () =
P (wa) = aP (w)aa para cada a e w .

Mostre usando o lema do bombeamento que a linguagem L = {P (w)/ w } n


ao e
regular.

Introduca
o a
` Teoria da Computacao:
Linguagens Formais, aut omatos e Computabilidade
99