LF

161
Autômatos e Linguagens Formais S. C. Coutinho Universidade Federal do Rio de Janeiro i

Transcript of LF

  • Autmatos e Linguagens Formais

    S. C. CoutinhoUniversidade Federal do Rio de Janeiro

    i

  • ii

    c by S. C. Coutinho 2007

  • Agradeo a David Boechat Gabriel Rosrio

    pelas correes s notas de aula.

  • Sumrio

    Captulo 1. Conjuntos e linguagens 11. Exerccios 1

    Captulo 2. Autmatos finitos determinsticos 31. Exerccios 3

    Captulo 3. Expresses regulares 51. Introduo 52. Lema de Arden 83. O algoritmo de substituio 104. Expresses regulares 125. Anlise formal do algoritmo de substituio 156. Exerccios 17

    Captulo 4. Linguagens que no so regulares 211. Propriedade do bombeamento 212. Lema do bombeamento 233. Aplicaes do lema do bombeamento 254. Exerccios 31

    Captulo 5. Autmatos finitos no determinsticos 35

    Captulo 6. Operaes com autmatos finitos 391. Unio 392. Concatenao 453. Estrela 474. Exerccios 51

    Captulo 7. Autmatos de expresses regulares 531. Consideraes gerais 532. Unio 54

    Captulo 8. Gramticas lineares direita 591. Exerccios 59

    Captulo 9. Linguagens livres de contexto 611. Gramticas e linguagens livres de contexto 612. Linguagens sensveis ao contexto 65

    v

  • vi SUMRIO

    3. Mais exemplos 664. Combinando gramticas 695. Exerccios 72

    Captulo 10. rvores Gramaticais 751. Anlise Sinttica e lnguas naturais 752. rvores Gramaticais 773. Colhendo e derivando 804. Equivalncia entre rvores e derivaes 835. Ambigidade 846. Removendo ambigidade 887. Exerccios 90

    Captulo 11. Linguagens que no so livres de contexto 931. Introduo 932. Lema do bombeamento 943. Exemplos 984. Exerccios 102

    Captulo 12. Autmatos de Pilha 1031. Heurstica 1032. Definio e exemplos 1053. Computando e aceitando 1114. Variaes em um tema 1135. Exerccios 118

    Captulo 13. Gramticas e autmatos de pilha 1231. O autmato de pilha de uma gramtica 1232. A receita e mais um exemplo 1263. Provando a receita 1284. Autmatos de pilha cordatos 1305. A gramtica de um autmato de pilha 1326. Exerccios 137

    Captulo 14. Mquinas de Turing 1391. Exerccios 139

    Captulo 15. Mquinas de Turing e Linguagens 1431. Conectando Mquinas em Paralelo 1432. Fechamento de linguagens 1453. A mquina de Turing universal 1474. Comportamento de U 1505. Linguagens no recursivas 1516. O problema da parada 152

    Referncias Bibliogrficas 155

  • CAPTULO 1

    Conjuntos e linguagens

    Neste primeiro captulo, revisamos algumas propriedades bsicas dos con-juntos e suas operaes e introduzimos o conceito de linguagem formal.

    1. Exerccios

    1. Sejam A e B conjuntos, prove que:(a) A = A;(b) A = ;(c) se A B ento A B = A;(d) se A B ento A B = B;(e) A A = A = A A;(f) A B = B A e A B = B A;(g) A (B C) = (A B) C;(h) A (B C) = (A B) C;(i) A (B C) = (A B) (A C);(j) A (B C) = (A B) (A C);(k) A \ B = A B onde B o complemento de B no conjunto universo,

    isto o conjunto que contm todos os conjuntos com que estamos tra-balhando;

    (l) (A B) = A B;(m) (A B) = A B;(n) A = A;(o) A \B = A \ (B A);(p) B A se, e somente se, A B = ;(q) (A \B) \ C = (A \ C) \ (B \ C) = A \ (B C);(r) A B = e A B = se e somente se A = B.

    2. Considere as afirmaes abaixo: prove as verdaeiras e d um contra-exemplopara as falsas.(a) se A B = A C ento B = C;

    1

  • 2 1. CONJUNTOS E LINGUAGENS

    (b) se A B = A C ento B = C.3. Sejam A, B e C conjuntos, prove que:

    (a) A (B C) = (AB) (A C);(b) A (B C) = (AB) (A C);(c) A (B \ C) = (AB) \ (A C);

    4. Explique a diferena entre e {}. Calcule L , onde L uma linguagemqualquer.

    5. Seja w uma palavra em um alfabeto . Definimos o reflexo de w recursi-vamente da seguinte maneira: R = e se w = ax ento wR = xRa ondea .(a) Determine (turing)R e (anilina)R.(b) Se x e y so palavras no alfabeto , determine (xy)R em funo de xR

    e yR.(c) Determine (xR)R.

    6. Sejam L1 e L2 linguagens no alfabeto . Determine as seguintes linguagensem funo de LR1 e L

    R2 :

    (a) (L1 L2)R;(b) (L1 L2)R;(c) (L1 L2)R;(d) L1

    R;

    (e) (L1)R.

    7. Mostre, por induo em n, que se L0, . . . , Ln so linguagens no alfabeto ento

    L0 (L1 Ln) = (L0 L1) (L0 Ln).

    8. Sejam 1 e 2 dois alfabetos e seja : 1 2 uma aplicao. Estenda a 1 de acordo com a seguinte definio recursiva: () = ; (x) = (a)(), onde a 1.

    Se L uma linguagem no alfabeto 1 defina

    (L) = {(w) : w 1}.Mostre que se L e L so linguagens no alfabeto 1 ento:(a) (L L) = (L) (L);(b) (L L) = (L) (L);(c) (L L) = (L) (L);

  • CAPTULO 2

    Autmatos finitos determinsticos

    Neste captulo introduzimos a noo de autmato finito determinsticoatravs de um exemplo concreto e estudamos alguns outros exemplos que ocor-rero freqentemente ao longo do livro.

    1. Exerccios

    1. Seja A um autmato finito determinstico. Quando que L(A)?2. Desenhe o grafo de estados e determine a linguagem aceita por cada um dos

    seguintes autmatos finitos. Em cada caso o estado inicial q1 e o alfabeto {a, b, c}(a) F1 = {q5} e a funo de transio dada por:

    1 a b c

    q1 q2 q3 q4

    q2 q2 q4 q5

    q3 q4 q3 q5

    q4 q4 q4 q5

    q5 q4 q4 q5(b) F2 = {q4} e 2 = 1.(c) F3 = {q2} e a funo de transio dada por:

    3 a b c

    q1 q2 q2 q1

    q2 q3 q2 q1

    q3 q1 q3 q2

    3. Considere o autmato finito determinstico no alfabeto {a, b}, com estados{q0, q1}, estado inicial q0, estados finais F = {q1} e cuja funo de transi-o dada por:

    3

  • 4 2. AUTMATOS FINITOS DETERMINSTICOS

    a b

    q0 q0 q1

    q1 q1 q0

    (a) Esboce o diagrama de estados deste autmato.(b) Descreva a computao deste autmato que tem incio na configurao

    (q0, aabba). Esta palavra aceita pelo autmato?(c) Descreva a computao deste autmato que tem incio na configurao

    (q0, aabbab). Esta palavra aceita pelo autmato?(d) Descreva em portugus a linguagem aceita pelo autmato definido acima?

    4. Seja um alfabeto com n smbolos. Quantos autmatos finitos determins-ticos existem com alfabeto e m > 0 estados?Sugesto: No esquea de considerar todas as possibilidades para o con-junto de estados finais.

    5. Invente autmatos finitos determinsticos que aceitem as seguintes lingua-gens sobre o alfabeto {0, 1}:(a) o conjunto das palavras que acabam em 00;(b) o conjunto das palavras com trs 0s consecutivos;(c) o conjunto das palavras em que cada 0 est entre dois 1s;(d) o conjunto das palavras cujos quatro smbolos finais so 1101;(e) o conjunto dos palndromos de comprimento igual a 6.

    6. D exemplo de uma linguagem que aceita por um autmato finito deter-minstico com mais de um estado final, mas que no aceita por nenhumautmato finito determinstico com apenas um estado final. Justifique cui-dadosamente sua resposta.

  • CAPTULO 3

    Expresses regulares

    hora de abordarmos o primeiro dos problemas propostos ao final do ca-ptulo anterior; isto , como determinar a linguagem aceita por um autmatofinito? De quebra, descobriremos uma maneira de caracterizar estas lingua-gens.

    1. Introduo

    Desejamos obter um algoritmo que, dado um autmato finito M, deter-mine a linguagem L(M) que ele aceita. O algoritmo recursivo, e para poderdescrev-lo comeamos por generalizar a noo de linguagem aceita por umautmato.

    Seja M um autmato finito definido pelos ingredientes (, Q, q1, F, ).Para cada q Q definimos Lq como sendo a linguagem

    Lq = {w : (q, w) ` (f, ) onde f F}.Em outras palavras, Lq formada pelas palavras que levam o autmato do es-tado q a algum estado final. Quando os estados do autmato forem numeradoscomo q1, . . . , qn, escrevermos Li em vez de Lqi para simplificar a notao.Portanto, se q1 o estado inicial deM, ento

    Lq1 = L1 = L(M).Sejam p e q estados de M, e digamos que (p, ) = q. Esta transi-

    o estabelece uma relao entre as lingaugens Lp e Lq . De fato, temos que(p, ) ` (q, ) ao passo que, se w Lq , ento (q, w) ` (f, ). Combinadoestas duas computaes obtemos

    (p, w) ` (q, w) ` (f, ).Portanto, {}Lq Lp. Mais uma vez, com a finalidade de no sobrecarregara notao, eliminaremos as chaves, escrevendo simplesmente Lq Lp.

    5

  • 6 3. EXPRESSES REGULARES

    A no ser que o alfabeto tenha apenas um smbolo, no h a menorchance de que Lq Lp seja uma igualdade. Isto porque teremos uma in-cluso como esta para cada . Portanto, se = {1, . . . , n} e se(p, i) = qi, ento

    ni=1

    iLqi Lp.

    Desta vez, porm, a incluso , de fato, uma igualdade, desde que p noseja um estado final do autmato! Para ver isto suponhamos que u Lp.Podemos isolar o primeiro smbolo de u, escrevendo u = iw, para algumi . Mas, pela definio de Lp,

    (p, u) = (p, iw) ` (f, ),para algum f F . Por outro lado, como (p, i) = qi, temos que (p, i) `(qi, ). Combinando estas duas computaes, temos que

    (p, u) = (p, iw) ` (qi, w) ` (f, ),de onde segue que w Lqi .

    Precisamos ainda analisar o que acontece quando p um estado final doautmato. Considerando em detalhe o argumento do pargrafo acima, vemosque assumimos implicitamente que u 6= , j que estamos explicitando o seuprimeiro smbolo. Entretanto, se p for um estado final, teremos, alm disso,que Lp.

    Resumindo, provamos que, se = {1, . . . , n}, e se (p, i) = qi, ento

    Lp =

    {ni=1 iLqi se p / Fni=1 iLqi {} se p F

    O algoritmo que desejamos segue diretamente desta equao, como mostrao seguinte exemplo.

    Considere o autmato finito determinsticoM com alfabeto {0, 1} e cujografo

    I // ?>====

  • 1. INTRODUO 7

    Observe que q4 um estado morto, de modo que nada escapa de q4. Emparticular, nenhuma palavra leva o autmato de q4 a um estado final. Portanto,L4 = . Isto simplifica drasticamente as equaes anteriores, que passam a ser

    L1 = 0L2

    L2 = 1L3

    L3 = {}L4 = .

    Podemos agora resolver este sistema de equaes por mera substituio. As-sim, substituindo a terceira equao na segunda, obtemos

    L2 = 1L3 = 1{} = {1}.Finalmente, substituindo esta ltima equao na primeira, obtemos

    L1 = 0L2 = 1{0} = {10}.Como L1 = L(M), obtivemos uma descrio da linguagem aceita porM.

    Como seria de esperar, as coisas nem sempre so to diretas. Afinal, oautmato deste exemplo tinha um comportamento muito simples. Vejamoso que acontece em um exemplo menos elementar. Por exemplo, seja N oautmato finito determinstico de alfabeto {0, 1} e grafo

    I // ?>==

  • 8 3. EXPRESSES REGULARES

    2. Lema de Arden

    Na verdade, ao aplicar o mtodo de substituio para resolver sistemas deequaes e achar a linguagem aceita por um autmato vamos nos deparar mui-tas vezes com equaes em que uma linguagem escrita em termos dela pr-pria. Equaes que sero, freqentemente, ainda mais complicadas que (1.1).Convm, portanto, abordar deste j o problema em um grau de generalidadesuficiente para dar cabo de todas as equaes que apaream como resultado doalgoritmo de substituio.

    Para isso, suponhamos que um alfabeto e que A e B so linguagensem . Digamos, que X seja uma outra linguagem em que satisfaa

    X = AX B.O problema que queremos resolver consiste em usar esta equao para deter-minar X .

    Uma coisa que podemos fazer substituir X = AX B de volta nelaprpria. Isso d

    (2.1) X = A(AX B) B = A2X (A )B,e no parece adiantar de nada porque afinal de contas continuamos com um Xdo lado direito da equao. Mas no vamos nos deixar abater por to pouco:faamos a substituio mais uma vez. Desta vez substituremos X = AX Bem (2.1), o que nos d

    X = A2(AX B) (AB B) = A3X (A2 A )B.Repetindo o mesmo procedimento k vezes, chegamos equao

    X = Ak+1X (Ak Ak1 A2 A )B.O problema que o X continua presente. Mas, e se repetssemos o processoinfinitas vezes? Neste caso, perderamos de vista o termo que contm X queseria empurrado para o infinito, e sobraria apenas

    (2.2) X = ( A A2 )B.Para poder fazer isto de maneira formal precisamos introduzir uma nova

    operao com linguagens, a estrela de Kleene. Em geral, seA uma linguagemno alfabeto , ento A definida como a reunio de todas as potncias de A;isto ,

    A = {} A A2 A3 .Por exemplo, se = {0, 1} e A = {01}, ento

    A = {(01)j : j 0} = {, 01, 0101, 010101, . . . }.Por outro lado, se A = , ento A o conjunto de todas as palavras noalfabeto que alis j vnhamos denotando por .

    A equao (2.2) sugere que, continuando o processo de substituio in-definidamente, deveramos obter X = AB. Este um conjunto perfeita-mente bem definido, resta-nos verificar se realmente uma soluo da equao

  • 2. LEMA DE ARDEN 9

    X = AXB. Para isso substituremosX porAB do lado direito da equao:AX B = A(AB) B = AAB B.

    Como A = {} A A2 A3 , obtemosAAB B = A({} A A2 A3 )B B,

    que dAAB B = (A A2 A3 A4 )B B.

    Pondo B em evidncia em todo o lado direito, obtemos

    AAB B = ( A A2 A3 A4 )B = AB.Conclumos que A(AB) B = AB, de modo que AB , de fato, umasoluo da equao X = AX B.

    Infelizmente, isto ainda no suficiente para completar os clculos doalgoritmo de substituio. O problema que obtivemos uma soluo da equa-o desejada, mas ainda no sabemos se esta soluo corresponde ao maiorconjunto X que satisfaz X = AX B. Se no for este o caso, quandousarmosAB como soluo estaremos perdendo algumas palavras do conjuntoaceito pelo autmato, o que no queremos que acontea.

    Suponhamos, ento, queX o maior subconjunto de que satisfazX =AX B. Como j sabemos que AB satisfaz esta equao, podemos escreverX = AB C, onde C um conjunto (disjunto de AB) que contm aspossveis palavras excedentes. Substituindo X = AB C em X = AX B,temos

    (2.3) AB C = A(AB C) B = AB AC,j que, como vimos, A(AB) B = AB. Intersectando ambos os membrosde (2.3) com C, e lembrando que, por hiptese, C AB = , chegamos a

    C = AC C = (A )C.Temos, ento, duas possibilidades. A primeira que A no contenha . Nestecaso A = , de modo que C = ; ou seja, AB o maior conjunto solu-o da equao X = AX B. A outra possibilidade que A contenha , eneste caso estamos encrencados. Por sorte, esta segunda possibilidade nuncaocorre na soluo das equaes que advm do algoritmo de substituio! Vocpode confirmar isto lendo a demonstrao detalhada do algoritmo de substi-tuio na seo 5. Vamos resumir tudo o que fizemos em um lema, provadooriginalmente por D. N. Arden em 1960.

    LEMA DE ARDEN. Sejam A e B linguagens em um alfabeto . Se / Aento o maior subconjunto de que satisfaz X = AX B X = AB.

    Vamos aplicar o que aprendemos para resolver a equao (1.1), que re-sultou da aplicao do mtodo de substituio ao segundo exemplo da seoanterior. A equao

    L1 = (0 1)2L1 (0 1).

  • 10 3. EXPRESSES REGULARES

    Aplicando o Lema de Arden com X = L1, A = (0 1)2 e B = (0 1),teremos que

    L1 = X = AB = ((0 1)2)(0 1).

    Conclumos, assim, que a linguagem aceita pelo autmato N L(N ) = ((0 1)2)(0 1).

    3. O algoritmo de substituio

    Antes de fazer outro exemplo, vamos descrever em mais detalhes o al-goritmo de substituio que usamos para determinar a linguagem aceita pelosautmatos da seo 1. Este algoritmo foi inventado por J. A. Brzozowski em1964.

    Algoritmo de substituio

    Entrada: ingredientes (, Q, q1, F, ) de um autmato finito determinsticoM.Sada: uma descrio da linguagem aceita porM.Primeira etapa: Seja Q = {q1, . . . , qn}. Escreva as equaes para as lingua-gens Lj , para cada 1 j n.Segunda etapa: Comeando por Ln e acabando em L1, substitua Lj+1 naequao para Lj , aplicando o Lema de Arden sempre que uma linguagem forexpressa em termos dela prpria.Terceira etapa: A linguagem aceita por M corresponde expresso obtidapara L1.

    Uma descrio detalhada deste algoritmo, e uma demonstrao de que fazo que pedido, pode ser encontrada na seo 5. Por enquanto, nos contentare-mos com a descrio acima, que vamos aplicar ao autmato no alfabeto {0, 1}cujo grafo

    ?>=====

  • 3. O ALGORITMO DE SUBSTITUIO 11

    Uma olhada no grafo mostra que q5 um estado morto, de modo que L5 = .Com isto as equaes se simpificam:

    L1 = 0L2

    L2 = 1L3

    L3 = 0L1 1L4L4 = 0L4 1L4 L5 = .

    A equao para L4 nos d

    L4 = (0 1)L4 ,de modo que precisamos aplicar o Lema de Arden. fazendo isto obtemos

    L4 = (0 1) = (0 1).Substituindo em L3,

    L3 = 0L1 1(0 1).De modo que, da segunda equao, segue que

    L2 = 1(0L1 1(0 1)) = 10L1 11(0 1).Com isso, resulta da primeira equao que

    L1 = 010L1 011(0 1).Usando o Lema de Arden mais uma vez,

    L1 = 010(011(0 1)),

    que a linguagem aceita pelo autmato.Antes de encerrar a seo precisamos fazer algumas consideraes sobre

    a aplicao do Lema de Arden.Em primeiro lugar, o que aconteceria se no tivssemos notado que q5 um

    estado morto? Neste caso teramos de confrontar a equao L5 = 0L5 1L5,ou seja L5 = (0 1)L5. Como L5 aparece dos dois lados da equao, sernecessrio aplicar o Lema de Arden. Note que, neste casoX = L5,A = (01)e B = , de modo que

    L5 = X = (0 1) = ,que o resultado esperado.

    O segundo comentrio diz respeito aplicao do Lema de Arden equa-o

    L4 = 0L4 1L4 .Na aplicao que fizemos anteriormente, tomamos A = (0 1) e B = . Maso que aconteceria se escolhssemos A = 0 e B = 1L4 ? Neste caso,

    L4 = 0(1L4 ) = 01L4 0,

  • 12 3. EXPRESSES REGULARES

    e continuamos com L4 dos dois lados da equao. Mas, ao invs de nos deixarintimidar, aplicaremos o Lema de Arden a esta ltima equao, o que nos d

    (3.1) L4 = (01)0.

    Note que se isto estiver correto (e est!) ento devemos ter que os conjuntos(01)0 e (0 1) so iguaisquer dizer, tm os mesmos elementos. Por-tanto, deve ser possvel mostrar que toda palavra no alfabeto {0, 1} pertenceao conjunto (01)0. Fica por sua conta se convencer disto. Finalmente,se adotarmos esta ltima maneira de expressar L4, a descrio da linguagemaceita pelo autmato que resulta do algoritmo de substituio

    010(011(01)0).

    Em particular, o algoritmo de substituio pode retornar linguagens diferentes,todas corretas, dependendo da maneira como for aplicado.

    4. Expresses regulares

    Utilizando o algoritmo de substituio sempre obtemos uma descrio bas-tante precisa da linguagem aceita por um autmato finito determinstico. Almdisso, por causa da maneira como o algoritmo opera, a linguagem quasesempre expressa como resultado da aplicao das operaes de unio, conca-tenao e estrela, aos conjuntos unitrios formados pelos smbolos do alfabetodo autmato. As nicas excesses ocorrem quando a linguagem vazia ou .Formalizaremos isto em uma definio, como segue.

    Seja um alfabeto e seja

    = {, , , (, ), , }.Consideraremos o conjunto como um outro alfabeto, uma extenso de .Alm disso, , , , (, ), , sero considerados apenas como smbolos (isto ,seu dignificado ser ignorado) quando estiverem posando de elementos de .

    Uma expresso regular uma palavra no alfabeto , construda recursiva-mente pela aplicao sucessiva das seguintes regras:

    (1) se ento uma expresso regular;(2) e so expresses regulares;(3) se r1 e r2 so expresses regulares, ento (r1r2) e (r1 r2) tambm

    so;(4) se r uma expresso regular, ento r tambm .

    No h nada de misterioso sobre (3) e (4), elas apenas refletem a maneiracorreta de se usar os smbolos , e , quando so interpretados como operado-res de conjuntos. Portanto, se identificarmos 0, 1, e com os conjuntos {0},{1}, {} e , uma expresso regular r corresponder a um subconjuntoL(r) em , a linguagem denotada pela expresso regular r.

    Suponhamos, por exemplo, que = {0, 1}. Neste caso = {0, 1,, , , (, ), , }.

  • 4. EXPRESSES REGULARES 13

    Como 0 e 1 so expresses regulares por (1), ento 0 tambm uma expressoregular por (4). Mas isto implica, por (3), que (0 1) regular. Usando (4)novamente, obtemos (0 1), e por (3) conclumos que ((0 1) 0) umaexpresso regular. Esta a expresso regular que denota uma das maneiras derepresentar a linguagem L4 do final da seo 3. Entretanto, para obter umaexpresso regular corretamente construda, precisamos acrescentar parntesis representao de L4 dada pela equao (3.1). O papel dos parntesis apenaso de eliminar qualquer ambigidade na interpretao das expresses.

    A razo para introduzir expresses regulares como palavras em um alfa-beto, em vez de pens-las simplesmente como a descrio de uma linguagem, que expresses regulares distintas podem denotar o mesmo conjunto. Este o caso, por exemplo, das expresses (0 1) e ((0 1) 0), como vimos aofinal da seo anterior.

    claro que qualquer conjunto que possa ser representado a partir dos con-juntos unitrios e e das operaes de unio, concatenao e estrelapode ser denotado por uma expresso regular. Em particular, se cuidarmosde pr os parntesis no lugar certo, o algoritmo de substituio aplicado a umautmato finitoM sempre retorna uma expresso regular que denota a lingua-gem L(M).

    Resta-nos praticar um pouco a construo de uma expresso regular quedenote um conjunto dado, a partir da descrio deste conjunto. Suponhamosque = {a, b, c}. Para obter todas as palavras em um certo subconjunto de devemos usar a estrela de Kleene. Assim,

    Linguagem formada por todas as palavras Expresso regular(vazias ou no) que s contm a a

    nos smbolos a, b e c ((a b) c)que no contm a (b c)

    em a e cujo comprimento par (a a)

    A ltima expresso merece um comentrio. As palavras de comprimentopar tem a forma a2k, para algum k 0 inteiro. Mas,

    a2k = (aa)k {aa}k.Portanto, o conjunto das palavras de comprimento par ser

    k0{aa}k = aa.

    J as palavras no smbolo a cujo comprimento mpar so da forma a2k+1 =a (aa)k. Assim, a linguagem formada por essas palavras denotada por(a (a a)).

    Outro exemplo interessante consiste na linguagem formada pelas palavrasque contm exatamente um a. Isto significa que os outros smbolos da palavratm que ser bs ou cs. Como estes smbolos tanto podem aparecer antes como

  • 14 3. EXPRESSES REGULARES

    depois do a, uma tal palavra ser da forma uav, onde u e v so palavras quecontm apenas b e c. Isto nos remete expresso regular (((bc)a)(bc))).

    Como as expresses regulares j esto ficando bastante complicadas, va-mos suprimir os parntesis e o ponto que denota concatenao, quando noforem absolutamente necessrios interpretao correta da expresso. Eviden-temente, ao fazer isto no obtemos uma expresso regular no sentido da defini-o formal. Fica como exerccio acrescentar os smbolos necessrios para quecada uma das expresses dadas abaixo se torne uma expresso regular correta.

    Duas variaes, dignas de nota, do ltimo exemplo acima so a linguagemformada por todas as palavras que contm exatamente dois as, que correspondea

    (b c)a(b c)a(b c)

    e a linguagem formada por todas as palavras que contm um nmero par de as,que denotada por

    ((b c)a(b c)a(b c))

    Um exemplo um pouco mais difcil a linguagem formada pelas palavras quecontm um nmero mpar de as. Precisamos adicionar um a extra expressoacima. O problema que este a pode aparecer em qualquer lugar da palavra,de modo que no podemos simplesmente concaten-lo no incio ou no fim daexpresso acima. A sada tomar

    ((b c)a(b c)a(b c))a((b c)a(b c)a(b c)).Encerramos com trs exemplos de natureza mais prtica.Um dos primeiros passos do processo de compilao de uma linguagem de

    programao conhecido como anlise lxica. Nesta etapa o compilador iden-tifica, por exemplo, quais foram os nmeros inteiros e as variveis utilizadasno programa. claro que esta uma etapa necessria para que seja possvelinterpretar corretamente o programa. Na prtica, isto pode ser feito com umautmato finito. Assim, para identificar as variveis, construmos um autmatofinito que aceita a linguagem que descreve as variveis de uma linguagem. Isto feito em duas etapas. Primeiro obtemos uma expresso regular que denoteas variveis da linguagem de programao. Em seguida, construmos um aut-mato finito que aceite esta linguagem.

    Contudo, pr esta estratgia em prtica depende de sermos capazes deresolver algoritmicamente o seguinte problema.

    PROBLEMA 3.1. Dada uma expresso regular r, construir um autmatofinito que aceite a linguagem denotada por r.

    Abordaremos este problema detalhadamente a partir do prximo captulo.Entretanto, j estamos em condies de obter expresses regulares para as lin-guagens que descrevem inteiros e variveis de um programa, como veremos aseguir.

  • 5. ANLISE FORMAL DO ALGORITMO DE SUBSTITUIO 15

    Para comear determinaremos uma expresso regular no alfabeto {0, 1, . . . , 9}que denote os inteiros positivos no sistema decimal. primeira vista pode pa-recer que a expresso seja simplesmente

    (0 1 9).O problema que isto inclui palavras como 00000, que no correspondem a umnmero formado de maneira correta. A soluo no permitir que as palavrascomecem com o smbolo 0, tomando

    (1 9)(0 1 9).J a expresso que denota os inteiros no negativos

    0 (1 9)(0 1 9).Finalmente, suponhamos que uma certa linguagem de programao tem

    por variveis todas as palavras nos smbolos 0, 1, . . . , 9, A,B,C, . . . , Z queno comeam por um nmero inteiro. A expresso regular que denota as va-riveis nesta linguagem de programao

    (A B Z)(A B Z 0 1 9).5. Anlise formal do algoritmo de substituio

    Nesta seo damos uma descrio detalhada do algoritmo de substituio;isto , uma descrio cuidadosa o suficiente para servir, tanto para programaro algoritmo, quanto para provar que funciona como esperado. Na verdade,encerramos a seo justamente com uma demonstrao de que o algoritmoest correto. Contudo, se voc no pretende programar o algoritmo, nem sentenecessidade de uma demonstrao formal, talvez seja melhor pular esta seoe passar ao prximo captulo.

    Comeamos com algumas definies um tanto tcnicas. Para t = 0, . . . ,mseja t o alfabeto definido por

    t =

    { se t = 0 {1, . . . , t} se t 1.

    Seja agora t o conjunto formado pelas expresses regulares em t da formait

    i i,

    onde i 6= uma expresso regular em 0 = . Note que 0 o conjuntodas expresses regulares em .

    Dado t, seja L() a linguagem obtida de acordo com as seguintesregras:

    (1) L() = {};(2) L() = ;(3) L(i) = Li;

    com Li como definido na seo 1, e se e so expresses regulares em tento

  • 16 3. EXPRESSES REGULARES

    (4) L( ) = L() L();(5) L( ) = L() L();(6) L() = L().

    Estamos, agora, prontos para dar uma descrio minuciosa do funciona-mento do algoritmo.

    Algoritmo de Substituio

    Entrada: um autmato finito determinsticoA cujos ingredientes so (, Q, q1, F, ),onde Q = {q1, . . . , qn}.Sada: uma expresso regular que denota a linguagem aceita por A.

    Etapa 1: Para cada estado qi escreva uma expresso regular em m da forma

    Ei ={(j j(i)) : (qi, j) = qj(i)}

    se qm no estado final, ou

    Ei ={(j j(i)) : (qi, j) = qj(i)} {}

    se qm estado final; e inicialize k = m.

    Etapa 2: Se Ek j est escrito como uma expresso regular em k1, vpara (3), seno Ek da forma

    Ek = k Bonde B k1. Neste caso escreva Ek = B e v para para a Etapa 3.Observe que pode acontecer que B = ; se isto ocorrer ento Ek = .Etapa 3: Subtraia 1 de k. Se k = 0, ento L(A) denotada pela expressoregular E1 no alfabeto 0 e podemos parar; seno, substitua k por Ek naexpresso regular Ei para i 6= k e volte Etapa 2.

    Resta-nos apenas dar uma demonstrao de que este algoritmo funciona.Faremos isso usando induo finita.

    DEMONSTRAO. Digamos que, para um certo inteiro 0 k m esta-mos para executar o (m k)-simo lao deste algoritmo. Queremos mostrarque, ao final deste lao

    (1) Ei k1 e(2) L(Ei) = Li,

    para i = 1, . . . ,m. Para fazer isto, podemos supor que, chegados a este lao,temos Ei k e L(Ei) = Li para i = 1, . . . ,m. Observe que estas duasltimas afirmaes so claramente verdadeiras quando k = m.

    Comeamos considerando a execuo da Etapa 2 no (m k)-simo lao.Se j temos que Ek k1 ento nada h a fazer nesta etapa. Por outro lado,se Ek / k1, ento como Ek k podemos escrever(5.1) Ek = k k B,

  • 6. EXERCCIOS 17

    onde B k1. Seja F = k B. Temos de (5.1) e (2) queAk = L(Ek) = L(k) Ak L(B).

    Logo, pelo lema de Arden,

    Ak = L(k) L(B),

    mas isto igual a L(F ). Como o algoritmo manda fazer Ek = F , obtemos, aofinal desta etapa, que Ek k1 e L(Ek) = Ak.

    Finalmente, na etapa 3, basta substituir k por F na expresso regular deEj sempre que j 6= k. Note que segue imediatamente disto que Ej k1 eque L(Ej) = Aj .

    6. Exerccios

    1. Seja = {0, 1}. Se L1 = {0} e L2 = {1}, determine:(1) L1 L2 e L1 L2;(2) L1 e L

    2;

    (3) (L1 L2);(4) L1 L2;(5) L1;(6) L2 L1.

    2. Se L uma linguagem em um alfabeto ento LR = {wR : w L}. SeL = {0} {1} calcule LR.

    3. Seja L uma linguagem no alfabeto . O que podemos concluir a respeito deL se L+ = L \ {}?

    4. Sejam 1 e 2 dois alfabetos e seja : 1 2 uma aplicao. Se L uma linguagem no alfabeto 1, mostre que (L) = (L).

    5. Para cada um dos autmatos finitos determinsticos, no alfabeto {0, 1}, da-dos abaixo: esboce o diagrama de estados; encontre os sorvedouros e os estados mortos; determine a expresso regular da linguagem aceita pelo autmato usando

    o algoritmo de substituio.(a) Os estado so {q1, . . . , q4}, o estado inicial q1, o conjunto de estados

    finais {q2} e a funo de transio dada por: 0 1

    q1 q2 q4

    q2 q3 q1

    q3 q4 q4

    q4 q4 q4(b) Os estado so {q1, . . . , q5}, o estado inicial q1, o conjunto de estados

    finais {q3, q4} e a funo de transio dada por:

  • 18 3. EXPRESSES REGULARES

    0 1

    q1 q2 q4

    q2 q2 q3

    q3 q5 q5

    q4 q5 q5

    q5 q5 q5(c) Os estado so {q1, . . . , q4}, o estado inicial q1, o conjunto de estados

    finais {q1} e a funo de transio dada por: 0 1

    q1 q2 q4

    q2 q3 q1

    q3 q4 q2

    q4 q4 q4(d) Os estado so {q1, q2, q3}, o estado inicial q1, o conjunto de estados

    finais {q1} e a funo de transio dada por: 0 1

    q1 q1 q2

    q2 q3 q2

    q3 q1 q2(e) Os estado so {q1, . . . , q6}, o estado inicial q1, o conjunto de estados

    finais {q4} e a funo de transio dada por: 0 1

    q1 q5 q2

    q2 q5 q3

    q3 q4 q3

    q4 q4 q4

    q5 q6 q2

    q6 q6 q4

    6. Descreva em portugus o conjunto denotado por cada uma das expressesregulares abaixo:(a) 10;(b) 10(0)

    (c) 111 001;(d) (1 00);(e) (0(0)1);(f) (0 1)(0 1)00;

    7. Expresse cada uma das seguintes linguagens no alfabeto {0, 1} usando umaexpresso regular:(a) o conjunto das palavras de um ou mais zeros seguidos de um 1;

  • 6. EXERCCIOS 19

    (b) o conjunto das palavras de dois ou mais smbolos seguidos por trs oumais zeros;

    (c) o conjunto das palavras que contm uma seqncia de 1s, de modo queo nmero de 1s na seqncia congruente a 2 mdulo 3, seguido deum nmero par de zeros.

    8. Se r e s so expresses regulares, vamos escrever r s se e somente seL(r) = L(s). Supondo que r, s e t so expresses regulares, mostre que:(a) (r r) r;(b) ((r s) (r t)) (r (s t));(c) ((s r) (t r)) ((s t) r);(d) (r r) r;(e) (r r) (r r);(f) r r;(g) ( (r r)) r;(h) ((r s) r) (r (s r));(i) (r s) (r s) (r s).

    9. Usando as identidades do exerccio 4 prove que

    ((abb)(ba)(b aa)) (abb)(( (b(ab)a))b (ba)(aa)).Observe que alguns parnteses e o smbolo foram omitidos para facilitara leitura.

  • CAPTULO 4

    Linguagens que no so regulares

    O objetivo deste captulo desenvolver um mtodo que nos permita mos-trar que uma dada linguagem no regular. Nossa estratgia ser a seguinte.Em primeiro lugar, mostraremos que toda linguagem regular satisfaz certa pro-priedade, conhecida como propriedade do bombeamento. Assim, para provarque uma dada linguagem no regular basta constatar que no satisfaz estapropriedade. Isto , provaremos que uma linguagem no regular atravs deuma demonstrao por contradio.

    1. Propriedade do bombeamento

    Comeamos por introduzir a terminologia bsica e obter uma primeiraaproximao para a propriedade de bombeamento das linguagens regulares.

    Considere o autmato M da figura abaixo.

    I // ?>=======

  • 22 4. LINGUAGENS QUE NO SO REGULARES

    subpalavra y = 101 de 01011001. Mais precisamente, podemos decompor wna forma

    w = 0x

    101y

    1001z

    = xyz.

    Observe que podemos percorrer o ciclo indexado por y vrias vezes e aindaassim obter uma palavra que aceita por M . Por exemplo, percorrendo o ciclo3 vezes obtemos

    xy3z = 0x

    101y

    101y

    101y

    1001z

    ,

    que aceita por M . De fato, podemos at remover a subpalavra y de w eainda assim continuaremos com uma palavra aceita pelo autmato, neste casoxz = 01001. Resumindo, verificamos que a palavra w = xyz aceita porM e que admite uma subpalavra y 6= que pode ser removida ou repetidavrias vezes sem que a palavra resultante fique fora de L(M). Sempre que istoacontecer diremos que y uma subpalavra de w que bombevel em L(M).

    Naturalmente, o ponto chave o fato da subpalavra y indexar um ciclo nografo de M . Na verdade, esta no a nica subpalavra bombevel de w umavez que podemos considerar o ciclo como comeando em qualquer um de seusvrtices. Assim, se tomarmos o incio do ciclo como sendo q4, conclumos quea subpalavra 110 tambm bombevel; isto ,

    010(110)k01 L(M) para todo k 0. conveniente estabelecer a noo de bombeabilidade em um contexto

    mais geral que o das linguagens regulares. Seja L uma linguagem em umalfabeto e seja w L. Dizemos que y uma subpalavra de wbombevel em L se

    (1) y 6= ;(2) existem x, z tais que w = xyz;(3) xykz L para todo k 0.

    A nica funo da condio (1) excluir o caso trivial y = da definiode palavra bombevel; j (2) significa que y subpalavra de w. Quanto a (3),o ponto crucial a observar que, para que seja y seja bombevel precisoque seja possvel omiti-la ou repeti-la no interior de w tantas vezes quantodesejarmos sem que a palavra resultante deixe de pertencer a L. Para entendermelhor este ponto, considere o autmato M da figura 2.

    claro que 0 uma subpalavra de 10 L(M ). Alm disso, podemosrepetir a subpalavra 0 vrias vezes e ainda assim obter uma palavra em L(M );de fato, 1, 10, 102, 103 e 104 pertencem a L(M ). Apesar disto, 0 no umasubpalavra de 10 bombevel em L(M ), porque se k 5 ento 10k / L(M ).

    Permanecendo com o autmato M da figura 2, vemos que

    L(M ) = {1, 10, 102, 103, 104}.Em particular, no h nenhuma palavra de L(M ) que admita uma subpala-vra bombevel. Isto no surpreendente. De fato, se uma linguagem admite

  • 2. LEMA DO BOMBEAMENTO 23

    I // ?>=======

  • 24 4. LINGUAGENS QUE NO SO REGULARES

    nmero n de estados de M . Considere o caminho indexado por w no grafo deM . Como M tem n estados e w tem muito mais do que n smbolos, este ca-minho tem que passar duas vezes por um mesmo estado. Mas um caminho nografo de M no qual h estados repetidos tem que conter um ciclo. Entretanto,j sabemos que um ciclo no caminho indexado por w nos permite determinaruma subpalavra bombevel de w. Com isto provamos a seguinte propriedadedo bombeamento das linguagens regulares:

    Seja M um autmato finito determinstico. Se w umapalavra de L(M) de comprimento maior que o nmero deestados do autmato, entow admite uma subpalavra bom-bevel em L(M).

    O lema do bombeamento, que o principal resultado deste captulo, nopassa de uma verso refinada da propriedade do bombeamento enunciada acima.

    LEMA DO BOMBEAMENTO. Seja M um autmato finito determinsticocom n estados e seja L a linguagem aceita por M . Se w uma palavra de Lcom comprimento maior ou igual a n ento existe uma decomposio de w naforma w = xyz, onde

    (1) y 6= ;(2) |xy| n;(3) xykz L para todo k 0.

    Antes de passar demonstrao, observe que (1) e (3) nos dizem apenasque y subpalavra de w bombevel em L. A nica novidade a condio(2). Esta condio tcnica permite simplificar vrias demonstraes de noregularidade, reduzindo o nmero de casos que precisam ser considerados.

    DEMONSTRAO. A estratgia adotada no incio da seo consistiu emconsiderar o caminho no grafo de M indexado por w. Como observamos nocaptulo 2, isto formalizado atravs da computao de M determinada por w.

    Seja o alfabeto de M . Ento podemos escrever w = 1 n, onde1, . . . , n so elementos de no necessariamente distintos. Seja q1 o estadoinicial de M . Temos, ento, uma computao

    (q1, w) = (q1, 1 n) ` (q2, 2 n) ` ` (qn, n) ` (qn+1, ).Observe que tambm no estamos supondo que os estados q1, . . . , qn+1 sotodos distintos. De fato, dois destes estados tm que coincidir, porque M stem n estados. Digamos que qi = qj , onde 1 i < j n + 1. Qualquerescolha de i e j que satisfaa as condies acima suficiente para provar (1)e (3); mas no (2). Para garantir (2) precisamos escolher qj como sendo oprimeiro estado que coincide com algum estado anterior. Assumindo desde jque i e j so inteiros entre 1 e n+1, precisamos fazer a seguinte hiptese sobrej:

    Hiptese: j o menor inteiro para o qual existe i < j tal que qi = qj .

  • 3. APLICAES DO LEMA DO BOMBEAMENTO 25

    Levando tudo isto em conta, podemos reescrever a computao na forma

    (q1, w) = (q1, 1 n) ` (qi, i n) ` (qj , j n) ` (qn, n) ` (qn+1, ).O ciclo que procuramos est identificado pelo trecho da computao que vaide qi a qj = qi. Isto sugere que devemos tomar

    x = 1 i1, y = i j1 e z = j n+1.Alm disso, como i < j temos que

    y = i j1 6= ,de forma que a condio (1) satisfeita. Usando esta notao, a computaofica

    (q1, w) = (q1, xyz) ` (qi, yz) ` (qj , z) ` (qn+1, ).Note que, como qi = qj , a palavra y leva a computao do estado qi ao estadoqi. Desta forma, repetindo ou omitindo y, podemos fazer este trecho repetir-sevrias vezes no interior da computao sem alterar o estado em que compu-tao termina, que continuar a ser qn+1. Por exemplo, repetindo y uma veztemos a palavra xy2z, que d lugar computao

    (q1, xy2z) ` (qi, y2z) ` (qj , yz) = (qi, yz) ` (qj , z) ` (qn+1, ).

    Como xyz L(M) por hiptese, ento qn+1 um estado final deM . Portanto,xy2z L(M). De maneira semelhante xykz L(M) para todo k 0, o queprova (3).

    Falta-nos apenas explicar porque (2) vale. Mas, |xy| = j 1. Entre-tanto, qj o primeiro estado que coincide com algum estado anterior. Isto ,q1, . . . , qj1 so todos estados distintos. ComoM tem n estados, isto significaque j 1 n. Portanto, |xy| n, o que completa a demonstrao.

    Antes de passar s aplicaes preciso chamar a ateno para o fato de quea recproca do lema do bombeamento falsa. Isto , o fato de uma linguagemL conter palavras que admitem subpalavras bombeveis no garante que Lseja regular. Portanto, no possvel provar regularidade usando o lema dobombeamento. Voltaremos a discutir este ponto no exemplo 5.

    3. Aplicaes do lema do bombeamento

    O maior obstculo aplicao do lema do bombeamento est na inter-pretao correta do seu enunciado. Seja M um autmato finito determinsticocom n estados. Segundo o lema do bombeamento, dada qualquer palavraw L(M) de comprimento maior que n existe uma subpalavra y 6= que bombevel em L(M). Note que o lema no diz que qualquer subpalavra de w bombevel, mas apenas que existe uma subpalavra de w que bombevel.

    Por exemplo, considere a linguagem L no alfabeto {0} formada pelas pa-lavras de comprimento par. fcil construir um autmato finito com 2 estadosque aceita L, portanto esta uma linguagem regular e n = 2. Vamos escolheruma palavra de L de comprimento maior que 2; digamos, 06. No verdade

  • 26 4. LINGUAGENS QUE NO SO REGULARES

    que qualquer subpalavra de 06 bombevel em L. Por exemplo, 0 uma sub-palavra de 06, j que temos uma decomposio 06 = 02 003; mas bombeando0 obtemos

    02 0k 03 = 05+k,que no pertence a L se k por par. De fato, para que a subpalavra seja bom-bevel em L preciso que tenha comprimento par. Assim, neste exemplo,poderamos escolher as subpalavras 02, 04 ou 06 para bombear.

    Tudo isto pode parecer bvio. O problema que um nvel adicional dedificuldade surge nas aplicaes, porque desejamos usar o lema para provarque uma linguagem no regular. Imagine que temos uma linguagem L e que,por alguma razo, desconfiamos que L no regular. Para provar que L de fatono regular podemos proceder por contradio.

    Suponha, ento, por contradio, que L seja aceita por algum autmatofinito determinstico com n estados. De acordo com o lema do bombeamentoqualquer palavra w L de comprimento maior que n ter que admitir umasubpalavra bombevel. Assim, para obter uma contradio, basta achar umapalavra em L (o que uma boa notcia!) que no tenha nenhuma subpalavrabombevel (o que uma m notcia!).

    Um ltimo comentrio antes de passar aos exemplos. Neste esboo de de-monstrao por contradio supusemos que L aceita por um autmato finitodeterminstico com n estados. Entretanto, ao fazer esta hiptese no podemosespecificar um valor numrico para n. De fato, se escolhermos n = 100, tudoo que teremos provado que a linguagem no pode ser aceita por um autmatocom 100 estados. Mas nada impediria, em princpio, que fosse aceita por umautmato com 101 estados. Resta-nos aplicar estas consideraes gerais emalguns exemplos concretos.

    Exemplo 1. Considere a linguagem no alfabeto {0} definida porLprimos = {0p : p um primo positivo}.

    A primeira coisa a observar que esta linguagem infinita. Isto uma con-seqncia de teorema provado pelo matemtico grego Euclides por volta de300 a. C., segundo o qual existem infinitos nmeros primos.

    Em seguida devemos considerar se seria possvel construir um autmatofinito que aceitasse esta linguagem. Para isto, seria necessrio que o autmatopudesse determinar se um dado nmero p primo ou no. Em outras palavras,o autmato teria que se certificar que p no divisvel pelos inteiros positivosmenores que p. Como a quantidade de inteiros menores que p aumenta com p,isto requer uma memria infinita; que exatamente o que um autmato finitono tem. Esta uma boa indicao de que Lprimos no regular. Vamoscomprovar nosso palpite usando o lema do bombeamento.

    Suponha, ento, por contradio, que Lprimos aceita por um autmatofinito determinstico com n estados. Precisamos escolher uma palavra comcomprimento maior que n em Lprimos. Para fazer isto, basta escolher umprimo q > n. A existncia de um tal primo conseqncia imediata do teorema

  • 3. APLICAES DO LEMA DO BOMBEAMENTO 27

    de Euclides mencionado acima. Portanto, 0q uma palavra de Lprimos decomprimento maior que n.

    Nestas circunstncias, o lema do bombeamento garante que existe uma de-composio 0q = xyz de modo que y 6= bombevel em Lprimos. Comoo que desejamos contradizer esta afirmao, temos que mostrar que 0q noadmite nenhuma subpalavra bombevel. Neste exemplo fcil executar estaestratgia neste grau de generalidade. De fato, uma subpalavra no vazia qual-quer de 0q tem que ser da forma 0j para algum 0 < j q. Mas x e z tambmso subpalavras de 0q; de modo que tambm so cadeias de zeros. Tomando,x = 0i, teremos que z = 0qij .

    Bombeando y, conclumos que

    xykz = 0i(0j)k0qij = 0i+jk+(qij) = 0q+(k1)j

    deve pertencer a Lprimos para todo k 0. Mas isto s pode ocorrer se q+(k1)j for um nmero primo para todo k 0. Entretanto, tomando k = q + 1,obtemos

    q + (k 1)j = q + qj = q(1 + j)que no pode ser primo porque tanto q quanto j+1 so nmeros maiores que 1.Temos assim uma contradio, o que confirma nossas supeitas de que Lprimosno regular.

    Note que a condio (2) do lema do bombeamento no foi usada em ne-nhum lugar nesta demonstrao. Como frisamos anteriormente, esta umacondio tcnica que serve para simplificar o tratamento de exemplos maiscomplicados, como veremos a seguir.

    Exemplo 2. Nosso prximo exemplo a linguagem

    L = {ambm : m 0}no alfabeto {a, b}. Tambm neste caso fcil dar um argumento heurstico quenos leva a desconfiar que L no pode ser regular. Lembre-se que o autmatol a entrada da esquerda para a direita. Assim, ele ler toda a seqncia de asantes de chegar aos bs. Portanto, o autmato tem que lembrar quantos as viupara poder comparar com o nmero de bs. Mas a memria do autmato finita,e no h restries sobre a quantidade de as em uma palavra de L.

    Para provar que L no regular vamos recorrer ao lema do bombeamento.Suponha, por contradio, queL aceita por um autmato finito determinsticocom n estados. Em seguida temos que escolher uma palavra w de L comcomprimento maior que n; digamos que w = anbn. Como |w| = 2n > n, temque existir uma decomposio

    anbn = xyz

    de forma que as condies (1), (2) e (3) do lema do bombeamento sejam satis-feitas.

    Mas que decomposies de anbn satisfazem estas condies? Dessa vezcomearemos analisando (2), segundo a qual |xy| n. Isto , xy um prefixo

  • 28 4. LINGUAGENS QUE NO SO REGULARES

    de anbn de comprimento menor ou igual a n. Como anbn comea com n letrasa, conclumos que a o nico smbolo que x e y podem conter. Portanto,

    x = ai e y = aj .

    Alm disso, j 6= 0 pela condio (1). J z rene o que sobrou da palavra w, demodo que

    z = anijbn.

    Observe que no h razo pela qual xy tenha que ser igual a an, de modo quepodem sobrar alguns as em z.

    Resta-nos bombear y. Fazendo isto temos que

    xykz = ai (aj)k anijbn = an+(k1)jbn, um elemento de L para todo k 0. Contudo, an+(k1)jbn s pode pertencera L se os expoentes de a e b coincidirem. Porm

    n+ (k 1)j = n para todo k 0implica que j = 0, contradizendo a condio (1) do lema do bombeamento.

    Antes de passar ao prximo exemplo convm considerar a escolha quefizemos para a palavra de comprimento maior que n. No parece haver nada deextraordinrio nesta escolha, mas a verdade que nem toda escolha de w seriasatisfatria. Por exemplo, assumindo que n 2, teramos que |an1bn1| =2n 2 n. Entretanto, esta no uma boa escolha para w. A razo que

    an1bn1 = xyz e |xy| nno excluem a possibilidade de y conter um b. Isto nos obrigaria a considerardois casos separadamente, a saber, y = aj e y = ajb, o que complicaria umpouco a demonstrao. Diante disto, podemos descrever o papel da condio(2) como sendo o de restringir os possveis y. O problema que isto no sed automaticamente mas, como no exemplo acima, depende de uma escolhaadequada para w.

    Por sorte, na maioria dos casos, muitas escolhas para w so possveis.Neste exemplo, bastaria tomar w = arbr com r n. Entretanto, para algu-mas linguagens a escolha da palavra requer bastante cuidado, como mostra oprximo exemplo.

    Exemplo 3. Um argumento heurstico semelhante ao usado para a linguagemanterior sugere que

    L = {ambr : m r}no deve ser regular. Vamos provar isto usando o lema do bombeamento.

    Suponhamos, por contradio, que L seja aceita por um autmato finitodeterminstico com n estados. Neste exemplo, como no anterior, uma escolhapossvel para uma palavra de comprimento maior que n em L anbn. Dacondio (2) do lema do bombeamento conclumos que, se anbn = xyz, ento

    x = ai e y = aj .

  • 3. APLICAES DO LEMA DO BOMBEAMENTO 29

    J condio (1) nos garante que j 6= 0. Como z = anijbn, obteremos, aobombear y, que

    xykz = ai (aj)k anijbn = an+(k1)jbn.Mas, para que esta palavra esteja em L preciso que

    n+ (k 1)j n,donde segue que (k 1)j 0. Por sua vez, j 6= 0 fora que k 1 0, ouseja, que k 1. Mas, para que y seja bombevel preciso que xykz L paratodo k 0, e no apenas k 1. Portanto, temos uma contradio com o lemado bombeamento, o que prova que L no regular.

    Desta vez estivemos perto de no chegar a lugar nenhum! De fato, umacontradio s obtida porque tomando k = 0,

    an+(k1)jbn = anjbn

    no pertence a L. Entretanto, neste exemplo, muitas escolhas aparentementeadequadas de w no levariam a nenhuma contradio. Por exemplo, fcilse deixar sugestionar pelo sinal e escolher w = an+1bn. Esta palavra temcomprimento maior que n e qualquer decomposio da forma an+1bn = xyzrequer que x e y s tenham as. Entretanto, tomando

    x = ai, y = aj e z = an+1ijbn,

    e bombeando y, obtemos

    xykz = an+1+(k1)jbn

    que pertence a L desde que 1 (1 k)j. Infelizmente, neste caso isto noleva a contradio nenhuma, a no ser que j > 1, e no temos como descartara possibilidade de j ser exatamente 1.

    A prxima linguagem requer uma escolha ainda mais sutil da palavra w.

    Exemplo 4. Considere agora a linguagem

    Luu = {uu : u {0, 1}}.Como nos exemplos anteriores, fcil descrever um argumento heurstico parajustificar porque seria de esperar que Luu no fosse regular, e deixaremos istocomo exerccio. Para provar a no regularidade de Luu pelo lema do bombe-amento, suporemos que esta linguagem aceita por um autmato finito deter-minstico com n estados.

    O principal problema neste caso escolher uma palavra de comprimentomaior que n que nos permita chegar facilmente a uma contradio. A escolhamais bvia u = 0n, que, infelizmente, no leva a nenhuma contradio,como mostra o exerccio 5. Felizmente uma variao simples desta palavra semostra adequada, a saber u = 0n1. Neste caso, w = 0n10n1 tem comprimento2n+ 2 > n, e qualquer decomposio

    0n10n1 = xyz

  • 30 4. LINGUAGENS QUE NO SO REGULARES

    satisfazx = 0i, y = 0j e z = 0nij10n1

    para algum i 0 e j 1. Bombeando y obtemosxykz = 0n+(k1)j10n1

    Para saber se esta palavra pertence ou no a Luu precisamos descobrir se podeser escrita na forma vv para algum v {0, 1}. Igualando

    0n+(k1)j10n1 = vv

    conclumos que v tem que terminar em 1. Como s h um outro 1 na palavra,

    v = 0n+(k1)j1 = 0n1.

    Isto , n + (k 1)j = n. Como j 6= 0, esta igualdade s verdadeira sek = 1. Mas isto contradiz o lema do bombeamento, segundo o qual xykzdeveria pertencer a Luu para todo k 0.

    Os exemplos anteriores mostram que a demonstrao pelo lema do bom-beamento de que uma certa linguagem L no regular obedece a um padro,que esboamos abaixo:

    Suponhamos, por contradio, que L seja aceita por umautmato finito determinstico com n estados. Escolha uma palavra w L, de comprimento maior

    que n, de modo que as possibilidades para uma de-composio da forma w = xyz sejam bastante limi-tadas.

    Bombeie y e mostre que se xykz L ento uma con-tradio obtida.

    As principais dificuldades em fazer funcionar esta estratgia so as seguintes: a escolha de uma palavra w adequada; a identificao correta da condio que a pertinncia xykz L im-

    pe sobre os dados do problema.No exerccio 7 temos um exemplo de demonstrao em que vrios erros foramcometidos na aplicao desta estratgia. Resolver este exerccio pode ajud-loa evitar os erros mais comuns que surgem na aplicao do lema do bombea-mento.

    Infelizmente o lema do bombeamento est longe de ser uma panacia in-falvel. Para ilustrar isto, vamos considerar mais um exemplo.

    Exemplo 5. Seja L a linguagem no alfabeto {a, b, c} formada pelas palavrasda forma aibjcr para as quais i, j, r 0 e, se i = 1 ento j = r. Mostraremosque a nica palavra de L que no admite uma subpalavra bombevel .

    H dois casos a considerar. No primeiro, i 6= 1 e j e r no so ambosnulos. Neste caso a subpalavra bombevel y = b se j 6= 0 ou y = c se r 6= 0.O segundo caso consiste em supor que i = 1, ou que i 6= 1 mas j = r = 0.Desta vez podemos tomar y = a como sendo a palavra bombevel.

  • 4. EXERCCIOS 31

    Como cada palavra de L se encaixa em um destes dois casos, provamosque toda palavra de L admite uma subpalavra bombevel. Entretanto, estalinguagem no regular. Assim, constatamos neste exemplo que:

    a recproca do lema do bombeamento falsa; isto , no basta queo resultado do lema do bombeamento seja verdadeiro para que a lin-guagem seja regular;

    nem sempre o lema do bombeamento basta para mostrar que umalinguagem no regular.

    Provaremos que a linguagem acima de fato no regular no captulo ???. Paraisto, alm do lema do bombeamento, vamos precisar usar um resultado sobre aestabilidade das linguagens regulares por interseco.

    4. Exerccios

    1. Considere o autmato finito determinsticoM no alfabeto {0, 1}, com es-tado inicial q1, conjunto de estados finais {q5, q6, q8} e funo de transio dada pela seguinte tabela:

    0 1

    q1 q2 q6

    q2 q6 q3

    q3 q4 q2

    q4 q2 q5

    q5 q5 q5

    q6 q7 q4

    q7 q8 q4

    q8 q4 q5

    (a) Esboce o diagrama de estados do autmato M .(b) Ache uma subpalavra de 010011101000 que possa ser bombeada na

    linguagem L(M).(c) Sejaw = 00. Verifique quew,w2 L(M). w bombevel emL(M)?

    2. Considere a linguagem L no alfabeto {0, 1} dada porL = {10, 10120, 10120130, 10120130140, . . . }.

    (a) Mostre que L infinita mas no admite nenhuma palavra que tenhauma subpalavra bombevel.

    (b) Mostre que L no regular.

    3. Seja M um autmato finito determinstico e L a linguagem aceita por M .Vimos que para encontrar uma palavra de L que contm uma subpalavrabombevel basta encontrar um caminho no grafo de M que contenha umciclo. Suponha agora que no conhecemos M , mas que conhecemos uma

  • 32 4. LINGUAGENS QUE NO SO REGULARES

    expresso regular r que denota L. De que forma podemos usar r para acharuma palavra de L que tem uma subpalavra bombevel?

    4. Ache uma palavra que contenha uma subpalavra bombevel na linguagemdenotada pela expresso regular

    (1 1 0) (((1 0) 0) 0).

    5. Considere a linguagem

    Luu = {uu : u {0, 1}}.Mostre que, tomando u = 0n, a palavra uu admite uma subpalavra bombe-vel em Luu.SUGESTO: Tome uma subpalavra de comprimento par.

    6. Mostre que se L uma linguagem regular infinita, ento L admite pelosmenos uma palavra que tem uma subpalavra bombevel.

    7. Considere a linguagem

    L = {02n : n 0}.Determine os erros cometidos na demonstrao abaixo de que L no regu-lar. Corrija estes erros e d uma demonstrao correta da no regularidadede L.

    Suponha que L aceita por um autmato finito determinstico.Seja w = 02

    n

    . Pelo lema do bombeamento podemos decompor wna forma w = xyz, onde

    x = 0r, y = 0s e z = 02nrs.

    Bombeando y obtemos

    xykz = 02n+(k1)s.

    Mas para que esta palavra pertena a L preciso que 2n + (k 1)s = 2n, o que s possvel se (k 1)s = 0. Como s 6= 0,conclumos que k s pode ser igual a 1, o que contradiz o lema dobombeamento.

    8. Verifique quais das linguagens dadas abaixo so regulares e quais no so.Em cada caso justifique cuidadosamente sua resposta.(a) {0i12i : i 1};(b) {(01)i : i 1};(c) {12n : n 1};(d) {0n1m0n+m : n,m 1};(e) {12n : n 0};(f) {w : w = wr onde w {0, 1}};(g) {wxwr : w, x {0, 1} \ {}}.

  • 4. EXERCCIOS 33

    Sew uma palavra em um alfabeto entowr a palavra obtida invertendo-se a ordem das letras em w. Portanto se uma palavra satisfaz w = wr ento um palndromo.

    9. Uma palavra w no alfabeto {(, )} balanceada se:(a) em cada prefixo de w o nmero de (s no menor que o nmero de )s

    e(b) o nmero de (s em w igual ao nmero de )s.

    Isto ,w balanceada se pode ser obtida a partir de uma expresso aritmticacorretamente escrita pela omisso das variveis, nmeros e smbolos dasoperaes. Mostre que a linguagem L que consiste nas palavras balanceadasno alfabeto {(, )} no regular.

    10. Use o lema do bombeamento para mostrar que, se uma linguagem L contmuma palavra de comprimento maior ou igual a n e aceita por um aut-mato finito determinstico com n estados, ento L infinita. Use isto paradescrever um algoritmo que permite decidir se a linguagem aceita por umautmato finito determinstico dado ou no infinita.

    11. Seja M um autmato finito determinstico com n estados e seja L a lingua-gem aceita por M .(a) Use o lema do bombeamento para mostrar que seL contm uma palavra

    de comprimento maior ou igual que 2n, ento ela contm uma palavrade comprimento menor que 2n.

    (b) Mostre que L infinita se e somente se admite uma palavra de compri-mento maior ou igual a n e menor que 2n.

    (c) Descreva um algoritmo baseado em (3) que, tendo como entrada umautmato finito determinstico M , determina se L(M) finita ou infi-nita.

    SUGESTO: Para provar (a) use o lema do bombeamento com k = 0.

    12. SejaM um autmato finito determinstico com n estados e um alfabeto dem smbolos.(a) Use (a) para mostrar que L(M) no vazia se e somente se contm

    uma palavra de comprimento menor ou igual a n.(b) Explique como isto pode ser usado para criar um algoritmo que verifica

    se a linguagem de um autmato finito determinstico ou no vazia.(c) Suponha que a linguagem aceita por M vazia. Quantas so as pa-

    lavras que tero que ser testadas antes que o algoritmo de (b) possachegar a esta concluso? O que isto nos diz sobre a eficincia destealgoritmo?

  • CAPTULO 5

    Autmatos finitos no determinsticos

    1. Desenhe o diagrama de estados e descreva a linguagem aceita por cada umdos seguintes autmatos finitos no determinsticos. Em cada caso o estadoinicial q1.(a) F1 = {q4} e a funo de transio dada por:

    1 a b c

    q1 {q1, q2, q3} q2 {q4} q3 {q4}q4

    (b) 2 = 1 e F2 = {q1, q2, q3}.(c) F3 = {q2} e a funo de transio dada por:

    3 a b

    q1 {q2} q2 {q1, q3}q3 {q1, q3}

    2. Determine, usando o algoritmo descrito em aula, autmatos finitos no de-terminsticos que aceitem as linguagens cujas expresses regulares so da-das abaixo:(a) (10 001 010);(b) (1 0)00101;(c) ((0 0) (0 0 0)).

    3. Converta cada um dos autmatos finitos no determinsticos obtidos no exer-ccio anterior em um autmato finito determinstico.

    4. Seja A um autmato finito determinstico com um nico estado final. Con-sidere o autmato finito no determinstico A obtido invertendo os papis

    35

  • 36 5. AUTMATOS FINITOS NO DETERMINSTICOS

    dos estados inicial e final e invertendo tambm a direo de cada seta nodiagrama de estado. Descreva L(A) em termos de L(A).

    5. Seja = {0, 1}. Seja L1 a linguagem que consiste das palavras ondeh pelo menos duas ocorrncias de 0, e L2 a linguagem que consistedas palavras onde h pelo menos uma ocorrncia de 1. Para cada uma daslinguagens L abaixo d uma expresso regular para L e use os algoritmosdescritos em aula para criar um autmato finito no determinstico que aceitaL.(a) L = L1 L2;(b) L = \ L1;(c) L = L1 L2.

    6. Sejam L e L linguagens regulares. Mostre que L \ L regular7. Sejam L e L linguagens tais que L regular, LL regular e LL = .

    Mostre que L regular.

    8. Sejam M e M autmatos finitos no determinsticos em um alfabeto .Neste exerccio discutimos uma maneira de definir um autmato finito nodeterminstico N que aceita a concatenao L(M) L(M ) diferente da quefoi vista em aula. Seja a funo de transio de M . Para construir o grafode N a partir dos grafos de M e M procedemos da seguinte maneira. Todavez que um estado q de M satisfaz

    para algum , o conjunto (q, ) contm um estadofinal,

    acrescentamos uma transio de q para o estado inicial de M , indexada por.(a) Descreva detalhadamente todos os ingredientes de N . Quem so os

    estados finais de N?(b) Mostre que se / L(M) ento N aceita L(M) L(M ).(c) Se L(M) ento pode ser necessrio acrescentar mais uma transio

    para que o autmato aceite L(M) L(M ). Que transio esta?9. Seja M um autmato finito determinstico no alfabeto , com estado inicialq1, conjunto de estados Q e funo de transio . Dizemos que M temreincio se existem q Q e tais que

    (q, ) = q1.

    Em outras palavras, no grafo de M h uma seta que aponta para q1. Mos-tre como possvel construir, a partir de um autmato finito determins-tico M qualquer, um autmato finito determinstico M sem reincio tal queL(M) = L(M ).

    10. SejamA eA autmatos finitos determinsticos com alfabeto , conjunto deestados Q e Q, estados iniciais q1 e q1, conjuntos de estados finais F e F

    e funes de transio e . Seja M o autmato finito determinstico comalfabeto , conjunto de estados Q1 Q2, estado inicial (q1, q1), conjunto

  • 5. AUTMATOS FINITOS NO DETERMINSTICOS 37

    de estados finais F1 F2 e funo de transio dada por((q, q), ) = (1(q, ), 2(q, )),

    onde q Q, q Q e .(a) Mostre que L(M) = L(A) L(A).(b) Use (a) para dar uma outra demonstrao de que a interseo de lingua-

    gens regulares regular.(c) Use esta construo para obter um autmato finito determinstico que

    aceita a linguagem L do exerccio 6(c).

    11. Seja L uma linguagem que regular. Definimos o posto de L como sendo omenor inteiro positivo k para o qual existe um autmato finito determinsticoA com k estados e tal que L = L(A).(a) Se L1 e L2 so linguagens regulares cujos postos so k1 e k2 respecti-

    vamente, determine m (em termos de k1 e k2) de modo que o posto deL1 L2 seja menor ou igual a m.

    (b) Considere a afirmao: se L1 L2 so linguagens regulares entoo posto de L1 tem que ser menor ou igual que o posto de L2. Estaafirmao verdadeira ou falsa? Justifique sua resposta com cuidado!

  • CAPTULO 6

    Operaes com autmatos finitos

    No captulo 3 vimos como obter a expresso regular da linguagem aceitapor um autmato finito. Agora, comeamos a preparar o terreno para poder re-solver o problema inverso; isto , dada uma expresso regular r em um alfabeto, como construir um autmato finito M que aceita L(r)? Nossa estratgiaconsistir em usar r como uma receita recursiva para construirM. Contudo, r construda, a partir dos smbolos de , por aplicaes repetidas das operaesde unio, concatenao e estrela. Assim, para poder usar r como uma receitapara construirM precisamos antes solucionar o seguinte problema:

    dados autmatos finitosM eM em um alfabeto cons-tuir autmatos finitos que aceitemL(M)L(M), L(M)L(M) e L(M).

    exatamente isto que faremos neste captulo.

    1. Unio

    Suponhamos queM eM so autmatos finitos no determinsticos emum mesmo alfabeto . Mais precisamente, digamos que

    (1.1) M = (, q1, Q, F, ) e M = (, q1, Q, F , ).Assumiremos, tambm, que QQ = . Observe que esta hiptese no repre-senta nenhuma restrio expressiva, j que para alcan-la basta renomear osestados deM, no caso de serem denotados pelo mesmo nome que os estadosdeM.

    Um outro detalhe que vale a pena mencionar que, tanto nesta construo,como na da concatenao, estamos supondo que ambos os autmatos estodefinidos para um mesmo alfabeto. Novamente, esta restrio apenas apa-rente j que os autmatos no precisam ser determinsticos. De fato, podemosaumentar o alfabeto de entrada de um autmato no determinstico o quantoquisermos, sem alterar o seu comportamento. Para isso basta decretar que as

    39

  • 40 6. OPERAES COM AUTMATOS FINITOS

    transies pelos novos estados so todas vazias. No caso da unio, isto sig-nifica que, seM eM tiverem alfabetos de entrada e diferentes, entopodemos considerar ambos como autmatos no alfabeto . Para maisdetalhes veja o exerccio 1.

    Vejamos como deve ser o comportamento de um autmato finitoMu paraque aceite L(M) L(M). O autmato Mu aceitar uma palavra w somente quando w for aceita por M ou por M. Mas, para descobrir isto,Mu deve ser capaz de simular estes dois autmatos. Como estamos partindodo princpio de queMu no determinstico, podemos deix-lo escolher qualdos dois autmatos vai querer simular em uma dada computao. Portanto, aoreceber uma palavra w, o autmatoMu:

    escolhe se vai simularM ouM; executa a simulao escolhida e aceita w apenas se for aceita pelo

    autmato cuja simulao est sendo executada.Uma maneira de realizar isto em um autmato finito criar um novo estadoinicial q0 cuja nica funo realizar a escolha de qual dos dois autmatos sersimulado. Mais uma vez, como Mu no determinstico, podemos deix-lodecidir, por si prprio, qual o autmato que ser simulado.

    Ainda assim, resta um problema. De fato, todos os smbolos de w seronecessrios para que as simulaes deM eM funcionem corretamente. Con-tudo, nossos autmatos precisam consumir smbolos para efetuar suas transi-es. Digamos, por exemplo, que ao receber w no estado q0 o autmatoMuescolhe simularM com entrada w. Entretanto, para poder simularM em w,Mu precisa deixar q0 e chegar ao estado inicial q1 de M ainda tendo w porentrada, o que no possvel. Resolvemos este problema fazendo com queq0 comporte-se, simultaneamente, como q1 ou como q1, dependendo de qualautmatoMu escolheu simular. Mais precisamente, seMu escolheu simularM, ento q0 realiza a transio a partir do primeiro smbolo dew como se fosseuma transio deM a partir de q1 por este mesmo smbolo.

    Para poder formalizar isto, digamos que w = u, onde e u .Neste caso, seMu escolheu simularM, devemos ter que

    (q0, w) ` (p, u) se, e somente se, p (q1, ).Podemos dissecar o comportamento deMu a partir de q0 como duas escolhassucessivas:

    (1) primeiroMu decide se vai simularM ouM;(2) a seguir,Mu escolhe qual a transio que vai ser executada por , a

    partir de q1 ou q1dependendo da escolha feita em (1).Denotando por u a funo de transio deMu, podemos resumir isto escre-vendo

    u(q0, ) = (q1, ) (q1, ).O comportamento geral de Mu pode ser ilustrado em uma figura, como

    segue. As transies que foram acrescentadas como parte da construo deMu aparecem tracejadas.

  • 1. UNIO 41

    '&%$ !"#/.-,()*+q1

    77oooooooo

    ''OOOOO

    OOO M '&%$ !"# '&%$ !"#

    /.-,()*+q0

    77oooooooooo

    ??

    ''OOO

    OOOO

    OOO

    ##GG

    GG

    GG

    GG

    GG

    G

    ?

    ??

    ??

    ??

    ??

    ??

    ?

    '&%$ !"#/.-,()*+q1

    77oooooooo

    ''OOOOO

    OOO// M

    '&%$ !"#

    Como a figura sugere, os estados de Mu so os mesmos de M e M,exceto por q0. Quanto aos estados finais, precisamos ser mais cuidadosos. Emprimeiro lugar, uma vez tendo passado por q0, o autmato Mu meramentesimulaM ouM. Portanto, a descrio dos estados finais deMu s apresentaalgum problema se q1 F ou q1 F . Por exemplo, se q1 for final, entoM e, portanto,Mu, dever aceitar . Mas isto s pode ocorrer se q0 for final.Portanto, q0 dever ser declarado como final sempre que q1 ou q1 forem finais.

    Vamos formalizar a construo, listando os vrios elementos deMu um aum:

    Alfabeto: ;Estados: {q0} Q Q;Estado inicial: q0;Estados finais:

    {q0} F F se q1 F ou q1 F F F se q1 / F e q1 / F

    Funo de transio:

    u(q, ) =

    (q1, ) (q1, ) se q = q0(q, ) se q Q(q, ) se q Q

  • 42 6. OPERAES COM AUTMATOS FINITOS

    Vejamos como a construo se comporta em um exemplo. Considere oautmato finito determinsticoMpar, com grafo

    I // GFED@ABC?>=====

  • 1. UNIO 43

    durante a computao

    (q1, a2) ` (q2, a) ` (q1, ).

    Simulando a mesma computao emMu, teremos(q0, a

    2) ` (q2, a) ` (q1, ).Note que emboraMu parta de q0, na terceira etapa da computao elealcana q1, exatamente comoM. Assim, q0 substitui q1 apenas quandoeste ltimo est desempenhando o papel de estado inicial.

    Para esclarecer, de forma definitiva, todos os detalhes da construodeMu, provaremos formalmente que

    L(Mu) = L(M) L(M).Faremos isto no caso geral, admitindo queM eM so os autmatosno determinsticos definidos em (1.1). Nossa demonstrao consisteem provar que w aceita porMu se, e somente se, for aceita porM ouM. Se w = no h muito o que dizer, por isso deixamos estecaso aos seus cuidados. De agora em diante estaremos assumindo quew 6= . Com isso, podemos escrever w na forma

    w = u, onde e u .Antes de prosseguir, convm enunciar claramente as propriedades

    de Mu que sero utilizadas na demonstrao. Em primeiro lugar, osestados e transies deM e deM correspondem um a um, aos estadose transies deMu, exceto por q0 e suas transies. Assim,

    toda computao emM pode ser reproduzida literalmente (querdizer, com os mesmos estados e transies) como uma compu-tao deMu; reciprocamente, qualquer computao de Mu a partir de um

    estado deM pode ser reproduzida literalmente emM.Naturalmente, as mesmas afirmaes valem se substitumosM porM.Em segundo lugar,

    (1.2) se p (q1, ) ento p u(q0, ).Digamos, primeiramente, quew L(M). Temos, ento, uma com-

    putao(q1, u) ` (p, u) ` (f, ),

    onde p Q e f F . Mas, por (1.2),se (q1, u) ` (p, u) em M, ento (q1, u) ` (p, u) em Mu.

    Por outro lado, da primeira propriedade acima, a computao (p, u) `(f, ) em M pode ser reproduzida, passo a passo, e com os mesmos

  • 44 6. OPERAES COM AUTMATOS FINITOS

    estados e transies, como uma computao deMu. Obtemos, assim, acomputao

    (q0, u) ` (p, u) ` (f, ),emMu. Como f final emM, ele tambm ser final emMu, de modoque toda palavra aceita por M ser aceita por Mu; isto L(M) L(Mu). Um argumento anlogo mostra que L(M) L(Mu).

    Esta primeira parte do argumento pressupe que todos os estadosno redundantes de M e M sejam tambm estados de Mu. Mas huma exceo a esta afirmao. Digamos, por exemplo, que q1 seja ina-cessvel a partir de qualquer estado deM, inclusive dele prprio. Nestecaso, q1 vai se tornar redundante em Mu. Isto acontece porque umacomputao s pode passar por q1 uma vez e, mesmo assim, somente secomear deste estado, ao passo que as computaes de Mu comeamde q0. Este fenmeno ocorre, por exemplo, com o estado q1 no exemplodescrito acima.

    Suponha, agora, que

    w = u L(Mu).Teremos, ento, uma computao emMu da forma(1.3) (q0, u) ` (p, u) ` (f, ),onde f um estado final de Mu. Pela definio das transies emMu devemos ter que p Q ou p Q. Suporemos, sem perda degeneralidade, que p Q. Contudo, qualquer transio emMu a partirde um estado deM tambm uma transio deM. Como p Q, istosignifica que

    (p, u) ` (f, )ter que corresponder, passo a passo, a uma computao em M. Por-tanto, usando (1.2), obtemos uma computao

    (q1, u) ` (p, u) ` (f, ),emM. Como f um estado final deMu que pertence a Q, conclumosque f F . Logo, w aceita porM.

    Observe que a segunda parte da demonstrao est ancorada no fatode nenhuma transio deMu poder chegar em q0. Se isto pudesse acon-tecer,Mu poderia executar parte da computao emM, retornar a q0, econtinuar com uma computao deM. Entretanto, o argumento acimas funciona porque, uma vez queMu tenha alcanado um estado deM,ele fica preso neste ltimo autmato, e assim obrigado a se comportarcomoM.

  • 2. CONCATENAO 45

    2. Concatenao

    A segunda operao de linguagens que precisamos transcrever paraos autmatos a concatenao. Suponhamos, mais uma vez, que temosdois autmatosM eM no mesmo alfabeto , cujos elementos so

    M = (, q1, Q, F, ) e M = (, q1, Q, F , ).Continuaremos assumindo que Q Q = .

    Nosso objetivo construir um autmatoMc que aceite a concate-nao L(M) L(M). Assim, dada uma palavra w , o autmatoMc precisa verificar se existe um prefixo de w que aceito por M eque seguido de um sufixo aceito por M. Naturalmente isto sugereconectar os autmatos M e M em srie; quer dizer, um depois dooutro. Alm disso, para que o prefixo esteja em L(M) o ltimo estadodeM alcanado em uma computao por w deve ser final. Finalmente, mais fcil construir um modelo no determinstico deMc, j que notemos como saber exatamente onde acaba o prefixo de w que pertence aL(M).

    Nossa experincia com a unio deixa claro que no adianta conec-tar os autmatos atravs de transies de um estado final de M parao estado inicial deM. Isto s seria possvel se nossos autmatos pu-dessem efetuar transies sem consumir nenhum smbolo da entrada.Contornamos o problema, como fizemos no caso da unio, construindoas transies diretamente dos estados finais de M para os sucessoresdo estado inicial deM. Podemos ilustrar a construo em uma figura,como segue.

    '&%$ !"# ,,d b a _ ] \ Z

    ++

    MO

    QR

    TU W

    '&%$ !"#76540123q1

    77ooooooooo

    ''OOOOO

    OOOO // M ?>=

  • 46 6. OPERAES COM AUTMATOS FINITOS

    aceita por Mc. Quer dizer, toda palavra em L(M) tambm pertencea L(Mc) = L(M) L(M). Entretanto, isto s pode acontecer se L(M); ou, o que equivalente, se q1 estado final deM. Casocontrrio, apenas os estados finais deM sero finais emM.

    Formalizaremos a construo, listando os vrios elementos deMcum a um:

    Alfabeto: ;Estados: Q Q;Estado inicial: q1;Estados finais:

    F F se q1 F F se q1 / F

    Funo de transio:

    c(q, ) =

    (q, ) se q Q \ F(q, ) (q1, ) se q F(q, ) se q Q

    A demonstrao de que esta construo funciona corretamente bastante simples e segue a linha da demonstrao para a unio dadana seo anterior, por isso vamos omiti-la. Vejamos como a construose comporta quando aplicada aos autmatos utilizados no exemplo daseo 1. Comearemos concatenandoMpar comMab:

    GFED@ABCq1b

    a++

    a

    55

    GFED@ABCq2b

    akk

    GFED@ABCq1 a // GFED@ABCq2 b // GFED@ABC?>==>

    GFED@ABC?>=

  • 3. ESTRELA 47

    Neste caso temos duas transies a partir do estado final de Mab,porque q1 tem como sucessores q2 e o prprio q1.

    3. Estrela

    Tendo mostrado como construir um autmato para a concatenao,no parece to difcil lidar com a estrela. Afinal, se L uma linguagem,ento L obtida concatenando L com ela prpria mais e mais vezes;isto , calculando a unio das Lj , para todo j 0. Portanto, uma ma-neira de realizar um autmatoM, que aceite L, consistiria em conectara sada deM com sua entrada. Com isso a concatenao passaria infini-tas vezes pelo prprioM, e teramos um novo autmatoM que aceitaL. Vamos testar esta idia em um exemplo e ver o que acontece.

    Considere o autmato finitoN no alfabeto {a, b}, cujo grafo dadopor

    GFED@ABCq1 a // GFED@ABCq2b

    ~~}}}}

    }}}}

    }

    GFED@ABC?>==

  • 48 6. OPERAES COM AUTMATOS FINITOS

    Vamos fazer isto e ver o que acontece. O grafo do autmato passaria aser o seguinte:

    GFED@ABC?>====

  • 3. ESTRELA 49

    novas transies aparecem tracejadas.

    '&%$ !"# BCED

    GF_ _ _ _ _ _ _@A

    76540123'&%$ !"#q0//

    n li g

    e c a

    //

    P R U W Y [ ]

    76540123q177ooooooo

    ''OOOOO

    OO M '&%$ !"# ED

    BC

    @A_ _ _ _ _ _ _

    GF

    Formalizaremos a construo, listando os vrios elementos deM,como segue:

    Alfabeto: ;Estados: {q0} Q;Estado inicial: q0;Estados finais: F {q0}Funo de transio:

    (q, ) =

    (q1, ) se q = q0(q, ) se q Q \ F(q, ) (q1, ) se q F

    Encerramos a seo com a demonstrao de que esta construofunciona corretamente. Em primeiro lugar, como aceita por constru-o, podemos limitar nossa discusso a uma palavra w 6= que pertenaa .

    Como em nossa discusso do autmato que aceita a unio de lin-guagens, isolaremos duas propriedades da definio de M que seroutilizadas na demonstrao. Em primeiro lugar, se (q1, ) ` (p, ) emM, ento existiro transies emM da forma

    (q0, ) ` (p, ),e, tambm, da forma

    (f, ) ` (p, ) para cada estado final f de M.Que q0 comporta-se como se fosse q1 bvio da maneira como suastransies foram definidas. J a segunda parte da afirmao segue dofato de que tambm fizemos cada estado final deM comportar-se comose fosse q1 ao concatenarM com ele prprio. Outro ponto importante que toda computao emM pode ser simulada porM com os mesmos

  • 50 6. OPERAES COM AUTMATOS FINITOS

    estados e transies, j queM foi inteiramente preservado dentro deM.

    Seja L = L(M). Como sempre, temos que provar que toda pa-lavra que pertence a L aceita por M, e vice-versa. Comearemosmostrando L L(M). Digamos que w L. Neste caso, podemosescrever w na forma

    w = w1w2 wk onde w1, w2, . . . , wk L.Digamos que wj = juj , com j e uj . Como cada wjpertence a L, tem que existir uma computao

    (q1, wj) ` (pj , uj) ` (fj , ),onde pj Q e fj F . Mas o estado inicial q0 de M simula ocomportamento de q1, e M capaz de simular qualquer computaoemM. Portanto, podemos construir uma computao emM da forma:

    (q0, 1u1w2 wk) ` (p1, u1w2 wk) ` (f1, w2 wk).Por outro lado, tambm podemos construir computaes da forma

    (fj , wj+1 wk) = (fj , j+1uj+1 wk) ` (pj+1, uj+1 wk)` (fj+1, wj+2 wk),

    para todo 1 j < k. Emendando o incio de cada uma dessas compu-taes ao final da outra, obtemos

    (q0, w1w2 wk) ` (f1, w2 wk) ` (f2, w3 wk) ` (fk1, wk)` (fk, ),

    provando, assim, queM aceita w.Passamos, agora, a mostrar que L(M) L. Para facilitar a dis-

    cusso, distinguiremos dois tipos de transio emM:Primeiro tipo: as transies a partir de q0, alm de todas aquelas

    que j eram transies deM;Segundo tipo: transies queM faz a partir dos estados finais

    deM, como se fossem q1.Suponha, agora, que w aceita porM. Neste caso existe uma compu-tao

    (q0, w) ` (f, ),emM. Percorrendo, agora, esta computao, vamos dividi-la em par-tes de modo que a primeira transio de cada segmento, a partir do se-gundo, seja uma transio do segundo tipo. Se wj for a subpalavra de

  • 4. EXERCCIOS 51

    w consumida ao longo do j-simo segmento, podemos escrever os seg-mentos na forma

    (q0, w) ` (f1, w2 wk)(f1, w2 wk) ` (f2, w3 wk)

    ...

    (fk1, wk) ` (fk, ),onde f1, . . . , fk F . Alm disso, se wj = juj , com j euj , ento a transio do segundo tipo pode ser isolada em cadasegmento

    (fj , wjwj+1 wk) = (fj , jujwj+1 wk) ` (pj , ujwj+1 wk)` (fj+1, wj+1 wk),

    para todo 1 j < k, onde pj Q. Temos, assim, computaes daforma

    (fj , wj) = (fj , juj) ` (pj , uj) ` (fj+1, ),emM, que por sua vez do lugar a computaes da forma

    (q1, wj) = (fj , juj) ` (pj , uj) ` (fj+1, ),emM. Portanto, w2, . . . , wk L. Um argumento semelhante mostraque w1 L, e nos permite concluir que

    w = w1w2 wk L,como nos faltava mostrar.

    4. Exerccios

    1. Sejam dois alfabetos. Suponha que M um autmato fi-nito no determinstico no alfabeto . Construa formalmente umautmato finito no determinsticoM no alfabeto , de modo queL(M) = L(M). Prove que sua construo funciona corretamente.SUGESTO: Defina todas as transies deM por smbolos de \como sendo vazias.

    2. Seja = {0, 1}. Suponha que L1 a linguagem que consistedas palavras onde h pelo menos duas ocorrncias de 0, e que L2 a linguagem que consiste das palavras onde h pelo menos umaocorrncia de 1.(a) Construa autmatos finitos no determinsticos que aceitem L1 e

    L2.(b) Use os algortimos desta seo para criar autmatos finitos no

    determinsticos que aceitem L1 L2, L1 L2, L1 e L2.

  • 52 6. OPERAES COM AUTMATOS FINITOS

    3. Sejam M e M autmatos finitos no determinsticos em um alfabeto. Neste exerccio discutimos uma maneira de definir um autmatofinito no determinsticoN , que aceita a concatenaoL(M)L(M ),e que diferente do que foi vista na seo 2. Seja a funo detransio de M . Para construir o grafo de N a partir dos grafos de Me M procedemos da seguinte maneira. Toda vez que um estado q deM satisfaz

    para algum , o conjunto (q, ) contm umestado final,

    acrescentamos uma transio de q para o estado inicial de M , inde-xada por .(a) Descreva detalhadamente todos os elementos de N . Quem so

    os estados finais de N?(b) Mostre que se / L(M) ento N aceita L(M) L(M ).(c) Se L(M) ento pode ser necessrio acrescentar mais uma

    transio para que o autmato aceite L(M) L(M ). Que transi-o esta?

    4. Seja M um autmato finito determinstico no alfabeto , com estadoinicial q1, conjunto de estados Q e funo de transio . Dizemosque M tem reincio se existem q Q e tais que

    (q, ) = q1.

    Em outras palavras, no grafo de M h uma seta que aponta para q1.Mostre como possvel construir, a partir de um autmato finito de-terminstico M qualquer, um autmato finito determinstico M semreincio tal que L(M) = L(M ).

    5. Sejam M e M autmatos finitos determinsticos no alfabeto cujoselementos so (, Q, q1, F, ) e (, Q, q1, F , ), respectivamente.Defina um novo autmato finito determinstico N construdo a partirde M e M como segue:

    Alfabeto: ;Estados: pares (q, q) onde q Q e q Q;Estado inicial: (q1, q1);Estados finais: pares (q, q) onde q F ou q F ;Transio: a funo de transio definida em um estado (q, q)

    de N e smbolo por((q, q), ) = (p, p),

    onde p = (q, ) e p = (q, ).Calcule L(N) em funo de L(M) e L(M ) e prove que a sua res-posta est correta.

  • CAPTULO 7

    Autmatos de expresses regulares

    No captulo ?? vimos como obter a expresso regular da linguagemaceita por um autmato finito. Neste captulo, resolvemos o problemainverso; isto , dada uma expresso regular r em um alfabeto , cons-trumos um autmato finito que aceita L(r). Na verdade, o autmatoque resultar de nossa construo no ser determinstico. Mas isto no um problema, j que sabemos como convert-lo em um autmato de-terminstico usando a construo de subconjuntos.

    1. Consideraes gerais

    Seja r uma expresso regular r no alfabeto . Nossa estratgiaconsistir em utilizar a expresso regular r como uma receita para aconstruo de um autmato finito no determinsticoM(r) que aceitaL(r). Entretanto, como vimos no captulo ??, r definida, de maneirarecursiva, a partir dos smbolos de , e , por aplicao sucessivadas operaes de unio, concatenao e estrela. Por isso, efetuaremos aconstruo deM(r) passo passo, a partir dos autmatos que aceitamos smbolos de , e .

    Contudo, para que isto seja possvel, precisamos antes de resolveralguns problemas. O primeiro, e mais simples, consiste em construirautmatos finitos que aceitem um smbolos de , ou ou . Estes aut-matos funcionaro como os tomos da construo. Os problemas maisinteressantes dizem respeito construo de novos autmatos a partir deautmatos j existentes. Suponhamos, ento, queM1 eM2 so aut-matos finitos no determinsticos. Precisamos saber construir

    (1) um autmatoMu que aceita L(M1) L(M2);(2) um autmatoMc que aceita L(M1) L(M2); e(3) um autmatoM1 que aceita L(M1).

    53

  • 54 7. AUTMATOS DE EXPRESSES REGULARES

    Se formos capazes de inventar maneiras de construir todos estes aut-matos, ento seremos capazes de reproduzir a montagem de r passo passo no domnio dos autmatos finitos, o que nos levar a um autmatofinito que aceita L(r), como desejamos.

    Comearemos descrevendo os tomos desta construo; isto , osautmatos que aceitam smbolos de , e . Seja . Um autmatosimples que aceita dado pelo grafo

    I // GFED@ABCq1 // GFED@ABC?>==

  • 2. UNIO 55

    em uma dada computao. Portanto, dada uma palavra w a Mu, eleexecuta a seguinte estratgia:

    escolhe se vai simularM ouM; executa a simula ao escolhida e aceita w apenas se for aceita

    pelo autmato cuja simulao est sendo executada.

    Uma maneira de realizar isto em um autmato finito criar um novoestado inicial q0 cuja nica funo realizar a escolha de qual dos doisautmatos ser simulado. Mais uma vez, comoMu no determins-tico, podemos deix-lo decidir, por si prprio, qual o autmato que sersimulado.

    Ainda assim, resta um problema. De fato, todos os smbolos de wsero necessrios para que as simulaes deM eM funcionem corre-tamente. Contudo, nossos autmato precisam consumir smbolos parase mover. Digamos, por exemplo, que ao receber w no estado q0 o aut-mato Mu escolhe simular M com entrada w. Entretanto, para podersimularM em w,Mu precisa deixar q0 e chegar ao estado inicial q1 deM ainda tendo w por entrada, o que no possvel. Resolvemos esteproblema fazendo com que q0 comporte-se, simultaneamente, como q1ou como q1, dependendo de qual autmatoMu escolheu simular. Maisprecisamente, seMu escolheu simularM, ento q0 realiza a transioa partir do primeiro smbolo de w como se fosse uma transio deM apartir de q1 por este mesmo smbolo.

    Para poder formular isto formalmente, digamos que w = u, onde e u . Neste caso, seMu escolheu simularM, devemos terque

    (q0, w) ` (p, u) se, e somente se, p (q1, ).

    Podemos dissecar o comportamento de Mu a partir de q0 como duasescolhas sucessivas:

    (1) primeiroMu decide se vai simularM ouM;(2) a seguir,Mu escolhe qual a transio que vai ser executada por

    , a partir de q1 ou q1dependendo da escolha feita em (1).

    Denotando por u a funo de transio deMu, podemos resumir istoescrevendo

    u(q0, ) = (q1, ) (q1, ).

    O comportamento geral de Mu pode ser ilustrado em uma figura,como segue.

  • 56 7. AUTMATOS DE EXPRESSES REGULARES

    '&%$ !"#76540123q1

    77ooooooooo

    ''OOOOO

    OOOO M '&%$ !"#

    '&%$ !"#

    76540123q0

    77oooooooooooooooooooo

    ??

    ''OOOOO

    OOOOOO

    OOOOOO

    OOO

    ##GGG

    GGGG

    GGGG

    GGGG

    GGGG

    GGG

    ??

    ????

    ????

    ????

    ????

    ????

    ????

    '&%$ !"#76540123q1

    77ooooooooo

    ''OOOOO

    OOOO // M

    '&%$ !"#

    Como a figura sugere, a parte q0, os estados deMu so os mesmosdeM eM. Quanto aos estados finais, precisamos ser mais cuidado-sos. Como, uma vez tendo passado por q0, o autmatoMu meramentesimulaM ouM, s pode haver algum problema se um dos estados q1ou q1 for final. Por exemplo, se q1 for final, entoM e, portanto,Mu,dever aceitar . Mas isto s pode ocorrer se q0 for final. Portanto, q0dever ser declarado como final sempre que q1 ou q1 forem finais.

    Vamos formalizar a construo deMu antes de fazer um exemplo.Listando os vrios elementos deMu um a um temos

    Alfabeto: ;Estados: {q0} Q Q;Estado inicial: q0;Estados finais:

    {q0} F F se q1 F ou q1 F F F se q1 / F e q1 / F

  • 2. UNIO 57

    Funo de transio:

    u(q, ) =

    (q1, ) (q1, ) se q = q0(q, ) se q Q(q, ) se q Q

    Vejamos como a construo se comporta em um exemplo. Consi-dere os autmatos finitosM eM cujos grafos so, respectivamente

    I // GFED@ABC?>==

  • CAPTULO 8

    Gramticas lineares direita

    Neste captulo comeamos o estudo das gramticas formais, quesero introduzidas a partir da noo de autmato finito.

    1. Exerccios

    1. Determine gramticas lineares direita que gerem as linguagens de-notadas pelas seguintes expresses regulares:(a) (0 1) 0;(b) (0 1) (1 0);(c) ((0 1) (1 0)).

    2. Ache a expresso regular que denota a linguagem regular gerada pelagramtica com variveis S,A,B, terminais a, b, smbolo inicial S eregras:

    S bA | aB | A abaSB babS.

    3. Ache uma gramtica linear direita que gere a seguinte linguagem

    {w {0, 1} : w no contm a seqncia aa}.4. Ache gramticas lineares direita que gerem cada uma das lingua-

    gens regulares do exerccio 2 da 2a lista de exerccios.

    5. Ache autmatos finitos que aceitem as linguagens geradas pelas gra-mticas lineares direita no alfabeto {0, 1} e smbolo inicial S, comas seguintes regras:(a) S 011X , S 11S, X 101Y , Y 111.(b) S 0X , X 1101Y , X 11X , Y 11Y , X 1.

    59

  • 60 8. GRAMTICAS LINEARES DIREITA

    6. Seja L uma linguagem regular no alfabeto . Mostre que L \ {}pode ser gerada por uma gramtica linear direita cujas regras sodos tipos X Y ou X ,

    onde X,Y so variveis e um smbolo de .

  • CAPTULO 9

    Linguagens livres de contexto

    Neste captulo comeamos a estudar uma classe de gramticas fun-damental na descrio das linguagens de programao: as gramticaslivres de contexto. 1

    1. Gramticas e linguagens livres de contexto

    J vimos no captulo anterior que uma gramtica descrita pelosseguintes ingredientes: terminais, variveis, smbolo inicial e regras. claro que, em ltima anlise, quando pensamos em uma gramticao que nos vem a cabea so suas regras; os outros ingredientes so,de certo modo, circunstanciais. Assim, o que diferencia uma classe degramticas da outra o tipo de regras que nos permitido escrever. Nocaso de gramticas lineares direita, as regras so extremamente rgidas:uma varivel s pode ser levada na concatenao de uma palavra nosterminais com alguma varivel, alm disso a varivel tem que estar direita dos terminais.

    J as linguagens livres de contexto, que estaremos estudando nestecaptulo, admitem regras muito mais flexveis. De fato a nica restrio que esquerda da seta s pode aparecer uma varivel. Talvez vocesteja se perguntando: mas o que mais poderia aparecer esquerda de

    1Agradeo ao David Boechat pelas correes a uma verso anterior deste captulo

    61

  • 62 9. LINGUAGENS LIVRES DE CONTEXTO

    uma seta? Voltaremos a esta questo na seo 2, depois de considerarvrios exemplos de linguagens que so livres de contexto. Mas antes dosexemplos precisamos dar uma definio formal do que uma gramticalivre de contexto.

    Seja G uma gramtica com conjunto de terminais T , conjunto de va-riveis V e smbolo inicial S V . Dizemos que G livre de contexto setodas as suas regras so do tipo X w, onde X V e w (T V ).

    Observe que as regras de uma gramtica linear direita so destetipo. Portanto, toda gramtica linear direita livre de contexto. Poroutro lado, evidente que nem toda gramtica livre de contexto linear direita. Um exemplo simples dado pela gramtica G1 com terminaisT = {0, 1}, variveis V = {S}, smbolo inicial S e conjunto de regras

    {S 0S1, S }.Como do lado esquerdo de cada seta s h uma varivel, G1 livre decontexto. Contudo, G1 no linear direita porque S 0S1 tem umterminal direita de uma varivel.

    Outro exemplo simples a gramtica G2 com terminais T = {0, 1},variveis V = {S,X}, smbolo inicial S e conjunto de regras

    {S X1X,X 0X, X }.Mais uma vez, apesar de ser claramente livre de contexto, esta gramticano linear direita, por causa da regra S X1X .

    Os dois