Linguagem Formal

download Linguagem Formal

of 161

Transcript of Linguagem Formal

  • 8/6/2019 Linguagem Formal

    1/161

    Autmatos e Linguagens Formais

    S. C. Coutinho

    Universidade Federal do Rio de Janeiro

    i

  • 8/6/2019 Linguagem Formal

    2/161

    ii

    c by S. C. Coutinho 2007

  • 8/6/2019 Linguagem Formal

    3/161

    Agradeo a

    David Boechat Gabriel Rosrio

    pelas correes s notas de aula.

  • 8/6/2019 Linguagem Formal

    4/161

  • 8/6/2019 Linguagem Formal

    5/161

  • 8/6/2019 Linguagem Formal

    6/161

    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 111

    4. 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 deU 1505. Linguagens no recursivas 151

    6. O problema da parada 152

    Referncias Bibliogrficas 155

  • 8/6/2019 Linguagem Formal

    7/161

    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-exemplo

    para as falsas.(a) se A B = A C ento B = C;

    1

  • 8/6/2019 Linguagem Formal

    8/161

    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) = (A B) (A C);(b) A (B C) = (A B) (A C);(c) A (B \ C) = (A B) \ (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) L1R;(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);

  • 8/6/2019 Linguagem Formal

    9/161

    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 q5q4 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

  • 8/6/2019 Linguagem Formal

    10/161

    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.

  • 8/6/2019 Linguagem Formal

    11/161

    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 de M, 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

  • 8/6/2019 Linguagem Formal

    12/161

    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, entoni=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 do

    autmato. Considerando em detalhe o argumento do pargrafo acima, vemosque assumimos implicitamente que u = , j que estamos explicitando o seu

    primeiro 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 determinstico M com alfabeto {0, 1} e cujo

    grafo

    I GG ?>====

  • 8/6/2019 Linguagem Formal

    13/161

    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 por M.Como seria de esperar, as coisas nem sempre so to diretas. Afinal, o

    autmato 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 GG ?>==

  • 8/6/2019 Linguagem Formal

    14/161

    8 3. EXPRESSES REGULARES

    2. Lema de Arden

    Na verdade, ao aplicar o mtodo de substituio para resolver sistemas de

    equaes 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 novaoperao com linguagens, a estrela de Kleene. Em geral, se A 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

  • 8/6/2019 Linguagem Formal

    15/161

    2. LEMA DE ARDEN 9

    X = AXB. Para isso substituremos Xpor AB 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, uma

    soluo 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, quandousarmos AB como soluo estaremos perdendo algumas palavras do conjuntoaceito pelo autmato, o que no queremos que acontea.

    Suponhamos, ento, que X o maior subconjunto de que satisfaz X =AX B. Como j sabemos que AB satisfaz esta equao, podemos escreverX = AB C, onde C um conjunto (disjunto de AB) que contm as

    possveis palavras excedentes. Substituindo X = AB Cem 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).

  • 8/6/2019 Linguagem Formal

    16/161

    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 autmatoN

    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 por M.

    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 for

    expressa 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

    ?>=====

  • 8/6/2019 Linguagem Formal

    17/161

    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 = 0L2L2 = 1L3

    L3 = 0L1 1L4

    L4 = 0L4 1L4

    L5 = .

    A equao para L4 nos d

    L4 = (0 1)L4 ,

    de modo que precisamos aplicar o Lema de Arden. fazendo isto obtemosL4 = (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 caso X = 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 ) = 0

    1L4 0,

  • 8/6/2019 Linguagem Formal

    18/161

    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 = (0

    1)

    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 alfabeto

    do 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, , , , (, ), , }.

  • 8/6/2019 Linguagem Formal

    19/161

    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) uma

    expresso 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 ao

    final 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 finito M 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 serk0

    {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

  • 8/6/2019 Linguagem Formal

    20/161

    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 regularr, construir um autmatofinito que aceite a linguagem denotada porr.

    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.

  • 8/6/2019 Linguagem Formal

    21/161

    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 tempor 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 programar

    o 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 = 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

  • 8/6/2019 Linguagem Formal

    22/161

    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 determinstico A 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 B

    onde 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 = 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,

  • 8/6/2019 Linguagem Formal

    23/161

    6. EXERCCIOS 17

    onde B k1. Seja F = k B. Temos de (5.1) e (2) que

    Ak = 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 = 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:

  • 8/6/2019 Linguagem Formal

    24/161

    18 3. EXPRESSES REGULARES

    0 1

    q1 q2 q4

    q2 q2 q3q3 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 q1q3 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 q2q6 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 uma

    expresso regular:(a) o conjunto das palavras de um ou mais zeros seguidos de um 1;

  • 8/6/2019 Linguagem Formal

    25/161

    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 que

    o 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.

  • 8/6/2019 Linguagem Formal

    26/161

  • 8/6/2019 Linguagem Formal

    27/161

    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 de

    uma 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.

    IGG

    ?>=======

  • 8/6/2019 Linguagem Formal

    28/161

  • 8/6/2019 Linguagem Formal

    29/161

    2. LEMA DO BOMBEAMENTO 23

    I GG ?>=======

  • 8/6/2019 Linguagem Formal

    30/161

    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 no

    grafo 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, ento w admite uma subpalavra bom-bevel em L(M).

    O lema do bombeamento, que o principal resultado deste captulo, no

    passa 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 na

    forma w = xyz, onde

    (1) y = ;(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, onde

    1, . . . , 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 o

    primeiro 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 .

  • 8/6/2019 Linguagem Formal

    31/161

    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 = ,

    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, y

    2z) (qj , yz) = (qi, yz) (qj , z)

    (qn+1, ).

    Como xyz L(M) por hiptese, ento qn+1 um estado final de M. 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. Como M 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 L

    seja 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 = 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

  • 8/6/2019 Linguagem Formal

    32/161

    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 podemos

    especificar 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 por

    Lprimos = {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 autmato

    finito 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

  • 8/6/2019 Linguagem Formal

    33/161

    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 = 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 +(k 1)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 quantoj +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 as

    antes 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, que L 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

  • 8/6/2019 Linguagem Formal

    34/161

    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 = a

    i

    e y = aj

    .Alm disso, j = 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 0

    implica 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 quean1bn1 = xyz e |xy| n

    no 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 paraw

    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 finito

    determinstico 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 .

  • 8/6/2019 Linguagem Formal

    35/161

    3. APLICAES DO LEMA DO BOMBEAMENTO 29

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

    xy

    k

    z = a

    i

    (a

    j

    )

    k

    a

    nij

    b

    n

    = a

    n+(k1)j

    b

    n

    .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 = 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, uma

    contradio 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, obtemosxykz = 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

  • 8/6/2019 Linguagem Formal

    36/161

  • 8/6/2019 Linguagem Formal

    37/161

  • 8/6/2019 Linguagem Formal

    38/161

    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 = 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) {12

    n

    : n 0};(f) {w : w = wr onde w {0, 1}};(g) {wxwr : w, x {0, 1} \ {}}.

  • 8/6/2019 Linguagem Formal

    39/161

    4. EXERCCIOS 33

    Se w uma palavra em um alfabeto ento wr 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 se L contm uma palavra

    de comprimento maior ou igual que 2n, ento ela contm uma palavra

    de 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 um

    autmato finito determinstico M, determina se L(M) finita ou infi-nita.

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

    12. Seja M 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?

  • 8/6/2019 Linguagem Formal

    40/161

  • 8/6/2019 Linguagem Formal

    41/161

  • 8/6/2019 Linguagem Formal

    42/161

    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, L L regular e L L = .

    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. Sejam A e A 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

  • 8/6/2019 Linguagem Formal

    43/161

    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 omenorinteiro 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!

  • 8/6/2019 Linguagem Formal

    44/161

  • 8/6/2019 Linguagem Formal

    45/161

    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 construir M. Contudo, r construda, a partir dos smbolos de , por aplicaes repetidas das operaes

    de unio, concatenao e estrela. Assim, para poder usar r como uma receitapara construir M precisamos antes solucionar o seguinte problema:

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

    exatamente isto que faremos neste captulo.

    1. Unio

    Suponhamos que M e M

    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 Q Q = . Observe que esta hiptese no repre-senta nenhuma restrio expressiva, j que para alcan-la basta renomear osestados de M, no caso de serem denotados pelo mesmo nome que os estadosde M.

    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

  • 8/6/2019 Linguagem Formal

    46/161

    40 6. OPERAES COM AUTMATOS FINITOS

    transies pelos novos estados so todas vazias. No caso da unio, isto sig-nifica que, se M e M tiverem alfabetos de entrada e diferentes, entopodemos considerar ambos como autmatos no alfabeto . Para mais

    detalhes veja o exerccio 1.Vejamos como deve ser o comportamento de um autmato finito Mu para

    que 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 que Mu no determinstico, podemos deix-lo escolher qualdos dois autmatos vai querer simular em uma dada computao. Portanto, aoreceber uma palavra w, o autmato Mu:

    escolhe se vai simular M ou M;

    executa a simulao escolhida e aceita w apenas se for aceita peloautmato 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 de M e M 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 autmato Muescolhe simular M com entrada w. Entretanto, para poder simular M 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 qualautmato Mu escolheu simular. Mais precisamente, se Mu escolheu simularM, ento q0 realiza a transio a partir do primeiro smbolo de w como se fosseuma transio de M a partir de q1 por este mesmo smbolo.

    Para poder formalizar isto, digamos que w = u, onde e u .Neste caso, se Mu escolheu simular M, devemos ter que

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

    Podemos dissecar o comportamento de Mu a partir de q0 como duas escolhassucessivas:

    (1) primeiro Mu decide se vai simular M ou M;(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 de Mu, podemos resumir isto escre-vendo

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

    O comportamento geral de Mu pode ser ilustrado em uma figura, comosegue. As transies que foram acrescentadas como parte da construo deMu aparecem tracejadas.

  • 8/6/2019 Linguagem Formal

    47/161

    1. UNIO 41

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

    UUoooooooo

    99yyyyy

    yyy M'&%$!"#

    '&%$!"#

    /.-,()*+q0

    UUoooooooooo

    cc

    99yyy

    yyyyy

    yy

    55qq

    qq

    qq

    qqq

    qq

    11c

    cc

    cc

    cc

    cc

    cc

    c

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

    UUoooooooo

    99yyyyy

    yyyGG 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 meramentesimula M ou M. Portanto, a descrio dos estados finais de Mu 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 de Mu um aum:

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

    {q0} F F se q1 F ou q

    1 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

  • 8/6/2019 Linguagem Formal

    48/161

    42 6. OPERAES COM AUTMATOS FINITOS

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

    I GGGFED@ABC?>=====

  • 8/6/2019 Linguagem Formal

    49/161

  • 8/6/2019 Linguagem Formal

    50/161

    44 6. OPERAES COM AUTMATOS FINITOS

    estados e transies, como uma computao de Mu. Obtemos, assim, acomputao

    (q0

    , u) (p,u) (f, ),

    em Mu. Como f final em M, ele tambm ser final em Mu, 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 de M, inclusive dele prprio. Nestecaso, q1 vai se tornar redundante em Mu. Isto acontece porque uma

    computao 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 em Mu 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 em Mu a partirde um estado de M tambm uma transio de M. 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, ),

    em M. Como f um estado final de Mu que pertence a Q, conclumosque f F. Logo, w aceita por M.

    Observe que a segunda parte da demonstrao est ancorada no fatode nenhuma transio de Mu poder chegar em q0. Se isto pudesse acon-tecer, Mu poderia executar parte da computao em M, retornar a q0, e

    continuar com uma computao de M. Entretanto, o argumento acimas funciona porque, uma vez que Mu tenha alcanado um estado de M,ele fica preso neste ltimo autmato, e assim obrigado a se comportarcomo M.

  • 8/6/2019 Linguagem Formal

    51/161

    2. CONCATENAO 45

    2. Concatenao

    A segunda operao de linguagens que precisamos transcrever para

    os autmatos a concatenao. Suponhamos, mais uma vez, que temosdois autmatos M e M no mesmo alfabeto , cujos elementos so

    M = (, q1,Q ,F ,) e M = (, q1, Q

    , F, ).

    Continuaremos assumindo que Q Q = .Nosso objetivo construir um autmato Mc 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 sugere

    conectar os autmatos M e M

    em srie; quer dizer, um depois dooutro. Alm disso, para que o prefixo esteja em L(M) o ltimo estadode M alcanado em uma computao por w deve ser final. Finalmente, mais fcil construir um modelo no determinstico de Mc, 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 de M. 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 de M. Podemos ilustrar a construo em uma figura,como segue.

    '&%$!"#DD

    CC

    wy

    '&%$!"#76540123q1UUooooooooo

    99yyyyy

    yyyy GG M ?>=

  • 8/6/2019 Linguagem Formal

    52/161

    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 de M

    . Casocontrrio, apenas os estados finais de M sero finais em M.

    Formalizaremos a construo, listando os vrios elementos de Mcum 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 concatenando Mpar com Mab:

    GFED@ABCq1

    b

    aCC

    a

    SSGFED@ABCq2

    b

    akk GFED@ABCq

    1

    a GG

    GFED@ABCq

    2

    b GG

    GFED@ABC?>===

  • 8/6/2019 Linguagem Formal

    53/161

    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 autmato M, que aceite L, consistiria em conectara sada de M com sua entrada. Com isso a concatenao passaria infini-

    tas vezes pelo prprio M, e teramos um novo autmato M

    que aceitaL. Vamos testar esta idia em um exemplo e ver o que acontece.Considere o autmato finitoN no alfabeto {a, b}, cujo grafo dado

    por

    GFED@ABCq1 a GGGFED@ABCq2b

    ~~}}}}

    }}}}

    }

    GFED@ABC?>==

  • 8/6/2019 Linguagem Formal

    54/161

    48 6. OPERAES COM AUTMATOS FINITOS

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

    GFED@ABC?>====

  • 8/6/2019 Linguagem Formal

    55/161

    3. ESTRELA 49

    novas transies aparecem tracejadas.

    '&%$!"#BCED

    111GF

    @A111

    76540123'&%$!"#q0GG

    n li g

    GG

    76540123q1UUooooooo

    99yyyyy

    yy M

    '&%$!"#ED

    BC111

    @A

    GF111

    Formalizaremos a construo, listando os vrios elementos de M,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 = 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 em M 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 suas

    transies foram definidas. J a segunda parte da afirmao segue dofato de que tambm fizemos cada estado final de M comportar-se comose fosse q1 ao concatenar M com ele prprio. Outro ponto importante que toda computao em M pode ser simulada por M com os mesmos

  • 8/6/2019 Linguagem Formal

    56/161

    50 6. OPERAES COM AUTMATOS FINITOS

    estados e transies, j que M 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 computaoem M. Portanto, podemos construir uma computao em M 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, que M aceita w.

    Passamos, agora, a mostrar que L(M

    ) L

    . Para facilitar a dis-cusso, distinguiremos dois tipos de transio em M:

    Primeiro tipo: as transies a partir de q0, alm de todas aquelasque j eram transies de M;

    Segundo tipo: transies que M faz a partir dos estados finaisde M, como se fossem q1.

    Suponha, agora, que w aceita por M. Neste caso existe uma compu-tao

    (q0, w) (f, ),em M. 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

  • 8/6/2019 Linguagem Formal

    57/161

    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, . . . , f k 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, ),

    em M, que por sua vez do lugar a computaes da forma

    (q1, wj) = (fj, juj) (pj , uj) (fj+1, ),

    em M. 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 determinstico M no alfabeto , de modo queL(M) = L(M). Prove que sua construo funciona corretamente.

    SUGESTO: Defina todas as transies de M 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 eL2.

    (b) Use os algortimos desta seo para criar autmatos finitos nodeterminsticos que aceitem L1 L2, L1 L2, L1 e L

    2.

  • 8/6/2019 Linguagem Formal

    58/161

    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 determinstico N, que aceita a concatenao L(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 soos 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.

  • 8/6/2019 Linguagem Formal

    59/161

    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 determinstico M(r) que aceitaL(r). Entretanto, como vimos no captulo ??, r definida, de maneirarecursiva, a partir dos smbolos de , e , por aplicao sucessiva

    das operaes de unio, concatenao e estrela. Por isso, efetuaremos aconstruo de M(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, que M1 e M2 so aut-

    matos finitos no determinsticos. Precisamos saber construir(1) um autmato Mu que aceita L(M1) L(M2);(2) um autmato Mc que aceita L(M1) L(M2); e(3) um autmato M1 que aceita L(M1).

    53

  • 8/6/2019 Linguagem Formal

    60/161

    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 GG GFED@ABCq1 GG GFED@ABC?>==

  • 8/6/2019 Linguagem Formal

    61/161

    2. UNIO 55

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

    escolhe se vai simular M ou M

    ; executa a simula ao escolhida e aceita w apenas se for aceitapelo 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, como Mu 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 de M e M 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 podersimular M 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 autmato Mu escolheu simular. Mais

    precisamente, se Mu escolheu simular M, ento q0 realiza a transioa partir do primeiro smbolo de w como se fosse uma transio de M apartir de q1 por este mesmo smbolo.

    Para poder formular isto formalmente, digamos que w = u, onde e u . Neste caso, se Mu escolheu simular M, 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) primeiro Mu decide se vai simular M ou M;(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 de Mu, podemos resumir istoescrevendo

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

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

  • 8/6/2019 Linguagem Formal

    62/161

    56 7. AUTMATOS DE EXPRESSES REGULARES

    '&%$!"#76540123q1

    UUooooooooo

    99yyyyy

    yyyy M '&%$!"#

    '&%$!"#

    76540123q0

    UUoooooooooooooooooooo

    cc

    99yyyyy

    yyyyyy

    yyyyyy

    yyy

    55qqq

    qqqq

    qqqq

    qqqq

    qqqq

    qqq

    11cc

    cccc

    cccc

    cccc

    cccc

    cccc

    cccc

    '&%$!"#76540123q1

    UUooooooooo

    99yyyyy

    yyyy GG M

    '&%$!"#

    Como a figura sugere, a parte q0, os estados de Mu so os mesmosde M e M. Quanto aos estados finais, precisamos ser mais cuidado-sos. Como, uma vez tendo passado por q0, o autmato Mu meramentesimula M ou M, s pode haver algum problema se um dos estados q1

    ou q

    1 for final. Por exemplo, se q1 for final, ento M 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 de Mu antes de fazer um exemplo.Listando os vrios elementos de Mu um a um temos

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

    {q0} F F se q1 F ou q

    1 F

    F F se q1 / F e q1 / F

  • 8/6/2019 Linguagem Formal

    63/161

    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 finitos M e M cujos grafos so, respectivamente

    I GGGFED@ABC?>==

  • 8/6/2019 Linguagem Formal

    64/161

  • 8/6/2019 Linguagem Formal

    65/161

    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 abaS

    B 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

  • 8/6/2019 Linguagem Formal

    66/161

  • 8/6/2019 Linguagem Formal

    67/161

    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 gramtica

    o 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

  • 8/6/2019 Linguagem Formal

    68/161

    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 Ve 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 terminais

    T = {0, 1}, variveis V = {S}, smbolo inicial Se 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 Se 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 exemplos construdos acima esto relacionados a lingua-gens que so velhas conhecidas nossas. Entretanto, para constatar istoprecisamos entender como possvel construir uma linguagem a partirde uma gramtica livre de contexto. Isto se faz de maneira anloga aoque j ocorria com linguagens lineares direita.

    Seja G uma gramtica livre de contexto com terminais T, variveisV, smbolo inicial Se conjunto R de regras, e sejam w, w (T V).Dizemos que w pode ser derivada em um passo a partir de w em G, eescrevemos w G w, se w pode ser obtida a partir de w substituindo-se uma varivel que aparece em w pelo lado direito de alguma regra dagramtica G. Em outras palavras, para que w G w preciso que:

    exista uma decomposio da forma w = uXv, onde u, v (T V) e X V, e

    exista uma regra X em R tal que w

    = uv.Como j estamos acostumados a fazer, dispensaremos o G subscrito nanotao acima quando no houver dvidas quanto gramtica que estsendo considerada (isto , quase sempre!).

  • 8/6/2019 Linguagem Formal

    69/161

  • 8/6/2019 Linguagem Formal

    70/161

    64 9. LINGUAGENS LIVRES DE CONTEXTO

    J vimos no captulo 4, que esta linguagem no regular. Em particular,no existe nenhuma gramtica linear direita que gere L(G1).

    Passando gramtica G2, temos a derivao

    S X1X 0X1X 02X1X 02X1 021.

    Note que, na derivao acima, algumas ocorrncias da varivel Xforamsublinhadas. Fizemos isto para indicar qual instncia da varivel Xfoiaplicada a regra da gramtica que leva ao passo seguinte da derivao.Assim, no segundo passo da derivao, aplicamos a regra X 0Xao X mais esquerda X1X. Com isto este X foi trocado por 0X,mas nada foi feito ao segundo X. Coisa semelhante ocorreu no passoseguinte. Alm disso, a regra X 0X nunca foi aplicada ao segundoX. Fica claro deste exemplo que:

    A cada passo de uma derivao apenas uma ocorrn-cia de uma varivel pode ser substituda pelo lado di-reito de uma seta. Alm disso, cada ocorrncia deuma varivel tratada independentemente da outra.

    Sempre que for conveniente, sublinharemos a instncia da varivel qual a regra est sendo aplicada em um determinado passo da derivao.

    Vamos tentar, tambm neste caso, determinar todas as palavras que

    podem ser derivadas a partir de Sem G2. Suponhamos que S

    w emG2. fcil ver que em w h um nico 1; pode haver, no mximo, duas ocorrncias de X, uma de cada

    lado do 1.Assim, w pode ser de uma das seguintes formas

    0nX10mX ou 0n10mX ou 0nX10m ou 0n10m

    Portanto, se w T e S w, ento w = 0n10m, para inteiros

    m, n 0. Conclumos queL(G2) = {0

    n10m : n, m 0}.

    Mas esta , na verdade, uma linguagem regular, que pode ser descrita naforma L(G2) = 010. Temos assim um exemplo de gramtica livre decontexto que no linear direita mas que gera uma linguagem regular.

    Voltando ao caso geral, seja L uma linguagem no alfabeto . Dize-mos que L livre de contexto se existe pelo menos uma gramtica livrede contexto G, com conjunto de terminais , tal que L(G) = L.

    Portanto, toda linguagem regular livre de contexto. Isto ocorreporque, pelo teorema de Kleene, uma linguagem regular sempre podeser gerada por uma gramtica linear direita. Mas, como j vimos, todagramtica linear direita livre de contexto.

  • 8/6/2019 Linguagem Formal

    71/161

    2. LINGUAGENS SENSVEIS AO CONTEXTO 65

    Por outro lado, nem toda linguagem livre de contexto regular. Porexemplo, vimos na seo 3 do captulo 4 que a linguagem {0n1n : n 0} no regular. No entanto, ela gerada pela gramtica G1 e, portanto, livre de contexto. Na seo 3 veremos mais exemplos de linguagenslivres de contexto, incluindo vrias que no so regulares.

    Antes que voc comece a alimentar falsas esperanas, bom es-clarecer que existem linguagens que no so livres de contexto. Paramostrar, diretamente da definio, que uma linguagem L no livre decontexto seria necessrio provar que no existe nenhuma gramtica li-vre de contexto que gere L, o que no parece possvel. Como no casode linguagens regulares, a estratgia mais prtica consiste em mostrar

    que h uma propriedade de toda linguagem livre de contexto que no satisfeita por L. Veremos como fazer isto no captulo 11.

    2. Linguagens sensveis ao contexto

    hora de voltar questo de como seria uma gramtica que no livre de contexto.

    Lembre-se que o que caracteriza as gramticas livres de contexto o fato de que todas as suas regras tm apenas uma varivel (e nenhumterminal) do lado esquerdo da seta. Na prtica isto significa que sempreque X aparece em uma palavra, ele pode ser trocado por w, desde queX w seja uma regra da gramtica.

    Para uma gramtica no ser livre de contexto basta que, do lado es-querdo da seta de alguma de suas regras, aparea algo mais complicadoque uma varivel isolada. Um exemplo simples, mas importante, agramtica com terminais {a,b,c}, variveis {S,X,Y}, smbolo inicialSe regras

    S abc

    S aXbc

    Xb bX

    Xc Y bc2

    bY Y b

    aY a2

    aY a2X.

    Considere uma derivao nesta gramtica que comece com S aXbc.Queremos, no prximo passo, substituir o X por alguma coisa. Mas,apesar de haver duas regras com X esquerda da seta na g