Você está na página 1de 177
ee cons ee te Ms CINE ee a ae OT ees weed SHIT pone i prea pseu Introdug&o a teoria de 99238 UESC UESC 99238 ee erwT ers TRADUGAO DA SEGUNDA EDICAO AMERICANA Capitulo 1 Autématos: os métodos e a loucura A teoria de automatos € 0 estudo dos dispositivos de computacao abstratos, ou “maquinas”. Antes de existirem os computadores, na década de 1930, A. Turing estudou uma maquina abstrata que tinha todas as caracteristicas dos computa- dores atuais, pelo menos no que se refere ao quanto eles poderiam calcular. O objetivo de Turing era descrever com exatidao 0 limite entre o que uma maqui- na de computacdo podia fazer e aquilo que ela nao podia fazer; suas conclusoes se aplicam nao apenas as suas maquinas de Turing abstratas, mas também as ma- quinas reais de hoje Nas décadas de 1940 e 1950, tipos de maquinas mais simples, que hoje cha- mamos “automatos finitos”, foram estudados por diversos pesquisadores. Esses autOmatos, propostos originalmente para modelar a funcao do cérebro, se mos- traram extremamente titeis para uma grande variedade de outros propésitos, que mencionaremos na Seco 1.1. Também no final dos anos 50, o linguista N. Chomsky iniciou 0 estudo de “gramaticas” formais. Embora nao sejam estrita- mente maquinas, essas gramaticas tém relacionamentos estreitos com os auto- matos abstratos ¢ hoje servem como a base de alguns importantes componentes de software, incluindo algumas partes dos compiladores. Em 1969, S. Cook estendeu o estudo de Turing do que podia e do que nao podia ser calculado. Cook conseguiu separar os problemas que podem ser resol- vidos de forma eficiente por computadores daqueles problemas que podem em principio ser resolvidos mas que, na pratica, levam tanto tempo que os compu- tadores sdo imiteis para solucionar todas as instancias do problema, exceto aquelas muito pequenas. Os problemas dessa tiltima classe so chamados “in- trataveis” ou “NP-dificeis” (NP-hard). E altamente improvavel que até mesmo a melhoria exponencial na velocidade de computacao que o hardware de compu- tadores vem alcancando (“Lei de Moore”) tenha impacto significativo sobre nossa habilidade para resolver grandes instancias de problemas intrataveis. INTRODUCAO A TEORIA DE AUTOMATOS, LINGUAGENS E COMPUTACAO Todos esses desenvolvimentos tedricos tém relacdo direta com aquilo que os cientistas da computacao fazem hoje. Alguns conceitos, como automatos finitos e certos tipos de gramiaticas formais, s4o usados no projeto e na construcao de im- portantes componentes de software. Outros conceitos, como a maquina de Tu- ring, ajudam a entender o que podemos esperar de nosso software. Em especial, a teoria de problemas intrataveis nos permite deduzir se temos a chance de, ao nos depararmos com um problema, sermos capazes de escrever um programa para re- solve-lo (porque ele nao pertence a classe intratavel), ou se teremos de descobrir algum modo de contornar o problema intratavel: encontrar uma aproximacao, ‘usar uma heuristica ou empregar algum outro método para limitar 0 periodo de tempo que o programa despendera para resolver o problema. Neste capitulo introdutorio, comegaremos com uma visao de alto nivel do objeto de estudo da teoria dos automatos € de quais sao seus usos. Grande parte do capitulo ¢ dedicada a uma pesquisa a respeito de técnicas de prova (ou de- monstracao) ¢ de artificios para descobrir provas. Abordaremos as provas dedu- tivas, a reformulacao de enunciados, as provas por contradicao, as provas por inducao ¢ outros conceitos importantes. Uma secao final introduz os conceitos que permeiam a teoria de automatos: alfabetos, strings ¢ linguagens. 1.1 Por que estudar a teoria de automatos? Ha varias raz6es pelas quais o estudo de automatos ¢ complexidade é uma parte importante do nucleo da Ciencia da Computacao. Esta secao serve para apre- sentar ao leitor a principal motivacao, e também descreve os tpicos mais im- portantes abordados neste livro. 1.1.1 Introducao aos automatos finitos Osautomatos finitos constituem um modelo util para muitos elementos impor- tantes de hardware e software. Veremos, a partir do Capitulo 2, exemplos de como 0 conceitos sao usados. Por enquanto, vamos apenas listar alguns dos elementos mais importantes: 1. Software para projetar e verificar o comportamento de circuitos digitais. 2. O “analisador léxico” de um compilador tipico, isto é, 0 componente do compilador que divide o texto de entrada em unidades logicas, como identificadores, palavras-chave e pontuacao. 3. Software para examinar grandes corpos de texto, como colecdes de pagi- nas da Web, a fim de encontrar ocorréncias de palavras, frases ou outros padroes. AUTOMATOS: OS METODOS E A LOUCURA 3 4. Software para verificar sistemas de todos os tipos que tém um numero fi- nito de estados distintos, como protocolos de comunicacdes ou protoco- los para troca segura de informacdes. Logo encontraremos uma definicao precisa de automatos de varios tipos, mas, enquanto isso, vamos iniciar nossa introducao informal com um esboco do que um autOmato finito € e do que ele faz. Existem muitos sistemas ou com- Ponentes, como aqueles enumerados anteriormente, que podemos considerar como estando, a todo momento, em um de um ntimero finito de “estados”. O proposito de um estado € memorizar a por¢ao relevante da historia do sistema. Tendo em vista que existe apenas um numero finito de estados, a historia inteira em geral nao pode ser memorizada, assim o sistema tem de ser projetado com cuidado, a fim de memorizar o que ¢ importante ¢ esquecer o que nao é. A vanta- gem de se ter apenas um numero finito de estados € que podemos implementar © sistema com um conjunto fixo de recursos. Por exemplo, poderiamos imple- menta-lo em hardware como um circuito, ou como uma forma simples de pro- grama que possa tomar decisdes examinando somente uma quantidade limita- da de dados ou usando a posigao no proprio cédigo para tomar a decisao. Exemplo 1.1: Talvez o automato finito nao trivial mais simples seja um inter- ruptor liga/desliga. O dispositivo memoriza se esta no estado “ligado” o no esta- do “desligado”, e permite ao usuario pressionar um botao cujo efeito é diferen- te, dependendo do estado do interruptor. Isto é, se 0 interruptor esta no estado desligado, pressionar 0 botao o leva ao estado ligado e, se o interruptor se en- contra no estado ligado, pressionaro mesmo botao o leva ao estado desligado. Pressionar Inicio (iestigado Pressionar Figura 1.1: Um automato finito que modela um interruptor liga/desliga O modelo de autémato finito para o interruptor é mostrado na Figura 1.1. Como ocorre em todos os autdmatos finitos, os estados sao representados por circulos; nesse exemplo, denominamos os estados de ligado e desligado. Arcos entre estados sao identificados por “entradas”, que representem influéncias ex- ternas sobre o sistema. Aqui, ambos osarcos sao identificados pela entrada Pres- sionar, que representa um usudrio pressionando o botao. A intencao dos dois 4 INTRODUGAO A TEORIA DE AUTOMATOS, LINGUAGENS E COMPUTACAO arcos € que, seja qual for o estado em que o sistema se encontre, quando a entra- da Pressionar é recebida, ele vai para 0 outro estado. Um dos estados é designado como 0 “estado inicial “, o estado em que o sis- tema € colocado inicialmente. Em nosso exemplo, o estado inicial € desligado, € por convencao indicamos o estado inicial pela palavra Inicio e por uma seta que leva a esse estado. Com freqiténcia, é necessario indicar um ou mais estados como estados “fi- nais”, ou de “aceitagao”. A chegada em um desses estados apos uma sequéncia de entradas indica que a sequencia de entrada é boa em algum aspecto. Por exemplo, poderiamos ter considerado o estado ligado na Figura 1.1 como um estado de aceitacdo porque, nesse estado, o dispositivo que esta sendo controla- do pelo interruptor ira operar. E usual designar estados de aceitagao por um cir- culo duplo, embora nao tenhamos feito tal designacao na Figura 1.1. 3 Exemplo 1.2: As vezes, o que € memorizado por um estado pode ser muito mais complexo que uma escolha entre ligado/desligado. A Figura 1.2 mostra outro automate finito que poderia fazer parte de um analisador léxico. O trabalho des- se automato é reconhecer a palavra-chave then. Desse modo, ele precisa de cin- co estados, cada um dos quais representa uma posicao diferente na palavra then, conforme o que foi atingido até o momento. Essas posicdes correspondem aos prefixos da palavra, variando desde o string vazio (isto é, nenhuma parte da pa- lavra foi atingida até agora) até a palavra completa Inicio Figura 1.2: Um automato finito que modela o reconhecimento de then Na Figura 1.2, os cinco estados sao denominados pelo prefixo de then visto até o momento. As entradas correspondem a letras. Podemos imaginar que o analisador léxico examina um caractere do programa que esta compilando de cada vez, ¢ o proximo caractere a ser examinado é a entrada para o automato. O estado inicial corresponde ao string vazio, e cada estado tem uma transicao na proxima letra de then para o estado que corresponde ao prefixo seguinte. O es- tado denominado then é atingido quando a entrada grafa a palavra completa then. Tendo em vista que o trabalho desse autOmato é reconhecer o momento em que then é visto, poderiamos considerar esse estado como o tnico estado de aceitacao. AUTOMATOS: OS METODOS F A LOUCURA 5 1.1.2 Representacoes estruturais Ha dois formalismos importantes que ndo s4o semelhantes a automatos, mas que desempenham um importante papel no estudo de automatos e suas aplicagoes. 1. As gramaticas s40 modelos wteis quando se projeta software que processa dados com uma estrutura recursiva. O exemplo mais conhecido é um “analisador sintatico” (parser), o componente de um compilador que lida com as caracteristicas recursivamente aninhadas de uma linguagem de programacao tipica, como as expressdes —aritméticas, condicionais e assim por diante, Por exemplo, uma regra gramatical na forma E = E +E estabelece que uma expressao pode ser formada tomando-se duas ex- PressOes quaisquer e conectando-as por um sinal de adigao; essa regra é tipica do modo como sao formadas as expressdes de linguagens de pro- gramacao reais. Introduzimos.as gramaticas livres de contexto, como sao chamadas usualmente, no Capitulo 5. 2. As expressoes regulares também denotam uma estrutura de dados, espe- cialmente strings de texto. Como veremos no Capitulo 3, os padroes de strings que elas descrevem séo exatamente iguais aos que podem ser des- critos por automatos finitos. O estilo dessas expressdes difere significati- vamente do estilo das gramaticas, e nos contentaremos aqui com um exemplo simples. A expressao regular no estilo do UNIX '[A-Z] [a-2] *L] {A-2] [A-2]' representa palavras em maitisculas ¢ minusculas seguidas por um espaco e duas letras maittsculas. Essa expressdo representa pa- droes em texto que poderiam ser uma cidade e um estado, por exemplo, Recife PE. Ela omite nomes de cidades com varias palavras, como Porto Alegre RS, que poderiam ser captadas pela expressio mais complexa (CA-Z) fa-z)*C 1)*E 1 E-Z][A-Zy! Quando interpretamos tais expressdes, so precisamos saber que [A-Z] re- presenta um intervalo de caracteres desde “A” maitscula até “Z” maitis- cula (isto é, qualquer letra maitiscula) e [ ] éusado para representar ape- nas 0 caractere em branco. Além disso, o simbolo * representa a repeti- cdo por “qualquer numero de” vezes da expressao precedente. Os parén- teses sao usados para agrupar componentes da expressao; eles nao repre- sentam caracteres do texto descrito. 1.1.3 Automatos e complexidade Os automatos so essenciais para o estudo dos limites de computagao. Como mencionamos na introdu¢ao ao capitulo, existem duas questes importantes: 6 INTRODUGAO A TEORIA DE AUTOMATOS, LINGUAGENS E COMPUTACAQ 1. Oque um computador pode fazer, afinal? Esse estudo € chamado “deci- dibilidade”, ¢ os problemas que podem ser resolvidos pelo computador sao chamados “decidiveis”. Esse topico € tratado no Capitulo 9. 2. Oque um computador pode fazer de forma eficiente? Esse estudo € cha- mado “intratabilidade” , e os problemas que podem ser resolvidos porum computador sem utilizar mais tempo que alguma funcao lentamente crescente do tamanho da entrada sao chamados “trataveis”. Com fre- quencia, consideramos todas as fungdes polinomiais “lentamente cres- centes” , enquanto funcdes que crescem com rapidez maior que qualquer polinomio sao julgadas como sendo de crescimento rapido demais. Esse assunto € estudado no Capitulo 10. 1.2 Introducao as provas formais Se estudasse geometria plana no ensino médio em qualquer época antes da década de 1990, é bem provavel que voce tivesse de realizar algumas “provas de- dutivas” minuciosas, em que mostraria a verdade de uma afirmacao (ou decla- racao) por meio de uma seqiténcia detalhada de etapas e raciocinios. Embora a geometria tenha seu lado pratico (por exemplo, voce precisa conhecer a regra para calcular a area de um retangulo, se tiver necessidade de comprar a quanti- dade correta de carpete para forrar uma sala), o estudo de metodologias de pro- vas formais foi importante ao menos como wma razao para abordar esse ramo da matematica no ensino médio. Na década de 1990 nos EUA se tornou popular ensinar a demonstracao como se ela fosse uma questo de sentimentos pessoais a respeito da afirmacao. Embora seja bom sentir a verdade de uma afirmagao que vocé precisa usar, as técnicas de prova importantes nao sao mais dominadas na escola secundaria, Ainda assim, a prova € algo que todo cientista da computacio precisa entender. Alguns cientistas da computagao adotam a visio extrema de que uma prova formal da correcao de um programa deve seguir lado a lado com a escrita do proprio programa. Duvida- mos que isso seja produtivo. Por outro lado, existem aqueles que dizem que a prova nao tem lugar na disciplina de programagao. O dito “se nao tiver certeza de que seu programa esta correto, execute-o € veja” € oferecido comumente por esse grupo. Nossa posicao esta entre esses dois extremos. Testar programas é Sem duvi- da essencial. No entanto, os testes vao apenas até certo ponto, pois nao ¢ possi- vel experimentar um programa para toda entrada. Mais importante ainda, se 0 seu programa é complexo — digamos, uma recursao ou itera¢ao complicada - entao, se nao entender o que esta acontecendo enquanto se percorre um loop ou se chama uma funcao recursivamente, € improvavel que vocé escreva o codigo de modo correto. Quando seus testes o informarem de que 0 codigo esta incor- reto, vocé ainda precisara corrigi-lo. AUTOMATOS: OS METODOS E A LOUCURA 7 Para tornar correta sua iteragao ou recursao, vocé precisara configurar uma hipotese indutiva, e é util para raciocinar, seja formal ou informalmente, que a hipotese € coerente com a iteracdo ou recursao. Esse processo de entender o funcionamento de um programa correto é em esséncia igual ao processo de pro- var teoremas por inducao. Desse mado, além de lhe fornecer modelos que serao liteis para certos tipos de software, tornou-se tradicional em um curso sobre teoria de automatos cobrir as metodologias de prova formal. Talvez mais do que outros temas centrais da Ciéncia da Computacao, a teoria de aut6matos se pres- taa provas naturais ¢ interessantes, tanto do tipo dedutivo (uma sequéncia de etapas justificadas) quanto do tipo indutivo (provas recursivas de uma afirma- ‘cdo parametrizada que utilizam a propria afirmacao com valores “mais baixos” do parametro). 1.2.1 Provas dedutivas Como mencionamos anteriormente, uma prova dedutiva consiste em uma se- quéncia de afirmagées cuja verdade nos leva de alguma afirmacao inicial, cha- mada hipotese ou declaracdo(oes) dada(s), a uma afirmacao de conclusao. Cada etapa da prova deve se seguir, por algum principio l6gico aceito, dos fatos da- dos, de algumas das afirmagdes anteriores na prova dedutiva, ou de uma combi- nacao desses elementos. A hipotese pode ser verdadeira ou falsa, em geral dependendo dos valores de seus parametros. Com freqiténcia, a hiptese consiste em varias afirmagées independentes conectadas por um AND logico. Nesses casos, dizemos que cada uma dessas afirmacdes é uma hipétese ou uma declaracio dada Oteorema que ¢ provado quando vamos de uma hipotese H até uma conclu- sao C éa afirmacao “se H entao C”. Dizemos que C € deduzido a partir de H. Um exemplo de teorema da forma “se H entao C” ilustrara esses pontos. Teorema 1.3: Se x> 4, entao 2*2x7. 0 Nao € dificil nos convencermos informalmente de que o Teorema 1.3 € ver- dadeiro, embora uma prova formal exija inducdo e seja adiada até 0 Exemplo 1.17. Primeiro, note que a hipotese H € “x2 4”. Essa hip6tese tem um parametro xe, portanto, nao ¢ verdadeira nem falsa, Em vez disso, sua verdade depende do valor do parametro x; por exemplo, H ¢ verdadeira para x= 6 ¢ falsa parax = 2. Damesma forma, a conclusao C € “2*> x?”, Essa afirmagao também utiliza 0 parametro xe é verdadeira para certos valores de xe falsa para outros. Porexem- plo, C €¢ falsa para x= 3, pois 2* = 8, que nao ¢ tao grande quanto 3*=9. Por outro lado, C é verdadeira para x=4, pois 2*=4? = 16. Para x= 5, aafirmacao também é verdadeira, pois 2° = 32 € pelo menos tao grande quanto 5? = 25. 8 INTRODUGAO A TEORIA DE AUTOMATOS, LINGUAGENS E COMPUTAGAO Voce jé deve ter visto 0 argumento intuitivo que nos leva a conclusao de que 2*> x2 sera verdadeira sempre quex2 4. Javimos que ela é verdadeira parax=4. A medida quex cresce além de 4, o lado esquerdo 2* é duplicado a cada vez que x aumenta em uma unidade. Entretanto, 0 lado direito, x7, cresce de acordo coma taxa(s21)’ -Sex24,entdo (x + L)/enso pode ser maior que 1,25 ¢,portanto,(*!!)" ndo pod ser maior que 1,5625. Como 1,5625 < 2, toda vez que xaumentaacima de 4, 0 lado esquerdo 2* cresce mais que 0 lado direito x°. Desse modo, desde que comecemos com um valor como x = 4,no qual a desigualdade 2*2 x? ja €sa- tisfeita, poderemos aumentar x como preferirmos, pois a desigualdade ainda sera satisfeita. ‘Completamos assim uma prova informal, embora precisa do Teorema 1.3. Voltaremos a prova e a tornaremos mais precisa no Exemplo 1.17, depois que introduzirmos as provas “indutivas” O Teorema 1.3, como todos 0s teoremas interessantes, envolve um nimero infinito de fatos inter-relacionados, nesse caso a afirmacao “se x > 4, entao 2*> x2” para todos os inteiros x. De fato, nao precisamos supor quexé um intei- ro, masa provamencionou repetidamente o aumento dex em 1, comecando em x= 4, e assim so estamos realmente interessados na situagao em que x €um. inteiro. O Teorema 1.3 pode ser usado para ajudar a deduzir outros teoremas. No proximo exemplo, consideraremos uma prova dedutiva completa de um teore- ma simples que utiliza o Teorema 1.3. Teorema 1.4: Se x é a soma dos quadrados de quatro inteiros positivos, entao Pee PROVA: A idéia intuitiva da prova é que, sea hipstese é verdadeira para x, isto ¢, x asoma dos quadrados de quatro inteiros positives, entéox deve ser pelo me- nos 4, Entdo, a hipotese do Teorema 1.3 € valida e, como acreditamos nesse teo- rema, podemos afirmar que sua conclusio também ¢ verdadeira para x. O racio- cinio pode ser expresso como uma sequéncia de etapas. Cada etapa éa hipotese do teorema a ser provado, parte dessa hipotese, ou uma afirmagao que decorre de uma ou mais afirmacées anteriores. Por “decorre” queremos dizer que, se a hipotese de algum teorema € uma afirmacao anterior, entao a conclusdo desse teorema é verdadeira, e pode ser enunciada como uma afirmacao de nossa prova. Essa regra logica € frequente- mente chamada modus ponens; ou seja, se sabemos que H éverdadeira e sabemos que “se H entao C” é verdadeira, podemos concluir que C € verdadeira. Também permitimos que algumas outras etapas logicas sejam usadas na criacao de uma afirmacdo que decotre de uma ou mais afirmacoes anteriores. Por exemplo,se A eB sio duas afirmacées anteriores, entio podemos deduzir e enunciar a afirma- cao “Ae B”. AUTOMATOS: OS METODOS E A LOUCURA 9 A Figura 1.3 mostraasequéncia de afirmagoes de que precisamos para provar 0 Teorema 1.4. Embora em geral ndo sejam provados teoremas nessa forma tao estili- zada, ela ajuda a pensar em provas como listas muito explicitas de afirmagées, cada qual com uma justificativa precisa. Na etapa (1), repetimos uma das declaracdes dadas do teorema: que x é a soma dos quadrados de quatro inteiros. Muitas vezes € de grande ajuda nas provas nomear quantidades referenciadas, mas no identifica- das, e faremos isso aqui, dando aos quatro inteiros os nomes a, b, ce Afirmagao Justificativa L|xe@iPsead Dado 2. Ja21b21jc21d21 Dado 3. | @21;P21,721;221 (2) e propriedades da ariumética 4. [x24 (1), (3) e propriedades da aritmética a heres (4) e Teorema 1.3 Figura 1.3: Uma prova formal do Teorema 1.4 Na etapa (2), consideramos a outra parte da hipétese do teorema: que cada um dos valores que esto sendo elevados ao quadrado ¢ pelo menos 1. Tecnicamente, essa afirmagao representa quatro afirmagoes distintas, uma para cada um dos qua- tro inteiros envolvidos, Assim, na etapa (3), observamos que, se um numero € pelo menos 1, entdo seu quadrado também é pelo menos 1, Usamos como justificativa 0 fato de que a afirmacao (2) é valida, e também “propriedades da aritmética”. Isto é, supomos que o leitor conhece ou pode provar afirmacoes simples sobre como as desigualdades funcionam, tais como a afirmacao “se y = 1, entao y? > 1”. Actapa (4) utiliza as afirmagées (1) e (3). A primeira afirmacao nos diz que xéasoma dos quatro quadrados em questao, e a afirmacao (3) nos diz que cada um dos quadrados € pelo menos 1. Usando mais uma vez propriedades bem co- nhecidas daaritmética, concluimos que xé pelo menos 1 +1+1 +1, ouseja,4. Na ultima etapa, (5), usamos a afirmacdo (4), que € a hipotese do Teorema 1.3. O teorema propriamente dito ¢ a justificativa para se escrever sua conclu- sao, pois sua hipotese é uma afirmacdo anterior. Tendo em vista que aafirmacao (5), que éa conclusao do Teorema 1,3, também ¢ a conclusao do Teorema 1.4, provamos assim o Teorema 1.4. Ou seja, comecamos com a hipotese desse teo- rema e conseguimos deduzir sua conclusao. O 1.2.2 Reducao a definicdes Nos dois teoremas anteriores, a hipdtese usou termos que devem ter sido famili- ares: por exemplo, inteiros, adicao e multiplicacdo. Em muitos outros teoremas, 10 INTRODUCAO A TEORIA DE AUTOMATOS, LINGUAGENS E COMPUTAGAO inclusive varios da teoria de automatas, os termos usados no enunciado podem terimplicagdes menos ébvias. Um modo util de proceder em muitas provas €: © Se nao tiver certeza de como iniciar uma prova, converta todos os termos da hipstese em suas definicoes. Aqui esta um exemplo de um teorema simples de provar, uma vez que te- nhamos expressado seu enunciado em termos elementares. Ele utiliza as duas definigdes a seguir: 1. Um conjunto S é finito se existe um inteiro n tal que S tem exatamente n elementos. Escrevemos ||SI| =n, onde ||SI| € usado para denotar o numero de elementos em um conjunto S. Se 0 conjunto S nao € finito, dizemos que 5 é infinito, Intuitivamente, um conjunto infinito é um conjunto que contém mais que qualquer nimero inteiro de elementos. 2. Se Se Tsao ambos subconjuntos de algum conjunto U, entao T € 0 com- plemento de S (em relacao a U) se SU T = UeS NT =0. Isto ¢, cada ele- mento de U esta em exatamente um conjunto dentre S e T; em outras pa- lavras, consiste exatamente nos elementos de U que nao estdo em S. Teorema 1.5: Seja S um subconjunto finito de algum conjunto infinito U. Seja T o complemento de S em relacao a U. Entao, T ¢ infinito. PROVA: Intuitivamente, esse teorema diz que, se vocé tem um suprimento infi- nito de algo (U) ¢ joga fora uma quantidade finita (S), entao ainda lhe restara uma quantidade infinita. Vamos comecar reafirmando os fatos do teorema como na Figura 1.4. Afirmagio original Nova afirmagao Sé finito Existe um inteiro n tal que liSil =n Ue infinito Para nenhum inteiro p temos |/UIl = p Té ocomplemento de $ sUT=UesNT=0 Figura 1.4: Reafirmando os dados do Teorema 1.5 Ainda estamos sem saida, e assim precisamos usar uma técnica de prova co- mum chamada “prova por contradicao”. Nesse método de prova, que sera dis- cutido em detalhes na Sec4o 1.3.3, supomos que a conclusao ¢ falsa. Entao, usa- ‘mos essa suposi¢aa, junto com partes da hipotese, para provar o oposto de uma das afirmacoes feitas na hipétese. Em seguida, mostramos que é impossivel to- das as partes da hipotese serem verdadeiras e a conclusao ser falsa ao mesmo tempo. A tinica possibilidade que resta €a conclusao ser verdadeira sempre que a hipotese € verdadeira. Isto €, 0 teorema € verdadeiro. AUTOMATOS: 05 METODOS E A LOUCURA, u No caso do Teorema 1,5, a contradigao da conclusao é “T € finito”. Vamos supor que T ¢ finito, juntamente coma afirmacao da hipotese que diz que S é fi- nito; ou seja, l|S||=n paraalgum inteiro n. De modo semelhante, podemos reafir- mar a suposicao de que T é finito como ||T|| = m para algum inteiro m. Agora uma das afirmagoes dadas nos diz que S U T= Ue ST =0. Isto €, 0s elementos de U sao exatamente os elementos de S e T. Desse modo, deve haver n+melementos de U. Como n +m €é um inteiro, e mostramos que ||UI] = n + m, segue —se que U é finito. Mais precisamente, mostramos que o numero de ele- mentos em U é um algum inteiro, que € a definicao de “finito”. Porém, a afirma- cdo de que U ¢ finito contradiz a afirmacao dada de que U € infinito. Portanto, usamos a contradigao de nossa conclusao para provar a contradicao de uma das afirmagées dadas na hipotese e, pelo principio de “prova por contradigao” , po- demos concluir que o teorema é verdadeiro. 0 As provas nao tém de ser tao prolixas. Tendo visto as idéias por tras da pro- va, vamos voltar a provar © teorema em poucas linhas. PROVA: (do Teorema 1,5) Sabemos que SU T=Ue que Se Tsao disjuntos, e as- sim [SII +lITIl=|IUI. Tendo em vista que S € finito, || = n para algum ne, como U é infinito, nao existe nenhum inteiro p tal que |IUIl = p. Assim, suponha que T seja finito; ou seja, lITIl =m para algum inteiro m, Entao, ||Ul| =|ISI| + III] =n +m, o que contradiz a afirmacao dada de que nao existe nenhum inteiro p igual a ||UI|. 1.2.3 Outras formas de teoremas A forma de teorema “se-entao” ¢ mais comum em areas tipicas da matematica. No entanto, também encontramos outros tipos de afirmagdes provadas como teoremas, Nesta secdo, examinaremos as formas mais comuns de afirmacoes € 0 que em geral precisamos fazer para prova-las. Maneiras de dizer “se-entao” Primeiro, existem varios tipos de enunciados de teoremas que parecem diferen- tes de uma simples forma “se H entao C”, mas que estao de fato dizendo o mes- mo: se a hipétese H ¢ verdadeira para um dado valor do(s) parametro(s), entaoa conclusao C é verdadeira para o mesmo valor. Aqui estao algumas outras mane- iras de representar “se H entéo GC”. 1. HimplicaC. 2. Hsomente se C. 3. CseH. fe . Sempre que H é verdadeira, segue-se C. a R INTRODUCAO A TEORIA DE AUTOMATOS, LINGUAGENS E COMPUTACAO Também podemos ver muitas variantes da forma (4), como “se H é verdadei- ra, entao decorre C “ ou "sempre que H ¢ verdadeira, C ¢ verdadeira’. Exemplo 1.6; O enunciado do Teorema 1.3 seria representado nessas quatro formas como: 1, x24 implica 2° 27. 2. x24 somente se 2% 2x7. 3. BE xt sex2 4. 4. Sempre que x > 4, segue-se que 2*2 x*, Afirmacées com quantificadores Muitos teoremas envolvem afirmagdes que utilizam os quantificadores “para todo” e“ existe”, ou variacoes semelhantes, como “para cada” em lugar de “para todo”, A ordem em que esses quantificadores aparecem afeta o significado da afirmacdo. Freqaentemente, € util ver afirmagdes com mais de um. quantificador como um “jogo” entre dois participantes ~ para todos ¢ existe — que especificam alternadamente valores para 0s parametros mencionados no teorema. “Pa- ra-todo” deve considerar todas as opcdes possiveis, e assim as escolhas de “para- todo” em geral sao deixaclas como varidveis. Entretanto, “existe” sé tem dle es- colher um valor, que pode depender dos valores escolhidos pelos jogadores an- teriormente. A ordem em que os quantificadores aparecem na afirmacao deter- ‘mina quem joga primeiro. Se o tltimo jogadora fazer uma escolha sempre pu- der encontrar algum valor permitido, entao a afirmacao € verdadeira. Por exemplo, considere uma definicao alternativa de “conjunto infini- to”: 0 conjunto S é infinito se e somente se, para todo inteiro n, existe um subconjunto T de S com exatamenten elementos. Aqui, “para-todo” prece- de “existe”, e assim devemos considerar um inteiro arbitrario n. Desta for- ma, “existe” escolhe um subconjunto T, e pode usar 0 conhecimento den para fazer isso. Por exemplo, se 5 fosse o conjunto de inteiros, “existe” po- deriaescolher o subconjunto T= (1, 2....,n} eassim obter sucesso, indepen- dente de n. Essa é uma prova de que 0 conjunto de inteiros ¢ infinito. ‘Aafirmacdo a seguir ésemelhante a definicao de “infinito”, mas € incor- reta porque inverte a ordem dos quantificadores: “existe um subconjunto T do conjunto $ tal que, para todo n, o conjunto T tem exatamentem elemen- tos”. Agora, dado um conjunto S como o dos inteiros, 0 jogador “existe” pode escother qualquer conjunto T; digamos que (1, 2, 5} seja escothido. Para essa escolha, o jogador “para-todo” deve mostrar que T tem n elemen- tos para todo n possivel. Porém, “para-todo” nao pode fazé-lo. Por exemplo, a afirmacdo ¢ falsa para n = 4 ou, de fato, para qualquer n # 3. AUTOMATOS: OS METODOS E A’ LOUCURA B Além disso, em légica formal, com frequéncia vemos o operador —> em lu- gar de “se-entdo”. Isto é, a alirmagao “se H entao C” poderia aparecer como H—> C em alguma literatura matematica; nao a utilizaremos aqui. Afirmagées se-e-somente-se As vezes, encontramos uma afirmagao da forma “A se e somente se B”. Outras formas dessa afirmacao sao “A iff B”!, “A ¢ equivalente a B” ou “A exatamente quando B”. Na realidade, essa afirmacao é um par de afirmagées se-entao: “se A entdo B” ¢ “se B entao A”, Provamos que “A se e somente se B” provando estas duas afirmagoes: O quanto as provas precisam ser formais? A resposta a essa pergunta nao ¢ facil. A essencia das provas € sua finalidade de convencet alguém, seja ele um avaliador do seu trabalho ou voce mes- mo, da corre¢aio de uma estratégia que vocé esta utilizando em seu cédigo. Se for convincente, ela sera suficiente; se ela deixar de convencer o “consu- midor” da prova, entao ela sera totalmente ignorada. A parte da incerteza relativa a provas vem do conhecimento diferente que o consumidor pode ter. Desse modo, no Teorema 1.4, supomos que vocé sabia tudo sobre aritmética e que acreditaria em uma afirmacao como “se y > 1 entio y?> 1”. Se nao estivesse familiarizado com a aritmética, te- riamos de provar essa afirmacao usando algumas etapas de nossa prova de- dutiva. Contudo, existem certos detalhes obrigatérios em provas, e omiti-los sem duivida torna a prova inadequada. Por exemplo, qualquer prova deduti- va que utilize afirmacOes nao justificadas pelas afirmacdes dadas, ou anterio- res, nao pode ser adequada. Quando fazemos uma demonstracao de uma afir- macdo “se e somente se”, seguramente devemos ter uma prova da parte “se” € outra prova da parte “somente-se”. Como um exemplo adicional, as provas indutivas (discutidas na Secdo 1.4) exigem provas das partes base e inducao. 1. A parte se: “se Bento A”, e 2. A parte somente-se: “se A entao B”, que freqdentemente € enunciada na forma equivalente “A somente se B”. As provas podem ser apresentadas em qualquer ordem, Em muitos teore- mas, uma parte é decididamente mais facil que a outra, e ¢ habitual apresentar primeiro a direcdo facil e deixa-la de lado. *1fF (se), abreviatura de “ifand only if (*se-e somente se"), é uma nao-palavra utilizada em alguns com- péndios de matematica para ajudar a torna-los mais sucintos. 4 INTRODUGAO A TEORIA DE AUTOMATOS, LINGUAGENS E COMPUTACAO Em logica formal, pode-se observar o operador +> ou =denotar uma afirma- cdo “se-e-somente-se”. Isto é, A =Be A <> B significam o mesmo que “A se e so- mente se B”. Ao provar uma afirmacdo se-e-somente-se, € importante lembrar que voce deve provar tanto a parte “se” quantoa parte “somente-se” . As vezes, voce acha- 14 itil desmembrar uma afirmagao se-e-somente-se em uma sucessao de varias equivaléncias. Qu seja, para provar “A se e somente se B”, vocé poderia provat primeiro “A se e somente se C”, e depois provar “C se e somente se B”. Esse mé- todo funciona, desde que vocé lembre que cada etapa se-e-somente-se deve ser provada em ambos os sentidos. Provar qualquer etapa em apenas um dos senti- dos invalida a prova inteira. O exemplo a seguir mostra uma prova se-e-somente-se simples. Ela usa as notagdes: 1. Lx], 0 piso do ntimero real x, é 0 maior inteiro igual ou menor que x. 2. [x], 0 teto do mamero real x, € 0 menor inteiro igual ou maior que x. Teorema 1.7: Sejax um ntimero real. Entao, Lx|=[x]se esomente se x € um in- teiro. PROVA: (Parte somente-se) Nesta parte, supomos |x|] =[x] ¢ tentamos provar quex€ um inteiro, Usando as definicdes de piso e teto, notamos queLx|x. Porém, foi dado que Lx|=Ix]. Desse modo, podemos substituir 0 teto pelo piso na primeira desigualdade para concluir Be x sao validas, podemos concluir pelas propriedades das desigualdades aritméticas que[ x] = x. Como| x]ésempre um inteiro,x também tem de ser um inteiro nesse caso. (Parte se) Agora, supomos que x é um inteiro e tentamos provar Lx] =[x]. Essa parte ¢ facil. Pelas definicoes de piso e teto, quando x éum inteiro, LxJe! [x] sdo iguais a x ¢, portanto, sao iguais entre si, 0 1.2.4 Teoremas que parecem nio ser afirmagées se-entao Asvezes, encontramos um teorema que parece nao ter uma hipotese. Um exem- plo é 0 bem conhecido fato da trigonometria: Teorema 1.8: sen? @ + cos?9=1. Na realidade, essa afirmacao tem uma hipotese, ¢ a hipdtese consiste em to- das as afirmacées que voce precisa conhecer para interpretar a alirmacao. Em particular, a hipotese oculta € que @ €um Angulo e, assim, as funcOes seno e cos- seno tem seu significado habitual para angulos. A partir das definigdes desses AUTOMATOS: 0S METODOS E A LOUCURA b termos e do Teorema de Pitagoras (em um triangulo retangulo, o quadrado da hipotenusa € igual a soma dos quadrados dos outros dois lados), vocé poderia provar o teorema. Em esséncia, a forma se-entdo do teorema é realmente: “se é um angulo, entao sen? @ + cos? @ = 1” 1.3 Outras formas de provas Nesta seco, estudaremos varios topicos adicionais relativos a elaboragao de provas: 1. Provas sobre conjuntos 2. Provas por contradicao. 3. Provas por contra-exemplo. 1.3.1 Provando equivaléncias entre conjuntos Na teoria de automatos, freqiientemente somos levados a provar um teorema que afirma que conjuntos construidos de duas maneiras diferentes sao identi- cos. Muitas vezes, esses conjuntos sao conjuntos de strings de caracteres, ¢ tais conjuntos sao chamadbos “linguagens”; porém, nesta secao, a natureza dos con- juntos nao ¢ importante. Se E e F sao duas expresses que representam conjun- tos, a alirmacdo E = F significa que os dois conjuntos representados sao iguais. Mais precisamente, todo elemento no conjunto representado por E esté no con- junto representado por F, ¢ todo elemento no conjunto representado por F esta ‘no conjunto representado por E. ‘Exemplo 1.9: A lei comutativa da unido afirma que podemos tomar a unido de dois conjuntos Re Sem qualquer ordem. Ou seja, RU S= SUR. Nesse caso, E€ ‘aexpressaio R U Se F éaexpressao 5 U R. A lei comutativa da uniao afirma que E=F.0 Podemos escrever uma igualdade de conjuntos E = F como uma afirmacao --somente-se: um elemento x esta em E se e somente se x est em F. Como ncia, vemos o esboco de uma prova de qualquer enunciado que afirma dade de dois conjuntos E = F; ela segue a mesma forma de qualquer prova ymente-se: 1. Provar que, se x esta em E, entdo x esta em F. 2. Provar que, se x est4 em F, entao x esta em E. ‘Como um exemplo desse proceso de prova, vamos provar a lei distributiva sobre a intersecao: 16 INTRODUGAO A TEORIA DE AUTOMATOS, LINGUAGENS E COMPUTACAO Teorema 1.10: RU ($M T) = (RUS) 9 (RUT) PROVA: As duas expressoes de conjuntos envolvidas sio E = RU (SM T) € F=(RUS)N (RUT). Provaremos cada uma das duas partes do teorema. Na parte “se” supomos que o elemento x est em Ee mostramos que ele esta em F. Essa parte, resumida na Figura 1.5, usa as definicdes de unido e intersecao; supomos que voce esteja familiarizado com elas. Entao, temos de provar a parte “somente-se” do teorema. Aqui, supomos que x esté em F e mostramos que ele esta em E. As etapas sao resumidas na Figura 1.6. Tendo em vista que provamos ambas as partes da afirmacdo se-e-somente-se, lei distributiva da unio sobre a intersecao fica provada. 0 1.3.2 A contrapositiva Toda afirmacao se-entaéo tem uma forma equivalente que, em algumas circuns- tancias, é mais facil de provar, A contrapositiva da afirmacao “se H entao C” € “se. nao C entao nao H”. Uma afirmagao e sua antitese sao ambas verdadeiras ou am- bas falsas, e assim podemos provar qualquer uma delas para provar a outra. Afirmagao Justificativa 1, | xestaemRU (SNOT) Dado 2. | xestaem R ou xestaemR U (SMT) (1) e definicao de uniao 3. | xestaéem R ou xestaemS eT (2) e definicao de intersecao 4. | xestaemRUS (3) e definigdo de uniao 5. | xestaemRUT (3) e definigao de uniao 6. | xestéem (RU S)N (RUT) (4), (3) e definigao de intersegao Figura 1.5; Etapas na parte “se” do Teorema 1.10 Afirmagao: Justificativa 1. | xestéem RU S)N RUT) Dado 2. | xestaemRUS (1) e definigao de intersegao 3, | xestéemR UT (1) edefinigao de intersegao 4. | xestd em R ou xestiemS €T 2), @) e racioetnio sobre unides 5. | xestéem Rou xestaemS NT (4) e definigao de intersegao 6. | xestéemR U (SMT) (5) ¢ defimigao de uniao Figura 1.6: Etapas da parte “somente-se” do Teorema 1.10 AUTOMATOS: OS METODOS E A LOUCURA 7 Para ver por que “se H entaio C” € “se nao C entao nao H” sao logicamente equivalentes, primeiro observe que ha quatro casos a considerar: 1. He C verdadeiras. 2. Hverdadeira e C falsa. 3. C verdadeira e H falsa. 4. He C falsas. S6 existe uma maneira de tornar falsa uma afirmagao se-entdo; a hipotese deve ser verdadeira e a conclusao falsa, como no caso (2). Nos outros trés casos, inclusive no caso (4) em que a conclusao € falsa, a afirmacao se-entdo propria- mente dita é verdadeira. Agora, considere em que casos a antitese “se nao C, entéo nao H” ¢ falsa. Para que essa afirmacao seja falsa, sua hipotese (que € “nao C”) deve ser verda- deira, e sua conclusdo (que é “nao H”) deve ser falsa. Entretanto, “nao C” € ver- dadeira exatamente quando C € falsa, e “nao H” é falsa exatamente quando H é verdadeira. Essas duas condicdes s4o novamente o caso (2), o que mostra que, em cada um dos quatro casos, a afirmacdo original e sua antitese s4o ambas ver- dadeiras ou ambas falsas; isto é, elas sao logicamente equivalentes. Como dizer “se-e-somente-se” para conjuntos Como mencionamos, os teoremas que declaram equivaléncias de expres- sées sobre conjuntos sao afirmacées se-e-somente-se. Desse modo, o Teo- rema 1.10 poderia ter sido declarado como: um elemento x esta em R U (S 1 T) se € somente se x esta em (RU S)O(RUT) Outra expresso comum de uma equivaléncia entre conjuntos pode ser feita com a locucdo “todos-e-somente”. Por exemplo, 0 Teorema 1.10 tam- bém poderia ser declarado como “os elementos de R U (SM T) sao todos e somente os elementos de (RUS) N (RUT) A reciproca Nao confunda os termos “contrapositiva” e “teciproca”. A reciprocade uma afirmacdo se-entdo é o “outro sentido”; isto ¢, a reciproca de “se H entdo C” € “se C entéo H”. Diferente da contrapositiva, que é logicamente equivalen- te a afirmagao original, a recfproca nao € equivalente a afirmagao original De fato, as duas partes de uma prova se-e-somente-se so sempre alguma afirmagao e sua reciproca. 18 INTRODUGAO A TEORIA DE AUTOMATOS, LINGUAGENS E COMPUTACAO Exemplo 1.11: Lembramos o Teorema 1.3, cuja afirmagao era: “sex 24, entio 2*> 2”. A contrapositiva dessa afirmagao é “se nio 22 x* entao ndo.x> 4". Em termos mais coloquiais, fazendo uso do fato de que “nao a> b” €0 mesmo que a i. Evidentemente, j ndo poderia ser i, por- que provamos na parte da base que S(i) ¢ verdadeira. Portanto, j deve ser maior que i. Agora, sabemos que j—1 >i, e S(j - 1) é verdadeira. Noentanto, provamos na parte indutiva que, sen >i, entdo S(n) implica S(n +1). Suponha que fazemos n = j - 1. Entdo, sabemos a partir da etapa indutiva que S(j—1) implica 5(j). Tendo em vista que também conhecermos S(j-1), po- demos concluir S(j). Nesta demonstracdo supusemos a negacao daquilo que queriamos provar; isto é, que S(j) era falsa para algum j> i. Em cada caso, derivamos uma contradi- cdo, € assim temos uma “prova por contradig40” de que S(n) é verdadeira para todo n> i, Infelizmente, existe uma falha légica sutil no raciocinio anterior. Nossa su- posicdo de que podemos escolher um j2i minimo para o qual S(j) é falsa depen- de em primeiro lugar de nossa crenca no principio da inducao. Ou seja, a tinica maneira de provar que podemos encontrar tal j € usar um método que seja es- sencialmente uma prova indutiva. Porém, a “prova” desctita anteriormente faz sentido em termos intuitivos e corresponde & nossa compreensao do mundo real. Assim, em geral a tomamos como uma parte integral de nosso sistema de raciocinio légico: 2 INTRODUGAO A TEORIA DE AUTOMATOS, LINGUAGENS E COMPUTAGAO. © Principio de inducao: Se provamos S(i) e provamos que, para todo n 2 i, S(n) implica S(n + 1), entao podemos concluir que 5(n) para todo n2i. Os dois exemplos seguintes ilustram 0 uso do principio de indugao para provar teoremas sobre inteiros. Teorema 1.16: Para todo n> 0: a(n+DQn+1) fr 6 a.) PROVA: A prova ¢ feita em duas partes: a base e a etapa indutiva; provaremos cada uma separadamente. BASE: Para a base, escolhemos n=0. Pode parecer surpreendente que o teorema até mesmo faga sentido para n = 0, pois o lado esquerdo da Equacao (1.1) é ¥2, quando n=0. Contudo, existe um principio geral de que, quando o limite Superior de um somatorio (0, nesse caso) for menor que o limite inferior (no caso, 1), 0somatério nao tem nenhum termo e, portanto, 60. Istoé, i” =0 O lado direito da Equacao (1.1) também ¢ 0, pois 0x (0+ 1) x (2x0+ 1)/6=0 Desse modo, a Equacao (1.1) é verdadeira quando n = 0. INDUCAO: Agora, suponha n 2 0. Devemos provar a etapa indutiva, de que a Equagao (1.1) implica a mesma formula com n + 1 em lugar de n. A ultima for- mula € 6 (1.2) Podemos simplificar as Equacdes (1.1) e (1.2) expandindo as somas ¢ os produtos no lado direito. Essas equacées se tornam: Si? =n? +3n? +n) /6 a3) (2n? +9n? +13 +6)/6 a4) Precisamos provar (1.4) usando (1.3), pois, no principio de inducdo, essas sdo as afirmacées S(n + 1) e S(n), respectivamente. O “truque” ¢ desmembrar 0 somatorio até n+ 1 no lado direito de (1.4) em um somatorio até n mais 0 (n + 1)-ésimo termo. Portanto, podemos substituir 0 somatério até n pelo lado es- querdo de (1.3) emostrar que (1.4) éverdadeira, Essas etapas sao as seguintes: AUTOMATOS: 05 METODOS E A LOUCURA 23 (Se }+oe" = (Qn? +9n? + 13n +6) /6 (5) (Qn? +3n? +n) /6+(n? +2n+1) = (2? +9n* + 13n+6)/6 (1.6) A verificacao final de que (1.6) € verdadeira so exige algebra polinominal simples no lado esquerdo para mostrar que ele ¢ idéntico ao lado direito. 0 Exemplo 1.17: No proximo exemplo, provamos o Teorema 1.3 da Secdo 1.2.1. Lembre-se de que esse teorema afirma que, se x > 4, entéo 2*>x?. Fornecemos uma prova informal baseada na idéia que a razao x°/2* diminui a medida que x cresce acima de 4. Podemos tornar a idéia precisa se prowarmos a afirmacao 2*= 32 por indugdo sobre x, comecando coma base x= 4. Note quea afirmacdo é real- mente falsa para x < 4. BASE: Sex = 4, entdo 2*e x? sao ambos 16. Desse modo, 2*2 4? ¢verdadeira. INDUGAO: Suponha para algum x 2 4 que 2*2 x”. Com essa afirmagao como hi- potese, precisamos provar a mesma afirmacao, com x + 1 em lugar de x; ou seja, 2+ > [x +1]?, Essas sao as afirmagoes S(x) e S(x + 1) do principio de indugao; 0 fato de estarmos usando x em lugar de n como parametro nao deve ser motivo de preocupacao: x ou n é apenas uma varidvel local. Como no Teorema 1.16, devemos reescrever S(x +1) de modo que ela possa usar S(x). Nesse caso, podemos escrever 2!**! como 2 x 2*. Tendo em vista que S(x) nos informa que 2* > x2, podemos concluir que 2+! = 2x 2* +1222. Porém, precisamos de algo diferente; precisamos mostrar que 2**! > (x +1)”, Um modo de provar essa afirmacao ¢ provar que 2x? > (x + 1)? e depois usar a transitividade de > para mostrar que 2**! > 2x72 (x+ 1)? Em nossa provade que de > (x4 1)? an podemos usar a suposicao de que x > 4. Comece simplificando (1.7): 22241 (18) Divida (1.8) por x para obter: x2a+t as) x Como x2 4, sabemos que /x< 1/4. Desse modo, 0 lado esquerdo de (1.9) € pelo menos 4, ¢0 lado direito éno maximo 2,25. Assim, provamosa verdade de (1.9). Logo, as Equacdes (1.8) e (1.7) também sao verdadeiras. Por sua vez, a Equacdo (1.7) nos da 2x* > (x + 1)? para x> 4 e nos permite provar a afirmacao S(x+ 1) que, como sabemos, era 2**!>(x+ 1). 0 24 INTRODUCAO A TEORIA DE AUTOMATOS, LINGUAGENS E COMPUTACAO Inteiros como conceitos definidos recursivamente Mencionamos que as provas indutivas sao uteis quando o tema ¢ definido recursivamente. Entretanto, nossos primeiros exemplos foram indugdes sobre inteiros, que normalinente ndo imaginamos como “definidos recur- sivamente”. Contudo, existe uma definicéo recursiva natural de quando ‘um niimero € um inteiro nao negativo, e essa definicao realmente corres- ponde ao modo como acorrem as indugdes sobre inteiros: dos objetos defi- nidos primeiro para aqueles definidos mais tarde. BASE: 0 é um inteiro. INDUCAO: Se n € um inteiro, entao n + 1 também €. 1.4.2 Formas mais gerais de induces sobre inteiros As vezes, uma prova indutiva sé se torna possivel usando-se um esquema mais geral que o proposto na Seco 1.4.1, na qual provamos uma alirmacao 5 para um valor de base e entao provamos que “se S(n) entao S(n + 1)”. Duas generaliza- es importantes desse esquema sao: 1. Podemos usar varios casos de base. Isto €, provamos S(i), S(i + 1),..., SG) para algum j > i. 2. Na prova de S(n + 1), podemos usar a verdade de todas as afirmacoes SG), SG V),..., SO) em vez de usar apenas 5(n). Além disso, se provamos casos de base até S(j), entéo podemos supor que n 2 j, em vez de n2 Aconclusao a ser tirada dessa base e da etapa indutiva ¢ que S(n) é verdadei- ra para todo n 2 i. Exemplo 1.18: O exemploa seguir ilustrard o potencial de ambos os principios. Aafirmagao S(n) que gostariamos de provar € que, se n 2 8, entao n pode ser es- crito como uma soma de valores 3 ¢ 5, A propésito, note que 7 nao pode ser escrito como uma soma de valores 3 ¢ 5. BASE: Os casos de base so 5(8), 5(9) ¢ S(10). As provas sao 8=3 +5,9=3 43+ 3.e 10 =5+5, respectivamente. INDUGAO: Suponha que n= 10 eque S(8), 5(9)4...5 S(n) sao verdadeiras. De- vemos provar S(n + 1) a partir desses fatos dados. Nossa estratégia € subtrair 3 den + 1, observar que deve ser possivel escrever esse ntimero como uma soma de valores 3 ¢ 5, e adicionar mais um 3a soma para obter um modo de escrever n+l. AUTOMATOS: OS METODOS E A LOUCURA Bb Mais formalmente, observe que n - 22 8, e assim podemos supor que S(n- 2). [sto é,n—2 = 3a + 5b para alguns inteiros a eb. Entao,n + 1=3 +3a+ 5b, eas- simn-+ 1 pode ser escrito como asoma de a + I valores 3¢ bvalores 5. Isso prova S(n + 1) e conclui a etapa indutiva. 0 1.4.3 Inducées estruturais Na teoria de autmatos, existem varias estruturas definidas recursivamente das quais precisamos para provar afirmacées. As nocdes familiares de arvores e ex- presses sao exemplos importantes. Como inducdes, todas as definigdes recur- sivas t¢m um caso de base, no qual uma ou mais estruturas elementares sao defi- nidas, e uma etapa indutiva, em que estruturas mais complexas sao definidas em termos das estruturas definidas previamente. Exemplo 1.19: Aqui esta a defini¢do recursiva de uma arvore: BASE: Um tinico né é uma drvore, e esse no € a raiz da arvore. INDUGAO: Se T,,T},....T), 40 arvores, entao podemos formar uma nova arvore da seguinte forma: 1. Comece com um novo né N, a raiz da arvore. 2. Adicione cépias de todas as arvores T),T,,... 3. Adicione arestas desde 0 n6 N até as raizes de cada uma das arvores TT, vale A Figura 1.7 mostra a construcao indutiva de uma arvore com raiz Na partir de k arvores menores. 0 Exemplo 1.20: Aqui temos outra definicao recursiva. Dessa vez, definimos ex- presses usando os operadores aritméticos + e *, com numeros e variaveis per- mitidas como operandos. BASE: Qualquer numero ou letra (isto é, uma variavel) € uma expressao. INDUCAO: Se E ¢ F so expressdes, entao E + F, E * Fe (E) também 0 sao. Porexemplo, 2¢ xsao expressoes pela base, A etapa indutiva nos diz que x42, (x42) e2* (x4 2) também sao expressoes. Note que cada uma dessas ex- pressées depende das anteriores também o serem. 0 26 INTRODUGAO A TEORIA DE AUTOMATOS, LINGUAGENS E COMPUTACAO, 9) Figura 1.7: Construcao indutiva de uma arvore Intuicao por tras da inducao estrutural Podemos sugerir informalmente por que inducdo estrutural €um método de prova valido. Imagine a definigao recursiva estabelecendo que cada uma de certas estruturas X,,Xp,... satisfazem a definicao, Os elementos de base vem primeiro, ¢ 0 fato de que X, esté no conjunto definido de estruturas s6 pode depender da pertinéncia ao conjunto definido de estruturas que pre- cedem X, na lista. Vista desse modo, uma inducao estrutural nao é nada além de uma inducao sobre o inteiro n da afirmacao S(X,,). Essa indugao pode ser da forma generalizada descrita na Segao 1.4.2, com varios casos de base e uma etapa indutiva que usa todas as instancias anteriores da afirma- cao. No entanto, devemos lembrar, como explicamos na Secao 1.4.1, que essa intuicdo nao é uma prova formal e, de fato, temos de supor a validade desse prinefpio de indugdo como fizemos no caso da validade do principio de inducao original daquela secao. Quando temos uma definicao recursiva, podemos provar teoremas sobre ela, usando a forma de prova a seguir, chamada inducdo estrutural. Seja 5(X) ‘uma afirmacao sobre as estruturas X definidas por alguma definicao recursiva especifica. 1. Como base, prove S(X) para a(s) estrutura(s) de base X. 2. Para a etapa indutiva, tome uma estrutura X que a definicdo recursiva nos diz que é formada a partir de Y,,Y3,....¥x. Suponha as afirmacoes S(¥,), S(¥,),-.., S(Yq) € use essas afirmagées para provar 5(X). Nossa conchusao ¢ que S(X) é verdadeira para todo X. Os dois teoremas seguin- tes séo exemplos de fatos que podem ser provados sobre arvores e expressdes. Teorema 1.21: Toda arvore tem um no a mais que seu mimero de arestas. PROVA: Aalirmacao formal $(T) que precisamos provar por inducao estrutural é: “se T é uma arvore, e T tem n nds ¢ ¢ arestas, entao n =e + 1”. AUTOMATOS: OS METODOS E A LOUCURA 27 BASE: A base ocorre quando Téum tinico n6. Entao,n=1 e¢=0,eassim orela- cionamento n = ¢ + 1 € verdadeiro. INDUGAO: Seja T uma arvore construida pela etapa indutiva da definicao, a partir do no de raiz N e de k arvores menores T,,T},..., Ty. Podemos supor que as afirmacoes S(T) sao verdadeiro para i = 1,2,...,k. Isto €, seja T, com n, nds € €, arestas; entao n, = ¢, +1. ‘Os nds de Tsao ond Ne todos os nés das arvores T;. Desse modo, existem 1+n,+n,+... +mndsem T. As arestas de Tsdo as k arestas que adicionamos ex- plicitamente na etapa de definicao indutiva, mais as arestas das arvores T,. Con- seqiientemente, T tem k+e, +e, 4+...4+e, (1.10) arestas. Se substituirmos n, por e, + 1 na contagem do ntimero de nés de T, des- cobriremos que T tem 14le, +I +le, ++- +e, +1) a. nos, Tendo em vista que existem k termos “+1” em (1.10), podemos reagrupar (1.11) como k+lte, te, ++ +e, (1.12) Essa expressdo ¢ exatamente uma unidade maior que a expressao de (1.10) que foi dada para o mimero de arestas de T. Assim, Ttem um no a mais que seu numero de arestas. 0 Teorema 1,22: Toda expressao tem um numero igual de parénteses a esquerda eadireita. PROVA: Formalmente, provamos a afirmacao 5(G) sobre qualquer expressio G definida pela recursao do Exemplo 1.20: os numeros de parénteses a esquerda e a direita em G sao iguais. BASE: Se G € definida pela base, entao G € um numero ou uma variavel. Essas expressdes tém 0 parénteses a esquerda ¢ 0 parénteses & direita, assim os nii- meros sao iguais. INDUCAO: Ha trés regras pelas quais a expressao G pode ter sido construida de acordo com a etapa indutiva na definicao: 1. G=E+F. 2. G=E*F. 3. G=(E). 28 INTRODUCAO A TEORIA DE AUTOMATOS, LINGUAGENS E COMPUTACAQ Podemos supor que S(E) e S(F) sao verdadeiras; isto ¢, E tem 0 mesmo mi- mero de parénteses a esquerda e a direita, digamos n de cada, ¢ F também tem o mesmo numero de parénteses a esquerda e a direita, digamos m de cada. Entao, podemos calcular os niimeros de parénteses a esquerda e & direita em G para cada um dos trés casos, como: 1. SeG=E+F, entao G tem n + m parénteses a esquerda e n + mparénteses a direita; de cada tipo, n vem de Ee m vem de F. 2. SeG=E* F,a contagem de parénteses para G ¢ mais uma vez n + mde cada, pela mesma razao do caso (1). 3. SeG=(E), entao existem n+ 1 parénteses a esquerdaem G —um parénte- se a esquerda é mostrado explicitamente, ¢ os outros n estao presentes em E, Do mesmo modo, existem n + 1 parénteses & direita em G; um € ex- plicito, ¢ os outros n estao em E. Em cada um dos trés casos, vemos que os nimeros de paréntesesa esquerda ca direita em G sao iguais. Essa observacao completa a etapa indutiva e também aprova. O 1.4.4 Inducées mutuas As vezes ndo podemos provar uma tnica afirmacao por indugao, mas em vez disso precisamos provar um grupo de afirmagoes S,(n), 5,(n), .-., Sy(n) juntas por inducdo sobre n. A teoria dos autématos proporciona muitas dessas situa- goes. No Exemplo 1.23, mostramos a situacto comum em que precisamos ex- plicar 0 que um automato faz provando um grupo de afirmagoes, uma para cada estado. Essas afirmac6es informam sob quais seqiéncias de entradas o automa- to entra em cada um dos estados. No sentido estrito, provar um grupo de afirmacées nao ¢ diferente de provar ‘a conjuncdo (AND légico) de todas as afirmacoes. Por exemplo, o grupo de afir- mac@es 5,(n), 5s(n),....,5p(1) poderia ser substituido pela unica afirmagao S,(n) AND S,(71) AND ... AND S,(n). Porém, quando ha realmente varias afirmacées inde- pendentesa provar, em geral é menos confuso manter as afirmaces separadas e provar todas elas em suas proprias partes das etapas de base ¢ indutivas. Chama- mos esse tipo de prova de inducdo mtitua. Um exemplo ilustrara as etapas neces- sarias de uma recursdo mutua. Exemplo 1.23: Vamos rever o interruptor liga/desliga, que representamos como um automato no Exemplo 1.1. O proprio automato ¢ reproduzido na Fi- gura 18. Tendo em vista que pressionar 0 botdo alterna o estado entre ligado e desligado, ¢ como o interruptor comeca no estado desligado, esperamos que as afirmagées a seguir expliquem em conjunto a operacao do interruptor: AUTOMATOS: OS METODOS E A LOUCURA 29 5, (n): O automato esta no estado desligado apos n acionamentos se esomente se né par. S,(n): O automato esta no estado ligado apésn acionamentos se e somente sen € impar. Pressionar Inicio (ea (1) Pressionar Figura 1.8: Repetigo do automato da Figura 1.1 Poderiamos supor que S, implica S, € vice-versa, pois sabemos que um nu- mero nm nao pode ser ao mesmo tempo par e impar. Contudo, nem sempre é ver- dade que um automato esté em um ¢ somente um estado. Ocorre que 0 autéma- to da Figura 1.8 est4 sempre em exatamente um estado, mas esse fato tem de ser provado como parte da inducdo mitua. Damos a parte base ea parte indutiva das provas das afirmagoes S, (n) € S,(n) a seguir. As provas dependem de varios fatos sobre inteiros impares e pares: se adicionarmos ou subtrairmos 1 de um inteiro par, obteremos um inteiro impart e, se adicionarmos ou subtrairmos 1 de um inteiro impar, obteremos um inteiro par. BASE: Para a base, escolhemos n = 0. Tendo em vista que existem duas afirma- ces, cada uma das quais deve ser provada em ambos os sentidos (porque $, € S; sao afirmacoes “se-e-somente-se”), existem realmente quatro casos para a base ¢ também quatro casos para a indugao. 1, [5,;Se] Como 0 € de fato par, devemos mostrar que, depois de 0 aciona- mentos, o autOmato da Figura 1.8 esta no estado desligado. Como esse €0 estado inicial, o automato realmente esta no estado desligado depois de 0 acionamentos. 2. [S,;Somente-se] O autémato esta no estado desligado depois de 0 aciona- mentos; assim, devemos mostrar que 0 é par. Contudo, 0 ¢ par pela defi- nicao de “par”, ¢ assim nao ha mais nada a provar. 3. [S2; Se] A hipdtese da parte “se” de S, € que 0 é impar, Como essa hipste- se Hé falsa, qualquer afirmacao da forma “se H entao C” é verdadeira, wD INTRODUGAO A TEORIA DE AUTOMATOS, LINGUAGENS E COMPUTACAO como discutimos na Secao 1.3.2. Desse modo, essa parte da base também € verdadeira. 4. [S);Somente-se] A hipotese de que o autOmato esta no estado ligado de- pois de 0 acionamentos também ¢ falsa, pois o unico modo de chegar ao estado ligado é seguir um arco identificado como Pressionar, o que exige que o botdo seja pressionado pelo menos uma vez. Tendo em vista que a hipotese é falsa, novamente podemos concluir que aafirmacio se-entao € verdadeira. INDUCAO: Agora, supomos que 5,(n) ¢ S,(n) sao verdadeiras e tentamos pro- var $,(n + 1) e S,(n + 1). Novamente, a prova se divide em quatro partes. 1. [5,(n+ 1); Se] A hipétese para essa parte € que n + 1 € par. Desse modo, n é impar. A parte “se” da afirmacao S,(n) diz que, depois de n acionamen- tos, o automato est no estado ligado. O arco de ligado até desligado iden- tificado como Pressionar nos informa que o (n + 1)-ésimo acionamento fara o autémato entrar no estado desligado. Isso completa a prova da par- te “se” de 5, (n+ 1). 2. [S, (n+ 1);Somente-se] A hipotese é que o automato esta no estado desli- gado depois de n + 1 acionamentos. A inspeco do autémato da Figura 1.8 nos diz que o unico modo de chegar ao estado desligado depois de um ou mais movimentos é estar no estado ligado e receber uma entrada Pres- sionar, Desse modo, se estamos no estado desligado depois de n + 1 acio- namentos, devemos ter ficado no estado ligado depois de n acionamen- tos. Entao, podemos usar a parte “somente-se” da afirmagao S,(n) para concluir que n é fmpar. Conseqientemente, n+ 1 € par, que é aconclusao desejada para a parte somente-se de S,(n + 1). 3. [S,(n + 1); Sel Essa parte € em esséncia igual a parte (1), com as fungoes das afirmagoes S, ¢ S, permutadas, e com as funges de “impar” e “par” permu- tadas. O leitor deve ser capaz de construir essa parte da prova facilmente. 4. [5,(n + 1); Somente-se] Essa parte é em esséncia igual a parte (2), com as funcdes das afirmacoes S, eS) permutadas, ¢ com as fungdes de “impar” e “par” permutadas. Podemosabstrair do Exemplo 1.23 0 padrao para todasas inducdes mituas: © Cada uma das afirmagdes deve ser provada separadamente na base ¢ na etapa indutiva. © Seas afirmagées sdo “se-e-somente-se”, ent&o ambos os sentidos de cada afirmacao devem ser provados, tanto na base quanto na indu¢ao. AUTOMATOS: 05 METODOS E A LOUCURA 31 1.5 Os conceitos centrais da teoria de autématos Nesta segdo, introduziremos as definigdes mais importantes dos termos que permeiam a teoria de automatos. Esses conceitos incluem o “alfabeto” (um con- junto de simbolos), “strings” (uma lista de smbolos de um alfabeto) e “lingua- gem” (um conjunto de strings de um mesmo alfabeto). 1.5.1 Alfabetos Um alfabeto é um conjunto de simbolos finito e nao-vazio. Convencionalmente, usamos o simbolo © para um alfabeto. Os alfabetos comuns incluem: 1. £ = {0, 1}, 0 alfabeto binario. 2. Z= {a, b, ..., z], 0 conjunto de todas as letras mimisculas. 3. O conjunto de todos os caracteres ASCII, ou 0 conjunto de todos os ca- racteres ASCII imprimiveis. 1.5.2 Strings Um string (ou as vezes palavra ou também cadeia) € uma sequéncia finita de simbolos escolhidos de algum alfabeto. Por exemplo, 01101 é um string do alfa- beto binario E = (0, 1}. O string 111 € outro string escolhido nesse alfabeto. O string vazio O string vazio € o string com zero ocorréncias de simbolos. Esse string, denota- do por ¢, € um string que pode ser escolhido de qualquer alfabeto. Comprimento de um string Com frequéncia, ¢ util para classificar strings por seu comprimento, isto €, o ni- mero de posicdes para simbolos no string. Por exemplo, 01101 tem compri- mento 5. E comum dizer que o comprimento de um string é o “numero de sim- bolos” no string; essa afirmacdo € coloquialmente aceita, mas nao € estritamente correta. Desta forma, existem s6 dois simbolos, 0 1, no string 01101, mas exis- tem cinco posicées para simbolos, e seu comprimento € 5. Porém, em geral vocé deve esperar que o “mimero de simbolos” possa ser usado quando 0 significado for “mamero de posicoes”. A notacao padrao para o comprimento de um string w é |wl. Por exemplo, 1011] = 3 e lel =0. RR INTRODUGAO A TEORIA DE AUTOMATOS, LINGUAGENS E COMPUTACAO Poténcias de um alfabeto SeEé umalfabeto, podemos expressar 0 conjunto de todos os strings de um cer- to comprimento a parte desse alfabeto, usando uma notacao exponencial. Defi- nimos E* como o conjunto de strings de comprimento k, eo simbolo de cada um deles esta em L. Exemplo 1.24: Observe que Z°= {f), independente de qual alfabeto seja E. Isto ,¢ € 0 unico string cujo comprimento € 0. Se ¥ = (0,1), entao Z! = {0,1}, 3? = {00,01,10,11}, 23 = {000,001,010,011, 100,101,110,111} e assim por diante. Observe que existe uma ligeira confusdo entre E € Zl. O pri- meiro é um alfabeto; seus elementos 0e 1 s4o simbolos. O outro é um conjunto de strings; seus elementos sao os strings 0 ¢ 1, cada um dos quais tem compri- mento 1. Nao tentaremos usar nota¢oes distintas para os dois conjuntos, confi- ando no contexto para tornar claro se (0, 1] ou conjuntos semelhantes sao alfa- betos ou conjuntos de strings. 0 Convencao de tipo para simbolos e strings Comumente, usaremos letras mintisculas do inicio do alfabeto (ou digitos) para denotar simbolos, ¢ letras mimisculas proximas 20 fim do alfabeto, em geral w, x,y € z, para denotar strings. Vocé deve tentar se acostumar a essa convencao, para ajuda-lo a se lembrar dos tipos de elementos que estao sendo discutidos. O conjunto de todos os strings sobre um alfabeto 5 ¢ denotado convencio- nalmente por *. Por exemplo, (0, 1)" ={e, 0, 1, 00, 01, 10, 11, 000,...}. Em ou- tros lermos, E = YuLUYu--. As vezes, desejamos excluir o string vazio do conjunto de strings. O conjun- to de strings ndo vazios do alfabeto E ¢ denotado por 2*. Desse modo, duas equi- valéncias apropriadas sao: aD Ss YuLrur vss. e LY =L' Ute}. AUTOMATOS: OS METODOS E A LOUCURA 33 Concatenagao de strings Sejam os strings x e y. Entao, xy denota a concatenacdo de x e y, isto é, o string formado tomando-se uma copia de x e acrescentando-se a ela uma cépia de y. Mais precisamente, se x € 0 string composto de i simbolos x = a)a) ... ae yé 0 string composto de j simbolos y = b;, ... bj, entao xy € o string de comprimento i + ji XY = aA, ... a, yb, ... by Exemplo 1.25: Sejam x = 01101 e y = 110. Entao xy = 01101110 e yx = 11001101. Para qualquer string w,as equacdes ew = we = w sao validas. Isto é,¢ € a identidade para a concatenacdo, pois, quando ¢ concatenado com qualquer string, ele produz o mesmo string como resultado (de forma andloga ao modo como 0, a identidade para a adicdo, pode ser somado a qualquer para ntimero xe produz x como resultado), o 1.5.3 Linguagens Um conjunto de strings, todos escolhidos a partir dealgum 5", onde € umalfa- beto especifico, é chamado linguagem. Se E é um alfabeto, e L < D", entao L é uma linguagem sobre 5. Note que uma linguagem sobre 3 nao precisa incluir strings com todos os simbolos de 2; assim, uma vez que estabelecemos que L é uma linguagem sobre £, tambem sabemos que ela é uma linguagem sobre qual- quer alfabeto que seja um superconjunto de ©. Aescolha do termo “linguagem “ pode parecer estranha, Porém, linguagens comuns podem ser vistas como conjuntos de strings. Um exemplo ¢ 0 portu- gues, no qual uma colegao de palavras validas em portugués € um conjunto de strings sobre o alfabeto que consiste em todas as letras. Outro exemplo € C, ou qualquer outra linguagem de programacao, na qual os programas validos sao um subconjunto dos strings possiveis que podem ser formados a partir do alfa- beto da linguagem. Esse alfabeto ¢ um subconjunto dos caracteres ASCII O al- fabeto exato pode diferir ligeiramente entre diferentes linguagens de programa- cao mas, em geral, incluias letras maitisculas e minusculas, os digitos, a pontua- cdo € simbolos matematicos. Contudo, também existem muitas outras linguagens que surgem quando estudarmos automatos, Algumas sao exemplos abstratos, como: 1. A linguagem de todos os strings que consistem em n 0's seguidos por n valores 1, para algum n 2 0: {e,01,0011,000111,. 2. Oconjunto de strings de 0’se I’scom um ntimero igual de cada um deles: fe,01,10,0011,0101,1001....} 4 INTRODUCAO A TEORIA DE AUTOMATOS, LINGUAGENS E COMPUTACAO 3. O conjunto de ntimeros binarios cujo valor € um numero primo: {10,11,101,111,1011,...) 4. 37 é uma linguagem para qualquer alfabeto 5. 0, a linguagem vazia, ¢ uma linguagem sobre qualquer alfabeto. 6. {e},alinguagem que consiste apenas no string vazio, também é uma lin- guagem sobre qualquer alfabeto. Note que 0 (é}: 0 primeiro nao tem ne- nhum string, enquanto o outro tem um tnico string. A tinica restricdo importante sobre o que pode ser uma linguagem € que to- dos os alfabetos sao finitos. Desse modo, embora as linguagens possam ter um niimero infinito de strings, sdo restritas a strings tirados de um alfabeto fixo e fi- nito. 1.5.4 Problemas Na teoria de automatos, um problema é a questao de decidir se um dado string € elemento de alguma linguagem especifica. Ocorre, como veremos, que tudo aquilo que chamamos em termos mais coloquiais um “problema” pode ser ex- presso como pertinéncia a uma linguagem. Mais precisamente, se € um alfabe- toe L é uma linguagem sobre 5, entao o problema L ¢: © Dado um string w em 5", definir se w esta ou nao em L. Exemplo 1.26: 0 problema de testar o carater primo pode ser expresso pela lingua- gem L, que consiste em todos os strings bindrios cujo valor como um numero bina- rio € primo. Ou seja, dado um string de 0's e I's, diremos “sim” se o string for a re- presentagio bindria de um primo e diremos “ndo” se ndo for. Para alguns strings, essa decisao € facil. Por exemplo, 0011101 pode sera representacdo de um primo, pela simples razao de que todo inteiro, exceto 0, tem uma representacao binaria que comeca com 1. Entretanto, é menos dbvio se o string 11101 pertence a L,, € assim qualquer solugao para esse problema tera de usar recursos computacionais signifi- cativos de algum tipo: tempo e/ou espaco, por exemplo. Umaspecto potencialmente insatisfatorio de nossa definicao de “problema” € que em geral os problemas nao sao considerados como questoes de decisao (o que se segue € ou nao verdadeiro?), mas como solicitagdes para calcular ou transfor- mar alguma entrada (encontre a melhor maneira de realizar essa tarefa). Por exemplo, a tarefa do analisador sintatico em um compilador C pode ser imagina- dacomo um problema em nosso sentido formal, onde se recebe um string ASCILe se deve decidir se o string é ou nao um elemento de L,, 0 conjunto de programas validos em C. Porém, o analisador faz mais do que decidir. Ele produz uma arvore de andlise sintatica, as entradas em uma tabela de simbolos talvez mais. Pior ain- AUTOMATOS: OS METODOS E A LOUCURA 35 da, o compilador como um todo resolve o problema de transformar um programa Cem cédigo-objeto para alguma maquina, o que esta longe de simplesmente res- ponder “sim” ou “nao” sobre a validade de um programa. Formadores de conjuntos como um modo de definir linguagens Ecomum descrever uma linguagem usando um “formador de conjuntos”: {w | algo sobre w} Essa expresso € lida como “o conjunto de palavras w tais que (seja 0 que for dito sobre w a direita da barra vertical)”. Alguns exemplos sao: 1. {w| w consiste em um niimero igual de 0's € 1's}. 2. (w|w um numero inteiro binario primo}. 3. {w|w é um programa em C sintaticamente correto }. Também € comum substituir w por alguma expressdo com parametros edescrever os strings na linguagem declarando condigdes sobre os parame- tros. Aqui estao alguns exemplos; o primeiro como parametron,o segundo com Os parametros i e j: 1. {0"1"| m2 1}. Le-se “o conjunto de 0 elevado an | elevado antal quen€é maior que ou igual a 1”; essa linguagem consiste nos strings {01,0011,000111....}. Note que, como ocorre com os alfabetos, pode- mos elevar um unico simbolo a uma poténcia n para representat n c6- pias desse simbolo. 2. {0'V|0. 40 |] 42 | do “aa | alia | a Figura 2.5: Tabela de transi¢des para 0 DFA do Exemplo 2.1 2.2.4 Estendendo a funcao de transicao aos strings Explicamos informalmente que o DFA define uma linguagem: o conjunto de to- dos os strings que resultam em uma sequéncia de transicGes de estado, desde o estado inicial até um estado de aceitagao. Em termos do diagrama de transicoes, alinguagem de um DFA €0 conjunto de rétulos ao longo de todos os caminhos que leyam do estado inicial a qualquer estado de aceitacao. Precisamos agora tornar exata a nogao da linguagem de um DFA. Para isso, definimos uma funcdo de transicao estendida que descreve 0 que acontece quan- do comecamos em qualquer estado e seguimos qualquer sequéncia de entradas. Se 8 € nossa fungao de transicao, entao a funcao de transicao estendida construi- daa partir de 5 sera chamada . A funcao de transigao estendida é uma funcdo que toma um estado qe um string w e retorna um estado p—o estado que o auto- mato alcanca quando comeca no estado qe processa a sequéncia de entradas w. Definimosé por inducao sobre o comprimento do string de entrada, da seguinte forma: BASE: &(q, c) = q. Isto €, se estamos no estado q ¢ nao lemos nenhuma entrada, entdo ainda estamos no estado q. AUTOMATOS FINITOS 3B INDUGAO: Suponha que wé um string da forma xa; ou seja, a€ 0 ultimo simbo- lode w, ex € 0 string que consiste em tudo, menos 0 ultimo simbolo. * Porexem- plo, w = 1101 ¢ desmembrado em x = 110 e a = 1. Entdo: &(q, w) = 86(q, x), a) ap Agora, (2.1) pode parecer bastante complicada, mas a idéia ¢ simples. Para calcular 8(q, w), primeiro calculamos&(q, x), 0 estado em que o automato se en- contra depois de processar tudo, exceto o xiltimo simbolo de w. Suponha que esse estado seja p; ou seja,8(q, x) =p. Entaod(q, w) é 0 que obtemos fazendo uma transicao do estado p sobre a entrada a, o ultimo simbolo de w. Isto ¢, 5(q, w) = B(p, a). Exemplo 2.4: Vamos projetar um DFA para aceitar a linguagem L=({w|w tem ao mesmo tempo um numero par de 0's € um numero par de 1's} ‘Nao deve surpreender o fato de que a funcao dos estados desse DFA € contar 0 mimero de 0's eo mimero de 1's, numa operacéio.em modulo 2, Isto é, 0 estado € usado para lembrar se o ntimero de 0's vistos até agora é par ou impar, e tam- bem para lembrar se 0 ntimero de 1's vistos até agora € par ou impar. Portanto, existem quatro estados, que podem ter as seguintes interpretagoes: qo: O mimero de 0's vistos até agora e o nimero de 1's vistos até agora sao ambos pares. 4: O ntimero de 0's vistos até agora € par, mas o numero de 1's vistos até agora é impar. 4,: O mimero de 1’s vistos até agora ¢ par, mas o numero de 0's vistos até agora é¢ impar. qs: O mimero de 0's vistos até agora € 0 ntimero de 1’s vistos até agora sao ambos impares. Oestado qo ao mesmo tempo o estado inicial ¢ o Unico estado de aceitacao. Ele € o estado inicial porque, antes de ler quaisquer entradas, os ntimeros de 0's e I's vistos até o momento sdo ambos zero, € zero € par. Eo tnico estado de acei- tacdo, porque descreve exatamente a condicao para uma seqiéncia de 0's € 1’s pertencer a linguagem L. > Lembre-se de nossa convencio de que letrasno inicio do alfabeto sao stmbolos, e que as letras que esto proximas ao final do alfabeto sao strings. Precisamos dessa convencao para dar sentido a expresso “da forma xa". 4 INTRODUGAO A TEORIA DE AUTOMATOS, LINGUAGENS E COMPUTACAO Agora sabemos quase tudo o que é necessario para especificar um DFA para linguagem L. Ele ¢: A= (0241-42543) ,10,11,8,40,40}) onde a funcao de transicao 5 é descrita pelo diagrama de transigoes da Figura 2.6. Note como cada entrada 0 faz o estado cruzar a linha tracejada horizontal. Desse modo, depois de ver um mtimero par de 0’s, sempre estamos acima da li- nha, no estado qo ou q,; por outro lado, depois de ver um ntimero impar de 0's, sempre estamos abaixo da linha, no estado q, ou q- Damesma forma, todo 1 faz oestado cruzara linha tracejada vertical. Desse modo, depois de ver um numero par de 1’s, sempre estamos a esquerda, no estado qq ou qp; por outro lado, depois de ver um numero impar de 1's, estamos a direita, no estado q, ou q,. Essas ob- servacdes so uma prova informal de que os quatro estados tém as interpreta- Ges atribuidas a eles. Entretanto, seria possivel provar formalmente a correcéo de nossas afirmacées sobre os estados, por uma induce mutua, no espirito do Exemplo 1.23. Figura 2.6: Diagrama de transi¢des para 0 DFA do Exemplo 2.4 Também podemos representar esse DFA por uma tabela de transi¢Ges. A Fi- gura 2.7 mostra essa tabela, Porém, nao estamos apenas preocupados com 0 projeto desse DFA; queremos usé-lo para ilustrar a construgao de Sa partir de sua funcdo de transicao 5. Suponha que a entrada seja 110101. Como esse string tem ntimeros pares de 0's € 1’s, esperamos que ele esteja na linguagem. Desse modo, esperamos que 6(qg, 110101) = qo, pois qo € 0 Unico estado de aceitacao. Vamos agora verificar essa afirmacao. AUTOMATOS FINITOS 35 oj "> dol} 42 | % hi % | do 4% | & ait | Figura 2.7: Tabela de transi¢des para o DFA do Exemplo 2.4 Notacao padrao e variaveis locais Depois de ler esta secao, vocé pode imaginar que nossa nota¢ao habitual € obrigatoria; isto €, voce tem de usar 8 para a funcao de transicao, usar A comonomede um DFA e assim por diante. Tendemosa usar as mesmas va- ridveis para denotar os mesmos itens em todos os exemplos, porque isso ajuda vocé a lembrar os tipos de variaveis, de modo semelhante a uma va- ridvel iem um programa, que quase sempre é do tipo inteiro. Porém, somos livres para chamar os componentes de um autémato, ou qualquer outro item, pelo nome que desejarmos. Desse modo, voce ¢ livre para denominar um DFA Me sua funcao de transicao T, se preferir. ‘Acima de tudo, voce nao deve se surpreender com o fato da mesma va- ridvel ter significados diferentes em diferentes contextos. Por exemplo, os DFAsdos Exemplos 2.1 ¢ 2.4 recebem ambos uma funcao de transi¢ao cha- mada. Contudo, as duas fungdes de transicao sao variaveis locais, perten- centes apenas a seus exemplos. Essas duas fungdes de transigao sao muito diferentes ¢ nao guardam nenhum relacionamento entre si. A verificacao envolve a computacdo de 8(qo, w) para cada prefixo w de 110101, comecando emée aumentando de tamanho. Oresumo desse calculo é: © &(qo.£) = do- # 8(qo. D = 8B(qo, &, D) = qo, D = a. © 8(qo, 1D) = 8B (qo, 1). 1) = 8Cq,, 1) = do- # 8(qo, 110) = 56(qo, 11), 0) = (qa, 0) = a>- # 5(qoe1101) = 66 (qo,110), 1) = 8@, 1 = gs. # 8(qg, 11010) = 8(8(qo, 1101), 0) = 8(45, 0) = 4. # 8(qo, 110101) = (qo, 11010), 1) = 8G, D) = qo- 56 INTRODUGAO A TEORIA DE AUTOMATOS, LINGUAGENS E COMPUTACAO 2.2.5 A linguagem de um DFA Agora, podemos definir a linguagem de um DFA A = (Q, £, 8, qo, F). Essa lingua- gem € denotada por L(A) e definida por: L(A) = {w |5(qq, w) esta em F} Isto €, a linguagem de A é 0 conjunto de strings w que levam 0 estado inicial qo até um dos estados de aceitacao. Se L ¢ L(A) paraalgum DFA A, dizemos que L uma linguagem regular. Exemplo 2.5: Como mencionamos antes, se A ¢ 0 DFA do Exemplo 2.1, entao L(A) € 0 conjunto de todos os strings de 0's I's que contém um substring OL. Em vez disso, se A €0 DFA do Exemplo 2.4, entdo L(A) € 0 conjunto de todos os strings de 0's € 1I’s cujos nuimeros de simbolos 0 ¢ 1 sdo ambos pares. 2.2.6 Exercicios para a Secao 2.2 Exercicio 2.2.1: Na Figura 2.8 temos um conhecido brinquedo. Uma bola de gude €solta em A ou B, Asalavancas de x, , x2 ¢ x3 fazema bolinha cair paraa es- querda ou para a direita. Sempre que uma bolinha encontra uma alavanca, ela faz a alavanca se inverter aps a passagem da bolinha; assim, a proxima bolinha passara pelo desvio oposto. A B Cc D Figura 2.8: Um brinquedo de bolinhas de gude AUTOMATOS FINITOS wT * a) Modele esse brinquedo por um automato finito. Sejam A e B as represen- tacdes das entradas em quea bolinha pode ser solta. Seja 0 estado de acei- taco correspondente a bolinha saindo em D; a nao-aceitacao representa- da por uma bolinha saindo em C. 1b) Descreva informalmente a linguagem deste aut6mato. ¢) Suponha que, em vez disso, as alavancas fossem comutadas antes de per- mitir a passagem da bolinha. De que forma suas respostas para as partes (a) e (b) mudariam? +) Exeretcio 2.2.2: Definimosé dividindo o string de entrada em qualquer string seguido por um tnico simbolo (na parte indutiva, Equacdo 2.1). No entanto, pensamos informalmente em § como a descricdo do que acontece ao longo de ‘um caminho com um certo string de rétulos e, nesse caso, nao deve importar 0 modo como dividimos o string de entrada na definigao ded. Mostre que, de fato, 8(q, xy) = 86€q, »), y) para qualquer estado qe strings x e y. Sugestao: Execute uma indugdo sobre lyl. | Exercicio 2.2.3: Mostre que, para qualquer estado q, string x e simbolo de en- trada a, 8(q, ax) = 6(8(q, a), x). Sugestao: Use o Exercicio 2.2.2. Exercicio 2.2.4: Fornega os DFAs que aceitam as seguintes linguagens sobre 0 alfabeto {0,1}: *.a) \O conjunto de todos os strings que terminam em 00. \ b) Oconjunto de todos os strings com trés 0's consecutivos (nao necessaria- mente no final). c)\O conjunto de strings que tém 011 como um substring. | Exercicio 2.2.5: Fornega os DFAs que aceitam as seguintes linguagens sobre o alfabeto {0,1}: a) O conjunto de todos os strings tais que cada bloco de cinco simbolos consecutivos contém pelo menos dois 0's. b) Oconjunto de todos os strings cujo décimo simbolo a partir da extremi- __ dade direita €1 ¢)\Oconjunto de strings que comecam ou terminam (ou ambos) com 01 d) Oconjunto de strings tais que o mimero de 0's é divisivel por 5, eo nime- ro de I's € divisivel por 3. 1 Exercicio 2.2.6: Forneca os DFAs que aceitam as seguintes linguagens sobre o alfabeto {0,1}: 38 INTRODUCAO A TEORIA DE AUTOMATOS, LINGUAGENS E COMPUTACAO * a) Oconjunto de todos os strings que comecam com um 1 e que, quando in- terpretados como inteiros bindrios, so multiplos de 5. Por exemplo, strings 101, 1010 e 1111 estao na linguagem; 0, 100 e 111 nao estio. b) O conjunto de todos os strings que, quando interpretados em ordem in- versa como inteiros binarios, sao divisiveis por 5. Os exemplos de strings na linguagem sao 0, 10011, 1001100 ¢ 0101 Exercicio 2.2.7: Seja A um DFA eq um estado especifico de A, tal que 3(q, a) = q para todos os simbolos de entrada a. Mostre por indugao sobre o comprimento da entrada que, para todos os strings de entrada w,5(q, w) = q. Exercfcio 2.2.8: Seja A um DFA e a um simbolo de entrada especilico de A, tal que, para todos os estados q de A, temos 8(q, a) = q. a) Mostre por inducao sobre n que, para todo n> 0,(q, a") = q, onde a"éo string que consiste numa seqtiéncia de n simbolos a. b) Mostre que {a} * CL (A) ou {a} * ML (A) =0 *! Exercicio 2.2.9: SejaA = (QE, 8, qo, {q/}) um DFA e suponha que, para todo a em E, temos 6(gg,4) = 5(qya)- a) Mostre que, para todo w # ¢, temos &(qq, w) = 5(qy, w). b) Mostre que, sex éum string nao vazio em L(A), entdo, para todo k>0,x* (isto é, x escrito k vezes) também esta em L(A) *! Exercicio 2.2.10: Considere o DFA com a seguinte tabela de transicdes: 0 | 1 AIA B *B|| B Descreva informalmentea linguagem aceita por esse DFA e prove por indu- ao sobre o comprimento de um string de entrada que sua descricdo € correta. Sugestdo: Ao configurar a hipotese indutiva, € sensato fazer uma declaracdo so- bre as entradas que levam vocé a cada estado, nao apenas sobre as entradas que 0 levam ao estado de aceitacdo. Exercicio 2.2.11: Repita o Exercicio 2.2.10 paraaseguinte tabela de transigdes: AUTOMATOS FINITOS 9 2.3 Autématos finitos nao-deterministicos ‘Um automato finito “nao-deterministico” (NFA) tem o poder de estar em varios estados ao mesmo tempo. Essa habilidade ¢ expressa com frequéncia como a ca- pacidade de “adivinhar” algo sobre sua entrada. Por exemplo, quando 0 auto- mato é usado para procurar certas seqiténcias de caracteres (por exemple, pala- vras-chave) em um longo string de texto, ¢ util para “adivinhar” que estamos no inicio de um desses strings e usar uma seqiiencia de estados apenas para verifi- car se o string aparece, caractere por caractere. Veremos um exemplo desse tipo de aplicacao na Se¢ao 2.4. Antes de examinarmos aplicagdes, precisamos definir automatos finitos nao-deterministicos e mostrar que cada um aceita uma linguagem que também éaceita por algum DFA. Isto é, os NFAs aceitam exatamente as linguagens regu- lares, da mesma maneira que fazem os DFAs. No entanto, ha razes para pensar nos NFAs. Freqitentemente eles so mais sucintos e mais faceis de projetar que os DFAs, Além disso, embora sempre possamos converter um NFA em um DFA, esse tiltimo pode ter exponencialmente mais estados que 0 NFA; feliz~ mente, casos desse tipo sao raros. 2.3.1 Uma visao informal dos autématos finitos nao-deterministicos Analogamente aos DFA’s, um NFA tem um conjunto finito de estados, um con- junto finito de simbolos de entrada, um estado inicial e um conjunto de estados de aceitacdo. Ele também tem uma funcao de transi¢ao, que comumente chama- remos 8, A diferenca entre um DFA e um NFA esta no tipo de 6. Para um NFA, 6 é uma funcdo que recebe um estado e um simbolo de entrada como argumentos (da mesma forma que a fungao de transic4o do DFA), mas retorna um conjunto de zero, um ou mais estados (em vez de retornar exatamente um estado, como um DFA deve fazer). Comecaremos com um exemplo de um NFA, € depois tor- naremos as definicées precisas. Exemplo 2.6: A Figura 2.9 mostra um automato finito ndo-deterministico, cujo trabalho é aceitar todos os strings de 0's e l’s que terminam em 01 e somente eles. O estado qq € 0 estado inicial, e podemos pensar no autémato come estan- do no estado qq (¢ talvez entre outros estados) sempre que ele ainda nao tiver “adivinhado” que 001 final comegou. E sempre possivel que 0 proximo simbo- Jo nao inicie o 01 final, mesmo que esse simbolo seja 0. Desse modo, o estado qg pode fazer uma transicdo para ele mesmo em 0 e em 1. Porém, se o proximo simbolo € 0, esse NFA também adivinha que 0 01 final comecou. Um arco identificado como 0 leva portanto de qo ao estado q,. Note 60 INTRODUCAO A TEORIA DE AUTOMATOS, LINGUAGENS E COMPUTACAO Ol Inicio @ @ ©) Figura 2.9: Um NFA que aceita todos os strings que terminam em 01 que existem dois arcos rotulados como 0 saindo de qo. O NFA tema opeae de ir para qo ou para q; €, de fato, ele segue as dois caminhos, como veremos quando tornarmos as definicdes precisas. No estado q;, 0 NFA verifica se o proximo simbolo € 1 e, nesse caso, vai para o estado q, e aceita a entrada. Observe que nao existe nenhum arco saindo de q, rotulado com 0, e nao existe nenhum arco saindo de qp. Nessas situacdes, 0 encadeamento no NFA correspondente a estes estados simplesmente “morre”, embora outros encadea- mentos possam continuar a existir. Enquanto um DFA tem exatamente um arco saindo de cada estado para cada simbolo de entrada, um NFA nao tema mesma restricdo; vimos na Figura 2.9 casos em que o numero dearcos é zero, ume dois, por exemplo. A Figura 2.10 sugere como um NFA processa entradas. Mostramos 0 que acontece quando o automato da Figura 2.9 recebe a seqiéncia de entrada 00101. Ele sé comeca em seu estado inicial qo Quando o primeiro 0 é lido, 0 NFA pode ir para o estado qo ou o estado q, , e assim ele segue os dois caminhos. Esses dois encadeamentos sao sugeridos pela segunda coluna na Figura 2.10. Em seguida, o segundo 0 ¢ lido. O estado gy pode novamente it para qq € 4y. Porém, o estado q, ndo tem nenhuma transicao em 0, ¢ assim ele “morre” Quando a terceira entrada, um simbolo 1, ocorre, temos de considerar transi- des de qy € qy. Descobrimos que qq $6 vai para qy em 1, enquanto q, $6 vai para qq. Desse modo, depois de ler 001, 0 NFA se encontra nos estados qo € 42. Como qa € um estado de aceitacao, o NFA aceita 001. 4 ——> 9) —$ 0 — to) — h) — Stag int Marg ec u 1 1 (paralisado) pt mt % cry (paralisado) 0 0 1 0 1 Figura 2.10: Os estados em que um NFA se encontra durante o processamento da seqvéncia de entrada 00101 AUTOMATOS FINITOS 6L Contudo, a entrada nao esta encerrada. A quarta entrada, um 0, faz 0 enca- deamento de q, morrer, enquanto qq vai para q, € 4). A ultima entrada, um 1, en- ‘via qo para qy € q) para q,. Tendo em vista que estamos novamente em um estado de aceitacdo, 00101 € aceito. a 2.3.2 Definicado de autémato finito nao-deterministico _ Agora, vamos introduzir as nogdes formais associadas com automatos finitos n4o-deterministicos. As diferencas entre DFAs e NF As serdo indicadas a medi- da que prosseguirmos. Um NFA € essencialmente representado como um DFA: A=(Q, 5, 8, qo, F) _ onde: . Qé um conjunto finito de estados. ¥ € um conjunto finito de simbolos de entrada. |. qo, um elemento de Q, € 0 estado inicial. |. F, um subconjunto de Q, ¢ o conjunto de estados finais (ou de aceitacdo). Veen . 8, a funcdo de transicdo, é uma funcdo que recebe um estado em Qe um simbolo de entrada em © como argumentos e retorna um subconjunto de Q. Note quea unica diferenca entre um NFA ¢ um DFA esta no tipo de va- lor queé retorna: um conjunto de estados no caso de um NFA eum tni- co estado no caso de um DFA. Exemplo 2.7: O NFA da Figura 2.9 pode ser formalmente especificado como (4004142), (0,01.8,49.1421) ‘onde a funcao de transicao 5 é dada pela tabela de transigdes da Figura 2.11. 0 0 1 *> do |] 440%} | (40) a |e (a2) # gy 10 0 Figura 2.11; A tabela de transigoes para um NFA que aceita todos os strings que terminam em 01 a INTRODUCAO A TEORIA DE AUTOMATOS, LINGUAGENS E COMPUTAGAO Note que as tabelas de transicdes podem ser usadas para especificar afuncao de transicao para um NFA, bem como para um DFA. A tinica diferenca € que cada entrada na tabela para o NFA € um conjunto, ainda que este conjunto seja unitdrio (tenha um tnico elemento). Note também que, quando nao existe ne- nhuma transicdo de um dado estado sobre um dado simbolo de entrada, a entra- da adequada € 0, 0 conjunto vazio. 2.3.3 A funcao de transicao estendida Como ocorre para DFAs, precisamos estender a fungo de transicdo 8 de um NFA para uma funcao 6 que recebe um estado q € um string de simbolos de en- trada w, e retorna o conjunto de estados em que 0 NFA se encontra, se ele come- cano estado qe processa o string w. A idéia foi sugerida pela Figura 2.10; emes- séncia,5(q, w) €a coluna de estados encontrados apés a leitura dew, seq é 0 wni- co estado na primeira coluna. Por exemplo, a Figura 2,10 sugere que 5(qo, 001) = (qo: qa). Formalmente, definimos para a funcao de transicao 8 de um NFA por: BASE: &(q, €) = (q). Isto €, sem ler quaisquer simbolos de entrada, s6 ficamos no estado em que comecamos. INDUGAO; Suponha que w seja da forma w =xa, onde aé 0 tiltimo simbolo de w ex € o restante de w. Suponha também que 8(q, x) = (pp. Po» »+s Pel Seia U8.) = fat eost a Entdo, 8(q, w) = {ry} r,s fq)-De modo menos formal, calculamos &(q, w) calculando primeiro 6(q, x), ¢ depois seguindo todas as transices de quaisquer desses estados que seja rotulada por a. Exemplo 2.8: Vamos usar 6 para descrever 0 processamento da entrada 00101 pelo NFA da Figura 2.9. Um resumo das etapas €: 1. 8,8) = tao): 2. 8qg,0) =8(q9,0) = 1qo.44)- 3. &(qo,00) = 8(qy,0) U 8(4,,0) = 45.41} UO = (qo. )- 4. &(q,,001) =8(qo,0) U 84,1) = qo] UO = 43} = ldo.) 5, &@q,0010) = (9,0) U 8G ,0) = (q9,4,) UO = (40,41). 6. 8(q),00101) =8(qo, 1) U 8(q,,1) = (do) U faz} = f4o.42)- Alinha (1) éaregra da base. Obtemosa linha (2) aplicando 6 ao tinico esta- do, dg, que esta no conjunto anterior, e obtemos (qo, 41] como resultado. A linha AUTOMATOS FINITOS 63 (3) € obtida tomando-se a unio sobre os dois estados no conjunto anterior do que obtemos quando aplicamos 6a eles coma entrada 0. Ou seja, 5(qo, 0) = {qo, q,), enquanto 5(q,, 0) =0. Paraa linha (4), tomamos a uniao de (qo, 1) = {qo} € 8(q,, 1) = {qz!. As linhas (5) e (6) sao semelhantes as linhas (3) e (4). o 2.3.4 A linguagem de um NFA ‘Como sugerimos, um NFA aceita um string w se é possivel tomar qualquer se- quencia de escolhas do proximo estado, enquanto sao lidos os caracteres de w. ¢ ir do estado inicial para algum estado de aceitagao. O fato de outras escolhas usando os simbolos de entrada de w levarem a um estado de nao aceitagao ou nao levareni a nenhum estado em absoluto (isto €, a sequéncia de estados “mor- re”), nao impede w de ser aceito pelo NFA como um todo. Formalmente, se A= (Q, 2, 8, qo, F) €um NFA, entio L(A) = (w 1 8@qy,w) NF #0) Isto é, L(A) € 0 conjunto de strings w em 5" tais que &(qo, w) contém pelo menos um estado de aceitacao. Exemplo 2.9: Como um exemplo, vamos provar formalmente que o NFA daFi- gura 2.9 aceita a linguagem L = {w | w termina em 01}. A prova é uma inducao miitua das trés declaracdes seguintes que caracterizam os trés estados: 1. 8(qo, w) contém qo para todo w. 2. 8(qo, w) contém q, se € somente se w termina em 0. 3. &(qo, w) contém q, se e somente se w termina em O1. Para provar esas afirmagées, precisamos considerar o modo como A pode atingir cada estado; isto é, qual foi o ultimo simbolo de entrada, ¢ em que estado. estava A imediatamente antes de ler esse simbolo? Tendo em vista que a linguagem desse autémato é 0 conjunto de strings w tais que 8(qp, w) contém q, (porque q, é 0 tinico estado de aceitacao), a prova dessas trés afirmaces, ¢ em particular a prova de (3), garante que a linguagem desse NFA é 0 conjunto de strings terminados em 01. A prova do teorema€ uma inducao sobre |wl, o comprimento de w, comecando com o comprimento 0 BASE: Se |wl = 0, entao w = 6. A afirmagao (1) nos diz que 5(qp, €) contem qq, 0 que ocorre pela parte base da definicao de6. Para aafirmacao (2), sabemos queé nao termina em 0, e também sabemos que &(qp, £) ndo contém q,, ¢ novamente pela parte base da definicao de§. Desse modo, as hipdteses em ambos os senti- OF INTRODUGAO A TEORIA DE AUTOMATOS, LINGUAGENS E COMPUTAGAQ dos da afirmacao se-e-somente-se sao falsas, ¢ portanto ambos os sentidos da afirmagdo sao verdadeiros. A prova da afirmacao (3) para w = c¢ essencialmente igual a prova anterior da afirmagao (2). INDUCAO: Suponha que w = xa, onde a é um simbolo, 0 ou 1. Podemos supor que as afirmacoes de (1) a (3) sao validas para x e precisamos prova-las para w. Ou seja, supomos |w] =n + 1, € entao |x| =n. Suporemos a hipétese indutiva para ne ademonstraremos para n +1 1. Sabemos que &(qg, x) contém qo. Como existem transicdes em Oe 1 a par- tir de qq para ele mesmo, segue-se que 5(qo, w) também contém qo, € as- sim a afirmacio (1) ¢ provada para w. 2. (Se) Suponha que w termine em 0; isto é, a = 0. Pela afirmagao (1) aplica- daa x, sabemos que 6(qo, x) contém qo. Como existe uma transicao de qy para q, para a entrada 0, concluimos que (qo, w) contém 4, (Somente-se) Suponha que&(q,, w) contém q ,. Se examinarmos o diagra- ma da Figura 2.9, veremos que o tinica maneira de entrar no estado q, €a sequiéncia de entrada w tera forma x0. Isso é suficiente para provar a par- te “somente-se” da afirmacao (2). 3. (Se) Suponha que w termine em 01. Entao se w = xa, sabemos que a= Lex termina em O. Pela afirmacao (2) aplicada ax, sabemos que 5(qg, x) con- tem q;. Tendo em vista que existe uma transicao de q, para q) para a en- trada 1, concluimos que &(qp, w) contém qp. (Somente-se) Suponha que §(q,, w) contém q,. Examinando o diagrama da Figura 2.9, descobrimos que 0 tinico caminho para chegar ao estado q, € percorrido quando w tem a forma x1, onde 8(q,, x) contém q,. Pela afirmacao (2) aplicada ax, sabemos que x termina em 0. Portanto, w ter- mina em 01 ¢ provamos a afirmacao (3). 2.3.5 Equivaléncia entre automatos finitos deterministicos e ndo-deterministicos Embora existam muitas linguagens para as quais um NFA é mais facil de construir que um DFA, comoa linguagem (Exemplo 2.6) de strings que terminam em 01, € um fato surpreendente que toda linguagem que pode ser descrita por algum NFA também possa ser descrita por algum DFA. Além disso, na pratica um DFA tem quase tantos estados quantos tem o NFA correspondente, embora com frequén- cia tenha mais transi¢des. Entretanto, no pior caso, omenor DFA pode ter 2" esta- dos, enquanto o menor NFA para a mesma linguagem tem apenas n estados. AUTOMATOS FINITOS 65 A prova de que os DFAs podem fazer tudo que os NFAs podem fazer envol- ve uma “construcao” importante, chamada construcao de subconjuntos, porque inelui a construcao de todos os subconjuntos do conjunto de estados do NFA. ‘Em geral, muitas provas sobre automatos envolvem a construcao de um auté- ‘mato a partir de outro. E importante observarmos a construgao de subconjun- tos como um exemplo de como se descreve formalmente um autOmato em ter- mos dos estados e transicdes de outro, sem conhecer os detalhes especificos desse tltimo autémato A construcao de subconjuntos comega a partir de um NFA N= (Qy, 2, 3y, qo, Fy). Sua meta éa descrigdo de um DFA D = (Qp,, 8p, {4p}, Fp) tal que L(D) = L(N). Note que os alfabetos de entrada dos dois automatos sao os mesmos, € 0 estado inicial de Dé 0 conjunto que contém apenas 0 estado inicial de N. Os ou- tros componentes de D sao construidos como a seguir. © Q,€ oconjunto de subconjuntos de Q,; isto €, Q,, € 0 conjunto poténcia de Qy.. Note que, se Q,, tem nestados, entao Q,, tera 2" estados. Com freqiién- cia, nem todos esses estados estdo acessiveis a partir do estado inicial de Qp- Os estados inacessiveis podem ser “descartados”; assim, o numero de estados de D pode ser efetivamente muito menor que 2”. © Fé 0 conjunto de subconjuntes $ de Qy tais que 5M Fy #0. Isto é, Fp re presenta todos os conjuntos de estados de N que incluem pelo menos um estado de aceitacao de N. © Para cada conjunto S$ c Qy e para cada simbolo de entrada a em 2, BSa= Yr, a pems Isto €, para calcular 8p(S,a), examinamos todos os estados p em S, vemos para quais estados N vaia partir de p sobre a entracia ae fazemosa uniado de todos esses estados. Exemplo 2.10: Seja N o automato da Figura 2.9 que accita todos os strings que terminam em 01. Como conjunto de estados de N€ {qo,4,,4,}, aconstrucao de subconjuntos produz um DFA com 2? = 8 estados, correspondendo a todos os subconjuntos desses trés estados. A Figura 2.12 mostra a tabela de transicdes para esses oito estados; mostraremos em breve os detalhes de como algumas dessas entradas sao calculadas. Note que essa tabela de transigGes pertence a um autOmato finito determi- nistico. Embora as entradas na tabela sejam conjuntos, os estados do DFA cons- truido sao conjuntos. Para tornar esse ponto mais claro, podemos criar novos nomes para esses estados; por exemplo, A para, B para (qq) € assim por diante. 66 INTRODUGAO A TEORIA DE AUTOMATOS, LINGUAGENS E COMPUTACAO A tabela de transigdes do DFA da Figura 2.13 define exatamente 0 mesmo auto- mato que a Figura 2.12, mas torna claro o fato de que as entradas na tabela sao estados tinicos do DFA. 0 1 oljo 0 *->{ao}| {ao,} | tao) {q)}]@ ta) *{q2}{/0 0 (40,411 | (do. 4} | £40,421 *£qo.42}!] {doa} | {401 (qi g2)|/0 tq} dos +42) {I (40.4%) | £40, 4a! Figura 2.12: A construcdo completa de subconjuntos a partir da Figura 2.9 A +B € *D E °F *G *H n> mm > > malo a F Figura 2.13: Renomeando os estados da Figura 2.12 Dosoito estados da Figura 2.13, comecando no estado inicial B, s6 podemos acessar os estados B, E ¢ F. Os outros cinco estados sao inacessiveis a partir do estado inicial e nao precisam constar da tabela. Freqiientemente, podemos evi- tara etapa de tempo exponencial da construcio de entradas da tabela de transi- Ges para todo o subconjunto de estados, se executarmos uma “avaliacdo ocio- sa” nos subconjuntos, como a seguir. BASE: Sabemos com certeza que 0 conjunto unitario que consiste apenas no es- tado inicial de N é acessivel. AUTOMATOS FINITOS 67 INDUGAO; Suponha que determinamos que 0 conjunto S de estados € acessi- vel. Entao, para cada simbolo de entrada a, calcule o conjunto de estados 5,,(S, a); sabemos que esses conjuntos de estados também serio acessiveis. No exemplo, sabemos que {qg} € um estado do DEA D. Descobrimos que BpClqp}s 0 = (qo, 41} €Sp C14}, 1) = {qo}. Esses fatos sao estabelecidos examinan- do-se o diagrama de transicoes da Figura 2.9 e observando-se que em 0 existem arcos de saida de qy pata gg € q;, enquanto em | existe apenas um arco para qo. Desse modo, temos uma linha da tabela de transigdes para o DFA: a segunda li- nha na Figura 2.12. Um dos dois conjuntos que calculamos € “antigo”; (qo) j4 foi considerado. Porém, 0 outro = (qo, q,} — € novo e suas transicdes devem ser calculadas. Encontramos 8,({do, 41}, 0) = (do. di} € 8p({do, Gi}- 1) = {qos dz}. Por exemplo, para ver 0 ultimo calculo, sabemos que 8p (ldosdils D =8y or DUSy (Qys D = fol U {2} = 10,42) Temos agora a quinta linha da Figura 2.12, ¢ descobrimos um novo estado de D, que é (qo, qa). Um calculo semelhante nos diz que 8p (E042); 0 =8y (4p. 0) USy (Gz, ) = (49.4) UO = 0.41) 8p ({do.da}. D =8y Go, D USy (G2, D = (go) UO = to) Esses calculos nos fornecem a sexta linha da Figura 2.12, mas ela nos da apenas conjuntos de estados que jé foram encontrados. Desse modo, a construcdo de subconjuntos convergiu; conhecemos todas ‘os estados acessiveis e suas transicées. O DFA inteiro é mostrado na Figura 2.14. Observe que ele s6 tem trés estados, o que é por coincidéncia exatamente 0 mesmo ntimero de estados que o NFA da Figura 2.9, a partir do qual ele foi construido. Por outro lado, o DFA da Figura 2.14 tem seis transi¢des, compara- das com as quatro transicoes da Figura 2.9. 1 0 Figura 2.14: O DFA construido a partir do NFA da Figura 2.9 68 INTRODUCAO A TEORIA DE AUTOMATOS, LINGUAGENS E COMPUTACAO Precisamos mostrar formalmente que a construgao de subconjuntos funcio- nna, embora a intuicdo tenha sido sugerida pelos exemplos. Depois de ler a se- quencia de simbolos de entrada w, o DFA construido esta em um estado que € 0 conjunto de estados do NFA em que o NFA estaria apés a leitura de w. Como os estados de aceitacdo do DFA sao os conjuntos que incluem pelo menos um esta- do de aceitacao do NFA, e como o NFA também aceita se entra em pelo menos um de seus estados de aceitacdo, podemos entao concluir que 0 DFA ¢ 0 NFA aceitam exatamente os mesmos strings, e portanto aceitem amesma linguagem. Teorema 2.11: Se D = (Qp, 2, 8p, {qo), Fp) €0 DFA construido a partir do NFA N= (Qu, E, 5y, do, Fy) pela construcdo de subconjuntos, entéo L(D) = L(N). PROVA: O que realmente provaremos primeiro, por inducdo sobre |wl, € que 8p ({qo}.) = 8 yo? Note que cada uma das 6 fungoes retorna um conjunto de estados de Qy, mas 6, interpreta esse conjunto como um dos estados de Q, (que é 0 conjunto poténcia de Qy), enquanto , interpreta esse conjunto como um subconjunto de Qy. BASE: Seja |w| =0; isto ¢, w =e. Pelasdefinicoes base de para DFAse NFAs, tan- to 8p (aol, €) quanto By(qo, €) so iguais a {qo}. INDUGAO: Considere que w tem comprimento n + 1 e suponha 0 enunciado para o comprimento n. Considere w na forma w =xa, onde a ¢ 0 ultimo stmbolo de w. Pela hipstese indutiva,8,({qo}. x) =8y({qo) x). Sejam esses dois conjuntos de estados de N indicados por {p), Py, --s Px) A parte indutiva da definicao de 3 para NFAs nos diz que x ‘ 3 Go.) = Jan 0:0 (2.2) i= A construcao de subconjuntos, por outro lado, informa que 85(p. Ps kb 1Pp):@ = by P,.@ (2.3) tot Agora, vamos usar (2.3) € 0 fato de que dp(|{qo)s%) = (Pis Pa» --» Pa} a parte indutiva da definigao de § para DFAs: - x 8, Clqahs) = 8p Gp (1qo),0.@) = 8p (UP) sP2s---Pr@) = Sw (r..@) (2.4) Pet AUTOMATOS FINITOS 0 Desse modo, as Equagées (2.2) e (2.4) demonstram que§,({qql, w) = Sy(qo, w). Quando observamos que tanto D quanto N aceitam w se e somente se 8 (qo), w) oudy(qo, w), respectivamente, contém um estado em Fy, temos uma prova completa de que L(D) = L(N). 0 Teorema 2.12: Uma linguagem L é aceita por algum DFA se e somente se L é aceita por algum NFA. PROVA: (Se) A parte “se” € constituida pela construcao de subconjuntos e pelo Teorema 2.11. (Somente-se) Essa parte é facil; temos apenas de converter um DFA em um NFA idéntico. Intuitivamente, se temos o diagrama de transicées para um DFA, também podemos interpreta-lo como o diagrama de transicdes de um NFA, que tem exatamente uma op¢ao de transig¢ao em cada situagao. Mais formalmente, seja D = (Q, 2, 8p, qo, F) um DFA. Defina N = (Q, 5, 8y, qo, F) como 0 NFA equi- valente, onde 6, ¢ definido pela regra: * Se 5p(q, a) =p, entao 5y(q, a) = {p}. Entdo € facil mostrar por inducao sobre |w| que, se §)(qy, w) = p, entao &.(qy, w) = {ph Deixamos a prova para o leitor. Como conseqiténcia, w é aceito por D se e somente se € aceito por N; isto €, L(D) = L(N). 0 2.3.6 Um caso ruim para a construcao de subconjuntos No Exemplo 2.10, descobrimos que o DFA nao tinha mais estados que 0 NFA. Como mencionamos, é bastante comum na pratica que o DFA tenha aproxima- damente 6 mesmo ntimero de estados que o NFA a partir do qual é construido. Porém, o crescimento exponencial no mimero de estados € posstvel; todos os 2" estados do DFA que poderiamos construir a partir de um NFA den estados po- dem se mostrar acesstveis. O exemplo a seguir ndo chegar aalcancar esse limite, mas € um modo compreensivel de chegara 2” estados no menor DFA equivalen- te aum NFA de n + 1 estados. Exemplo 2.13: Considere o NFA N da Figura 2.15. L(N) € 0 conjunto de todos 0s strings de 0's € 1's tais que 0 n-ésimo simbolo a partir do fim € 1. Intuitiva- mente, um DFA D que aceita essa linguagem deve lembrar os tiltimos n simbo- los que leu. Tendo em vista que qualquer dos 2" subconjuntos dos ultimos n simbolos poderia ter sido 1, se D tivesse menos de 2" estados, entao haveria al- 70 INTRODUCAO A TEORIA DE AUTOMATOS, LINGUAGENS E COMPUTACAO gum estado q tal que D pudesse estar no estado q depois de ler duas sequencias diferentes de n bits, digamos a,a5 ... a, € bby ... Dy. Como as seqiiéncias sao diferentes, elas devern diferir em alguma posicao, digamos a, # b;. Suponha (por simetria) que a, = 1 eb, = 0. Sei = 1, entaoq deve ser ao mesmo tempo um estado de aceitagao e um estado de ndo aceitagao, pois 4,4, ... a, €aceita (o n-ésimo simbolo a partir do fim € 1) € b,b, ... b, nao €. Se i> 1, entéo considere o estado p em que D entra depois de ler i - 1 simbolos 0. Entao, p deve ser ao mesmo tempo um estado de aceitacao e de nao-aceitacao, pois aa, , ; -...4,00 ... 0 €aceita e bib, , , ... b,00 ... 0 nao €. Ol = fo 1 @ OL @2 io Figura 2.15: Esse NFA nao tem nenhum DFA equivalente com menos de 2" estados Agora, vamos ver como o NFA N da Figura 2.15 funciona. Existe um estado qo em que o NFA sempre esta, independente das entradas que foram lidas. Sea proxima entrada for 1, N também podera “adivinhar” que esse 1 seri 0 n-ésimo simbolo a partir do fim, e assim ele vai para o estado q, e também para qo. A par- tirdo estado q,, qualquer entrada leva N para qa, a proxima entrada o leva até q, e assim por diante até que, n— 1 entradas depois, ele esta no estado de aceitacao q,- A afirmagao formal a respeito do que estados de N fazem €: 1. Nesta no estaclo qy depois de ler qualquer sequencia de entradas w. 2. Nestno estado q,, para i= 1,2,..., n, depois de lera seqiiéncia de entrada ‘we e somente se 0 i-ésimo simbolo a partir do fim dew é 1, isto é, w é da forma x1a,4)....aj_, onde os valores a, correspondem a cada simbolo de entrada. Nao provaremos essas afirmagées formalmente; a prova é uma inducao facil sobre wl, imitando o Exemplo 2.9. Para completar a prova de que o automata aceita exatamente os strings com um valor 1 na n-ésima posicao a partir do fim, vamos considerar a afirmacao (2) com i = n. Ela informa que N se encontra no estado q, se e somente se 0 n-ésimo simboloa partir do fim € 1. Porém, q, €0 ini- coestado de aceitacao, de forma que a condicgao também caracteriza exatamente 0 conjunto de strings aceitos por N. AUTOMATOS FINITOS a O principio da casa de pombo. No Exemplo 2.13, usamos uma importante técnica de raciocinio chamada principio da casa de pombo. Coloquialmente, se vocé tem mais pombos que compartimentos em um pombal e cada pombo voa para algum comparti- mento, entéo deve haver pelo menos um compartimento com mais de um. pombo, Em nosso exemplo, os “pombos” sao as seqtiéncias de n bits, e os “compartimentos” sao os estados. Tendo em vista que existem menos esta- dos. que sequéncias, um estado deve ser atribuido a duas sequéncias. O principio da casa de pombo pode parecer dbvio, mas ele realmente depende do ntimero de compartimentos ser finito. Desse modo, ele funcio- na para automatos de estados finitos, com 0s estados sendo os comparti- mentos, mas nao se aplica a outros tipos de automatos que tem um numero infinito de estados. Para ver por que a condicao finita do numero de compartimentos é es- sencial, considere a situacao infinita na qual os compartimentos corres- pondem ainteiros 1, 2,.... Numere os pombos como 0, 1, 2,..., de modo que exista um pombo a mais que o ntimero de compartimentos. Porém, pode- mos enviar © pombo i para o compartimento i + 1, para todo i 2 0. Entdo, cada pombo do numero infinito de pombos tera um compartimento, e nao haver dois pombos que compartilhem um compartimento. 2.3.7 Exercicios para a Secao 2.3 * Exercicio 2.3.1: Converta o seguinte NFA em um DFA: 0 1 = pl tp.at | tph qyid | i rf} (sk 0 sii {sh (st gercicio 2.3.2: Converta o seguinte NFA em um DFA; 0 1 > piilq.s) | tq) Ir} {qr} ri ish {pl «slo (p) nR INTRODUCAO A TEORIA DE AUTOMATOS, LINGUAGENS E COMPUTACAO, Estados mortos e DFAs que omitem algumas transicées Definimos formalmente um DFA pata ter uma transicao de qualquer esta- do, sobre qualquer simbolo de entrada, para exatamente um estado. Contu- } do, as vezes, € mais conveniente projetar o DFA para “morrer” em situagdes | nas quais sabemos que € impossivel qualquer extensao da sequeéncia de en- tradaseraceita, Por exemplo, observe o automato da Figura 1.2, que fez seu trabalho reconhecendo uma unica palavra-chave, then, e nada mais. Tecni- camente, esse autémato ndo é um DFA, porque carece de transicdes na maioria dos simbolos de cada um de seus estados. Porém, tal automato € um NFA. Se usarmos a construgao de subconjun- to para converté-lo em um DFA, 0 automato terd quase a mesma aparéncia, mas incluira um estado morto, isto €, um estado de nao-aceitacao que vai para ele mesmo a partir de cada simbolo de entrada possivel. 0 estado morto cor responde a, o conjunto vazio de estados do autémato da Figura 1.2. Em geral, podemos adicionar um estado morto a qualquer automato que tenha nao mais de uma transicao para qualquer estado e simbolo de en- trada. Entdo, adicione uma transi¢ao ao estado morto a partir de cada esta- do q diferente dele, sobre todos os simbolos de entrada para os quais q nao tem nenhuma outra transicao. O resultado sera um DFA no sentido estrito. Desse modo, as vezes faremos referéncia a um automato como sendo um DFA, se ele tiver no maximo uma transicao para fora de qualquer estado para qualquer simbolo, e nao se ele tiver exatamente uma transi¢ao, ! Exercicio 2.3.3: Converta o NFA seguinte em um DFA e descreva informal- mente a linguagem que ele aceita. 0 5 = pl tra | aljt.s) | pn | td sO o et||O 0 ! Exercicio 2.3.4: Forneca autématos finitos nao-deterministicos que aceitem as linguagensa seguir. Procure tirar proveito do nao-determinismo, tanto quan- to possivel. * a) Oconjunto de strings sobre o alfabeto (0, 1,,..,9] tal que o digito final te- nha aparecido antes. AUTOMATOS FINITOS B b) O conjunto destrings sobre o alfabeto (0, 1,...,9) tal que o digito final ndo tenha aparecido antes. ©) Oconjunto de strings de 0's ¢ 1’s tais que nao existam dois 0's separados por um nitmero de posigSes que seja multiplo de 4. Observe que 0 ¢ um miltiplo permitido de 4. Exereicio 2.3.5: Na parte somente-se do Teorema 2.12 omitimos a prova por in- ducao sobre |wl de que, se6(qy, W) =p, emt406y(qo, W) = (p}. Fornega essa prova. 1 Exercicio 2.3.6: No quadro sobre “ Estados mortos e DFAs que omitem algu- mas transicoes” , afirmamos que, se N é um NFA que tem no maximo uma opcao de estado para qualquer estado e simbolo de entrada (isto €, 5(q, a) nunca tem tamanho maior que 1), entao o DFA D construide a partir de N pela construgao de subconjuntos tem exatamente os estados e as transicdes de N, mais as transi- ‘Oes para um novo estado morto sempre que N estiver omitindo uma transi¢ao para um dado estado e simbolo de entrada. Prove essa afirmacao. Exercicio 2.3.7: No Exemplo 2.13, afirmamos que o NFA N est no estado q,, para i = 1,2.....n, depois de ler a sequéncia de entrada w, se ¢ somente se 0 i-€si- ‘mo simbolo a partir do fim de w € 1. Prove essa afirmacao. 2.4 Uma aplicacao: busca em textos Nesta secdo, veremos que o estudo abstrato da secao anterior, em que conside- ramos o “problema” de definir se uma sequiéncia de bits termina em 01, €narea- lidade um excelente modelo para diversos problemas reais que também apare- cem em aplicagées, como buscana Web e extracao de informagéesem textos. 2.4.1 Localizacao de strings no texto ‘Um problema comum na era da Web e de outros repositorios de textos on-line € apresentado a seguir. Dado um conjunto de palavras, encontre todos os docu- ‘mentos que contenham uma (ou todas) dessas palavras. Uma maquina de busca € “um exemplo popular desse processo. O mecanismo de busca utiliza uma tecnolo- ‘gia especifica, os chamados indices invertidos, em que, para cada palavra que apa- rece na Web (existem 100.000.000 de palavras diferentes), uma lista de todos os Tugares em que essa palavra ocorre é armazenada. Maquinas com quantidades “muito grandes de meméria principal mantém dispontveis as listas mais comuns, permitindo a muitas pessoas pesquisarem documentos ao mesmo tempo. As técnicas de indices invertidos nao fazem uso de autématos finitos, mas ‘também exigem periodos de tempo muito grandes para que robés de busca ” INTRODUCAO A TEORIA DE AUTOMATOS, LINGUAGENS E COMPUTAGAO_ (crawlers) possam copiar a Web e configurar os indices. Ha varias aplicacdes in- ter-relacionadas que sao inadequadas para indices invertidos, mas que sao boas aplicac6es para técnicas baseadas em automatos. As caracteristicas que tornam uma aplicacdo apropriada para buscas que usam autOmatos sao: 1. Qrepositorio em que a pesquisa € conduzida esta mudando rapidamen- te. Por exemplo: (a) Acadadia, os analistas de noticias querem pesquisar artigos de noticias on-line do dia, em busca de topicos relevantes. Por exemplo, um analis- ta financeiro poderia procurar certos simbolos de agdes ou nomes de empresas. (b) Um “robs de compras” quer pesquisar os precos atuais referentes aos itens que seus clientes solicitam. O robé rectuperard paginas de catélogo atualizadas na Web e entdo pesquisar nessas paginas palavras que su- gerem um preco para um item especifico 2. Os documentos a serem pesquisados néo podem ser catalogados. Por exemplo, Amazon.com nao facilita a localizacao pelos robos de busca de todas as paginas correspondentes a todos os livros que a empresa vende. Em vez disso, essas paginas sao geradas “on the fly” em resposta a con- sultas. Porém, poderiamos enviar uma consulta a respeito de livros sabre um certo tépico, digamos “automatos finitos”, e entao pesquisar nas pa- ginas recuperadas, em busca de certas palavras como, por exemplo, “ex- celente” na parte correspondente as resenhas criticas. 2.4.2 Automatos finitos nao-deterministicos para busca em textos Suponha que temos um conjunto de palavras, que chamaremos palavras-chave, € queremos encontrar ocorréncias de quaisquer dessas palavras. Em aplicacées como essas, um modo titil de proceder € projetar um autdmato finito n4o- deterministico, que sinaliza, entrando em um estado de aceitagao, que encon- trou uma das palavras-chave. O texto de um documento € transferido, um ca- ractere de cada vez, para esse NFA, que endo reconhece ocorréncias das pala- vras-chave nesse texto. Existe uma forma simples para um NFA que teconhece um conjunto de palavras-chave. 1, Ha um estado inicial com uma transicao para ele mesmo sobre todo sim- bolo de entrada; por exemplo, todo caractere ASCII imprimivel se esta- mos examinando textos. Intuitivamente, o estado inicial representa um “palpite” de que ainda nao comecamos a ver uma das palavras-chave, ainda que tenhamos visto algumas letras de uma dessas palavras. \TOS FINITOS vey 2. Para cada palavra-chave ay 4y,...,a, ha k estados, digamos q;,4,,...,4: Exis- te uma transicdo desde o estado inicial até q, para o simbolo a,, uma transi- cao de q, para q, para o simbolo a, ¢ assim por diante. O estado q, é um esta- do de aceitagao e indica que a palavra-chave aya, ... a, foi encontrada. plo 2.14: Suponha que queremos projetar um NFA para reconhecer ocor- das palavras web e ebay. O diagrama de transicdes para o NFA projetado om o uso das regras anteriores € apresentado na Figura 2.16. O estado 1 €0 es- do inicial, e usamos para representar o conjunto de todos os caracteres Cll imprimiveis. Os estados 2 a 4 tem o trabalho de reconhecer web, enquanto dos 5 a8 reconhecem ebay. 0 y Figura 2.16: Um NFA que busca as palavras web ¢ ebay E claro que o NFA nao ¢ um programa. Temos duas op¢des importantes a uma implementagao desse NFA. 1, Escrever um programa que simule esse NFA calculando 0 conjunto de estados em que ele esta depois de ler cada simbolo de entrada. A simula- cao foi sugerida na Figura 2.10. 2. Converter o NFA em um DFA equivalente, usando a construcao de sub- conjuntos, Em seguida, simular o DFA diretamente. _ Alguns programas de processamento de textos, tais como formas avancados )comando grep do UNIX (egrep e fgre), na realidade usam uma mistura des- as abordagens. Porém, para nossos propésitos, a conversao em um DFA € e oferece a garantia de nao aumentar o mimero de estados. 4.3 Um DFA para reconhecer um conjunto palavras-chave emos aplicar a construcao de subconjuntos a qualquer NFA. Entretanto, do aplicamos essa construcaoaum NFA projetadoa partir de um conjunto avras-chave, de acordo coma estratégia da Secao 2.4.2, descobrimos que o 76 INTRODUCAO A TEORIA DE AUTOMATOS, LINGUAGENS E COMPUTACAQ. numero de estados do DFA nunca é maior que o mimero de estados do NFA. Tendo em vista que, no pior caso, 0 numero de estados aumenta exponencial mente quando passamos para 0 DFA, essa observacao € uma boa noticia, ¢ expli- caporque ométodo de projetar um NFA para palavras-chave e depois construir um DFA a partir dele ¢ usado com frequéncia. As regras para construir 0 con- junto de estados do DFA sao dadas a seguir. a) Se qp € 0 estado inicial do NFA, entdo {qo} € um dos estados do DFA ‘b) Suponha que pseja um dos estados do NFA, que ele seja acessado a partir do estado inicial, ao longo de um caminho cujos simbolos so dy4y .. dy. Entao, um dos estados do DFA € 0 conjunto de estados do NFA que con- siste em: lL. q dp 3. Todosos outros estados do NFA acessiveis a partir de q, seguindo-se um caminho cujos rotulos sao um sufixo de aa, ... d,,, isto €, qualquer se- qiténcia de simbolos da forma a4, ... dy. Note que, em geral, havera um estado do DFA para cada estado p do NFA. No entanto, na etapa (b), dois estados podem realmente produzir o mesmo con- junto de estados do NFA e, portanto, se tornar um unico estado do DFA. Por exemplo, se duas palavras-chave comecam coma mesma letra, digamos a, entao 0s dois estados do NFA acessados a partir de qg por um arco rotulado como a produzir4o o mesmo conjunto de estados do NFA e, desse modo, serao mescla- dos no DFA. Exemplo 2.15: A construcao de um DFA a partir do NFA da Figura 2.16 € mos- trado na Figura 2.17. Cada um dos estados do DFA esta localizado na mesma posicao que o estado pa partir do qual ele foi derivado, com o uso da regra (b) anterior. Por exemplo, considere o estado 135, que € a nossa abreviacao para {1,3, 5}. Esse estado foi construido a partir do estado 3. Ele incluio estado inicial, 1, porque todo conjunto de estados do DFA o inclui. Ele também incluio estado 5, porque esse estado € acessado a partir do estado 1 por um sufixo, e, do string we que acessa o estado 3 na Figura 2.16, ‘As transic6es para cada um dos estados do DFA podem ser calculadas de acordo com a construgao de subconjuntos. Porém, aregra ¢ simples. A partir de qualquer conjunto dle estados que inclui o estado inicial qq ¢ alguns outros esta- dos {p,.P),---P,}, determine, para cada simbolo x, onde ficam os p,'s no NFA, € faca com que esse estado do DFA tenha uma transicao rotulada como x para 0 estado do DEA que consiste em qy ¢ em todos os destinos dos p;'s para o simbolo x, Em todos 0s simbolos x tais que nao existe nenhuma transicao saindo de qual- AUTOMATOS FINITOS 7 quer dos valores p; rotulada por x, faga com que esse estado do DFA tenha uma transi¢do para x de modo que o estado do DFA consistindo em qq ¢ em todos os estados que sao acessados a partir de q, no NFA sigam um arco rotulado por x. Figura 2.17: Conversto do NFA da Figura 2.16 em um DFA Por exemplo, considere o estado 135 da Figura 2.17. O NFA da Figura 2.16 transicdes para o simbolo b dos estados 3 e 5 para os estados 4 e 6, respecti- nte. Entao, para o simbolo b, 135 vai para 146. Para o simbolo e, nao existe uma transicao do NFA saindo de 3 ou 5, mas existe uma transicao de | para ¢ modo, no DFA, 135 vai para 15 para a entrada e. De modo semelhante, aentrada w, 135 vai para 12. Para todos os outros simbolos x, nao ha nenhuma transicao saindo de 3 ow ‘oestado 1 vai apenas para ele mesmo. Desse modo, existem transigbes de para | para todo simbolo em © diferente deb, ee w. Usamosa notacao £- b— ‘W para representar esse conjunto, ¢ utilizamos representagoes similares de conjuntos em que alguns simbolos sao removidos de Z. 9 v3) INTRODUCAO A TEORIA DE AUTOMATOS, LINGUAGENS E COMPUTACAO 2.4.4 Exercicios para a Secao 2.4 Exercicio 2.4.1: Projete NFAs que reconhegam os conjuntos de strings a seguir. * a) abe, abd e aacd. Suponha que o alfabeto seja (a, b, c, d}. b) 0101, 101 e 011 c) ab, ac e ca. Suponha que o alfabeto seja {a, b, ch. Exercicio 2.4.2: Converta cada um dos seus NFAs do Exercicio 2.4.1 em DFAs. 2.5 Automatos finitos com epsilon-transi¢ées Agora introduziremos outra extensdo dos automatos finitos. A nova “caracte- ristica” € que permitimos transigdes sobre 8, o string vazio, Na realidade, um NFA tem permissao para fazer uma transicao espontaneamente, sem receber um simbolo de entrada. Como o nao-determinismo acrescentado na Secao 2.3, esse novo recurso nao expande a classe de linguagens que podem ser aceitas por automates finitos, mas nos dé uma certa “conveniéncia de programacao” adicio- nal. Também veremos, quando comecarmos a estudar expresses regulares na Secao 3.1, como os NFA’s com €-transicdes 5, que chamamos &-NFA’s, estao in- timamente relacionados as expresses regulares, ¢ sdo titeis para provar a equi- valéncia entre as classes de linguagens aceitas por automatos finitos e por ex- pressoes regulares. 2.5.1 Usos de &-transigoes Comegaremos com um tratamento informal dos ¢-NFA’s, usando diagramas de transicdes que permitem ter 6 como um rotulo. Nos exemplos a seguir, imagine que 0 autémato aceite as seqiéncias de rotulos ao longo dos caminhos desde o estado inicial até um estado de aceitacao. Porém, cada € encontrado ao longo de um caminho é “invisivel”, isto é, ele nde contribui com nada para o string for- mado ao longo do caminho. Exemplo 2.16: Na Figura 2.18, temos um e -NFA que aceita ntimeros decimais consistindo em: 1. Um inal + ou - opcional. 2. Um string de digitos. 3, Um ponto decimal. 4 Outro string de digitos. Esse string de digitos ou o string (2) podem ser vazios, mas pelo menos um dos dois strings deve ser ndo-vazio. AUTOMATOS FINITOS 19 Inicio Figura 2.18: Um e-NFA que aceita mimeros decimais Ha um interesse especifico na transicdo de qo para q, rotulado por €, + ou -. Desse modo, o estado q, representa a situacdo em que vemos 0 sinal, se ele exis- etalvez alguns dfgitos, mas nao o ponto decimal. O estado q, representa a si- ¢ao em que acabamos de ver o ponte decimal, e podemos ter visto ou nao di- anteriores. Em q,, definitivamente vimos pelo menos um digito, mas nao 0 ato decimal. Desse modo, a interpretacdo de q, € que vimos um ponto deci- ile pelo menos um digito, esteja ele ou antes ou depois do ponto decimal. Po- demos permanecer em q; lendo outros digitos que existirem, ¢ também temos a cao de “adivinhar” que o string de digitos esta completo e ir espontaneamen- a q;, 0 estado de aceitagdo, O nplo 2.17: A estratégia esbocada no Exemplo 2.14 para construir um NFA e reconhece um conjunto de palavras-chave pode ser simplificada ainda mais ‘permitirmos ¢-transicdes. Por exemplo, o NFA que reconhece as pala- ras-chaves web e ebay, que vimos na Figura 2.16, também pode ser implementa- ‘com ¢-transigdes como na Figura 2.19. Em geral, construfmos uma seqitén- completa de estados para cada palavra-chave, como se fosse a unica palavra ‘0 autOmato precisasse reconhecer. Depois, adicionamos um novo estado (o estado 9 na Figura 2.19), com s-transigGes para os estados iniciais dos utOmatos correspondentes a cada uma das palavras-chave, 0 "Figura 2.19: 0 uso de e-transigoes para ajudar a reconhecer palavras-chave 80 INTRODUGAO A TEORIA DE AUTOMATOS, LINGUAGENS E COMPUTACAQ 2.5.2 A notacao formal para um 5-NFA Podemos representar um e-NFA exatamente como fazemos no caso de um NFA, com uma unica excecao: a funcao de transicao deve incluir informagoes a respeito de transicOes sobre €. Formalmente, representamos um &-NFA A por A = (Q, Z, 8, qo, F), onde cada um dos componentes tem a mesma interpretacao que no caso de um NFA, exceto pelo fato de ser agora uma funcdo que recebe como argumentos: 1. Um estado em 9. 2. Um elemento de £ U [e}, isto é, um simbolo de entrada ou o simbolo ¢. Exigimos que ¢, o simbolo para o string vazio, nao pode ser um elemento do alfabeto 2, para nao gerar nenhuma confusao. Exemplo 2.18: O e-NFA da Figura 2.18 é representado formalmente como 1,854o5(ds}) E=((do.41 onde 8 € definido pela tabela de transicées da Figura 2.20. 0 0,1, ® {a,-44) {43} {q3) ® ® Figura 2.20: Tabela de transig6es correspondente a Figura 2,18 2.5.3 Epsilon-fechamentos Prosseguiremos com as definicdes formais de uma fungao de transigao estendi- da para s-NFA’s, 0 que leva a definicdo de aceitacao de strings e de linguagens por esses autématos, e eventualmente nos permite explicar por que os ¢-NFA’s podem ser simulados por DFA’s. Contudo, primeiro precisamos conhecer uma definigao central, chamada ¢-fechamento de um estado. Informalmente, usamos oé-fechamento em um estado q seguindo todas.as transi¢des saindo de q rotula- das por ¢. Porém, quando chegamos a outros estados seguindo &, acompanha- mos as transices & que saem desses estados, e assim por diante, encontrando eventualmente todo estado que pode ser alcancado a partir de q ao longo de AUTOMATOS FINITOS 81 qualquer caminho cujos arcos sao todos rotulados por ¢. Formalmente, defini- mos 0 €-fechamento ECLOSE(q) recursivamente, como segue: BASE: O estado q esta em ECLOSE(q). INDUCAO: Se 0 estado p esté em ECLOSE(q), ¢ existe uma transicao do estado pparao estado rrotulada por &, entdo r esta em ECLOSE(q). Mais precisamente, se 6 éa funcdo de transic4o do s-NFA envolvido, e p esta em ECLOSE(q), entao ECLOSE(q) também contém todos os estados em 6 (p, €). Exemplo 2.19; Para o automato da Figura 2.18, cada estado éseu proprio ¢-fecha- mento, com duas excecdes: ECLOSE(qy) = {qo.q;} € ECLOSE (q,) = {q,q5}. A ra- zAo é que existem apenas duas €-transicdes, uma que adiciona q, a ECLOSE(go) e ‘a outra que adiciona q, a ECLOSE(q,). Um exemplo mais complexo é dado na Figura 2.21. Para essa colegio de es- tados, que pode fazer parte de algum 5-NFA, podemos concluir que ECLOSE(1) = {1, 2, 3, 4, 6} Figura 2.21: Alguns estados e transicoes Cada um desses estados pode ser alcancado a partir do estado 1 ao longo de m caminho exclusivamente identificado por ¢. Por exemplo, o estado 6 é al- lo pelo caminho 1 > 2 > 3 > 6. O estado 7 nao esta em ECLOSE(1), , embora seja alcancavel a partir do estado 1, o caminho tem de usar o arco 4 5 que nao esta identificado por ¢. O fato de que o estado 6 tambem pode ser cado a partir do estado 1 ao longo de um caminho 1+ 45-6, que tem igdes ndo-e, é sem importancia. A existéncia de um caminho com todos os € € suficiente para mostrar que o estado 6 esta em ECLOSE(1). 0 .4 Transicées estendidas e linguagens para os s-NFA’s fechamento nos permite explicar facilmente qual sera a aparéncia das tran- de um ¢-NFA quando ¢ dada uma seqiiéncia de entradas (ndo-vazia). A dai, podemos definir © que significa um e-NFA aceitar sua entrada. 82 INTRODUCAO A TEORIA DE AUTOMATOS, LINGUAGENS E COMPUTACAO. Suponhaque E = (Q,2,8, q9,F) sejaum ¢-NFA. Primeiro, definimos6, a fun- cao de transicao estendida, a fim de refletir o que acontece em umasequéncia de entradas. O objetivo é fazer com que 6(q, w) seja 0 conjunto de estados que po- dem ser alcancados ao longo de um caminho cujos rétulos, quando concatena- dos, formam o string w. Como sempre, os valores ¢ ao longo desse caminho nao contribuem para w. A defini¢ao recursiva apropriada de 6 é; BASE: &(q, 6) = ECLOSE(q). Isto é, se 0 rétulo do caminho € €, entao podemos seguir apenas arcos rotulados por « que se estendem desde o estado q; isso ¢ exa- tamente o que ECLOSE faz. INDUCAO: Suponha que w tenhaa forma xa, onde a é 0 tiltimo simbolo de w. Note que a éum elemento de E; ele nao pode ser «, que nao est4 em E. Caleula- mos &(q, w) da seguinte forma: 1. Seja {p},p2y--+s Py} 0 valor de &(q, x). Isto €, os p's sdo todos € somente os ‘estados que podemos alcancar a partir de q seguindo um caminho rotula- do por x. Esse caminho pode terminar com uma ou mais transicdes rotu- ladas por €, e também pode ter outras é-transigdes. N SejaL J, 8(p,, a) 0 conjunto (r),r,-..rm)- Isto €, siga todas as transicoes rotuladas por a desde os estados que podemos alcancar a partir de q ao longo de caminhos rotulados por x. Os rs sdo alguns dos estados que po- demos alcancar a partir de q ao longo de caminhos rotulados por w. Os estados adicionais que podemos alcangar sao encontrados a partir dos r;, seguindo-se arcos rotulados por € na etapa (3) a seguir. 3. Entéo, 6(q, w) = J", ECLOSE(,)). Essa etapa adicional de fechamento inclui todos os caminhos desde q rotulados por w, considerando-se a possibilidade de existirem arcos adicionais rotulados por € que podemos seguir apos efetuar uma transicao sobre o ultimo simbolo “real”, a. Exemplo 2.20: Vamos calcular §(qp, 5. 6) pata o &-NFA da Figura 2.18. Um resu- mo das etapas necessarias € o seguinte: © S(qo, €) = ECLOSE(4q) = {4o, 41)- Calcule 8(qp, 5) da seguinte forma: ; Primeiro, calcule as transigdes sobre a entrada 5 a partir dos estadlos qo € qy que obtivemos no calculo de&(qp, £). Isto €, calculamas 8(qq, 5) U 8(4,, 5) = ta, as!- Em seguida, faca o €-fechamento dos elementos do conjunto calculado na etapa (1). Obtemos ECLOSE(q,) U ECLOSE(q,) = {a,} U {a4} = 441.44). = AUTOMATOS FINITOS 8B Esse conjunto €8(qo, 5). Esse padrao de duas etapas se repete para os dois simbolos seguintes. * Calcule (qo, 5.) como segue: 1. Primeiro, calcule 8(q,. )U{q,, 1=1q2)U las} = 92.43). 2. Em seguida, calcule &@o, 5.) = ECLOSE(q,) U ECLOSE(q,) = fq} U {43.45} = (42 .45.45)- * Calcule 8(qp, 5.6) da seguinte forma: 1. Primeiro, calcule 8(q, , 6) U8(q,, 6) U8(qs,, 6) = {43} U fq] U0 = fa). 2. Em seguida, calcule 8(q,, 5-6) = ECLOSE(4,) = {q3.95). Agora podemos definir a linguagem de um ¢-NFA E = (Q, 5,8, qo, F) dama- esperada: L(E) = {w |8(qo, w) M F #0}. Ou seja, a linguagem de E € 0 con- ito de strings w que levam do estado inicial a pelo menos um estado de aceita- .. Para exemplificar, vimos no Exemplo 2.20 que 6(qq, 5.6) contém o estado aceitacao qs, ¢ assim o string 5.6 esta na linguagem desse ¢-NFA. 5.5 Eliminacdo de &-transicées qualquer e-NFA E, podemos encontrar um DFA D que aceita a mesma lin- em que E. A construcao que usamos ¢ muito parecida com a constru¢ao de njuntos, pois os estados de D sao subconjuntos dos estados de E. A unica nga € que devemos incorporar as €-transigdes de E, o que fazemos por do mecanismo de ¢-fechamento. Seja E = (Q-, 8 5,, qo, F;). Entéo o DFA equivalente D=(@p.28p.40Fo) inido como a seguir: 1. Qp €0 conjunto de subconjuntos de Q,. Mais precisamente, descobrire- ‘mos que todos os estados acessiveis de D sao subconjuntos com ¢-fecha- mento de Q,; isto é, conjuntos Sc Q, tais que $= ECLOSE(S). Em outras palavras, os conjuntos de estados S com €-fechamento sao aqueles em que qualquer ¢-transicao saindo de um dos estados em Slevaa um estado que também esta em S. Observe que @ € um conjunto ¢-fechado. nv Gp = ECLOSE(4q); isto €, obtemos 0 estado inicial de D fechando 0 con- junto que consiste apenas no estado inicial de E. Observe que essa regra 4 INTRODUGAO A TEORIA DE AUTOMATOS, LINGUAGENS E COMPUTACAO. difere da construgdo de subconjuntos original, em que o estado inicial do automato construido era apenas o conjunto que continha o estado inicial do NFA dado. 3. Fp representa os conjuntos de estados que contém pelo menos um estado de aceitacao de E. Ou seja, F, ={S| SestaQ, eSNF, #0). 4. 8p(S, a) écalculado, para todo aem E e todos os conjuntos S em Qp por: (a) Seja $= (p),Pp>--Pp)- (b) Calcule Jt 8: (p: a); seja esse conjumto (1.1.0): (c) Entaod, (S,a) = 7, ECLOSE(). Exemplo 2.21: Vamos eliminar as ¢-transicdes do e-NFA da Figura 2.18, que chamaremos E no texto a seguir. A partir de E, construimos um DFA D, mostra- do na Figura 2.22. Entretanto, para evitar confusio, omitimos da Figura 2.22 0 estado morto @e todas as transicdes para este estado. Vocé deve imaginar que, para cada estado mostrado na Figura 2.22, ha transicoes adicionais de qualquer estado para @ para quaisquer simbolos de entrada em que uma transi¢ao nao € indicada. Além disso, 0 estado @ tem transicgdes para ele mesmo para todos os simbolos de entrada. Inicio O19 Figura 2,22: O DFA D que elimina e-transigdes da Figura 2.18 Tendo em vista que o estado inicial de E € qo, 0 estado inicial de D é ECLOSE(qg), que € (qo,4)). Nosso primeiro trabalho € encontrar 0s sucessores de qa € 4, para os varios simbolos em E; observe que esses simbolos sao os sinais de mais e menos, 0 ponto e os digitos de 0a 9. Sobre +=, q, nao vai para lugar nenhum na Figura 2.18, enquanto q vai para q,. Desse modo, para calcular AUTOMATOS FINITOS. 85 Sp({qo, dr). +), comecamos com {gy} € usamos o €-fechamento . Como nao exis- te nenhuma ¢-transicao saindo de qy, temos 5p({qo, 4:}, +) = {q1}. De modo se- melhante, 8p({qo. 4i},—) = {qq)- Essas duas transigdes s4o indicadas por um tni- co arco na Figura 2.22. Em seguida, precisamos calcular 8p({qo; 4}, -). Tendo em vista que dy nao -vai para lugar nenhum para o ponto, ¢ como q, vai para q) na Figura 2.18, deve- mos usar o €-fechamento em (q,}. Como nao existe nenhuma é-transicao sain- do de qo, esse estado € seu proprio fechamento, ¢ assim 8y((do, di}, .) = {aa Por fim, devemos calcular 8,({qy, q)}. 0), como um exemplo das transicbes de {qo,q;} sobre todos os digitos. Descobrimos que qg nao vai para nenhum lugar sobre os digitos, mas q, vai para q, e q,. Como nenhum desses estadas tem em saida e-transicdes, conchuimos que 8,( (qo, 4:), 0) = (di. da}, €da mesma forma, para os outros digitos. Assim, explicamos os arcos saindo de {qo,q;} da Figura 2.22. As outras tran- sigdes sao calculadas de modo semelhante, e vamos deixd-las para voce verifi- car. Como q, € ouinico estado deaceitacao de E, os estados de aceitacao de D sao aqueles estados acessiveis que contém q,. Vemos que os dois conjuntos {qs 45} {q2s 43: 45} S40 indicados por circulos duplos na Figura 2.22. Teorema 2.22: Uma linguagem L ¢ aceita por algum e-NFA se e somente se L € aceita por algum DFA. PROVA: (Se) Esse sentido é facil. Suponha que L = L(D) para algum DFA. Transforme D em um ¢-DFA E adicionando transicées 6 (q, €) = para todos os estados q de D. Tecnicamente, também devemos converter as transicoes de D em simbolos de entrada, por exemplo, 5p(q, 4) = p em uma transicao de NFA para o conjunto que contém apenas p, isto €, 5;(q, a) = {p}. Desse modo, as tran- sigdes de E e D sao iguais, mas E estabelece explicitamente que nao existe ne- nhuma transi¢ao para fora de qualquer estado para &. (Somente se) Seja E = (Qp, ¥, 8g, do Fp) um &- NFA. Apliquea construcao de subconjuntos modificada descrita anteriormente para produzir o DFA D=(@p, E, 8p. dns Fo) Precisamos mostrar que L(D) = L(E), ¢ 0 fazemos mostrando que as funcdes de transicao estendida de E € D sao iguais. Formalmente, mostramos®,(q, w) = 8 (go, ) pot inducao sobre 0 comprimento de w. BASE: Se |wl =0, entéo w =e. Sabemos qued,(qo, €) = ECLOSE(qq). Também sabe- mos que qp = ECLOSE(qq), porque esse ¢ 0 modo camo o estado inicial de Dé defi- nido. Por fim, para um DFA, sabemos que 5(p, £) = p para qualquer estado p e assim, em particular, 5p(qp,€) = ECLOSE (qq). Provamos portanto qued,(qp, &) = Sp(qp.£)- 86 INTRODUGAO A TEORIA DE AUTOMATOS, LINGUAGENS E COMPUTACAO. INDUGAO: Suponha que w =xa, onde aé 0 ultimo simbolo dew, ¢ que o enun- ciado seja verdadeiro parax. Isto é,5-(qo,x) =Sp(qp, x). Sejam esses dois conjun- tos de estados (p;,p,..--Pr}- Pela definigao de 8 para ¢-NFAs, calculamos § -(qo, w) por: 1. Seja (ryaras-t) © conjuntol J", 8:(p, a). 2. Entéo, 8, (qo,w) =, ECLOSE(,). Se examinarmos a construgio do DFA D na construgao de subconjuntos modificada anterior, veremos que §,({P,, P2. .--» Px), @) € construida pelas mes- mas etapas (1) e (2) anteriores. Desse modo, 8n(qp, w), que é (Pas Pps > Pads a), €omesmo conjunto qued,(qo, w). Assim provamos qued_(qo, w) =8p(qp, ¥) e concluimos a parte indutiva. O 2.5.6 Exercicios para a Secao 2.5 * Exercicio 2.5.1: Considere o seguinte ¢-NFA- a) Calcule o ¢-fechamento de cada estado. b) Forneca todos os strings de comprimento trés ou menos aceitos pelo au- tomato. c) Converta o autémato em um DFA. Exercicio 2.5.2: Repita o Exercicio 2.5.1 para o seguinte e-NFA: bci« bak splian |@ |id | aye {pl | {rl | tp. ab wr lo o jo jo Exercicio 2.5.3: Projete e-NFAs para as linguagens a seguir. Procure usar e-transicoes para simplificar seu projeto. a) O conjunto de strings que consiste em zero ou mais a's seguidos por zero ou mais b's, seguidos por zero ou mais c's. AUTOMATOS FINITOS 87 1b) Oconjunto de strings que consiste em 01 repetido uma ou mais vezes, ou em 010 repetido uma ou mais vezes. 1c) O conjunto de strings de 0's ¢ 1's tais que pelo menos uma das dez ulti- mas posicdes € um 1. 2.6 Resumo do Capitulo 2 + Autématos finitos determintsticos: Um DFA tem um conjunto finito de es- tados e um conjunto finito de simbolos de entrada. Um estado é designa- do como estado inicial, e zero ou mais estados sao estados de aceitacao. Uma funcao de transi¢ado determina como o estado se altera toda vez que um simbolo de entrada é processado. Diagramas de transicoes: E conveniente representar automatos por um grafo no qual os nds s4o os estados, e os arcos sao rotulados por simbolos de entrada, indicando as transicSes desse autémato. O estado inicial ¢ de- signado por uma seta, e os estados de aceitacao por circulos duplos. + Linguagem de um automato: O automato aceita strings. Um string € aceito se, comecando no estado inicial, as transi¢des causadas pelo processa- mento dos simbolos desse string um de cada vez levam a um estado de aceitacdo. Em termos do diagrama de transigdes, um string ¢ aceito se for orotulo de um caminho do estado inicial até algum estado de aceitacao. + Autématos finitos nao-deterministicos: O NFA difere do DFA pelo fato de que o NFA pode ter qualquer mimero de transic6es (inclusive zero) para os estados seguintes, a partir de um dado estado ou de um dado simbolo de entrada. + A construcdo de subconjuntos; Tratando conjuntos de estados de um NFA como estados de um DFA, é possivel converter qualquer NFA em um DFA que aceite a mesma linguagem. + &-transicées : Podemos estender o NFA permitindo transi¢des para uma en- trada vazia, isto é, sem qualquer simbolo de entrada. Esses NFA’s estendi- dos podem ser convertidos em DFA’s que aceitam a mesma linguagem. + Aplicacées de busca em textos: Os automatos finitos nao-deterministicos constituem uma forma util de representar um comparador de padroes (pattern-matcher) que examina um grande corpo de texto em busca de ‘uma ou mais palavras-chave. Esses autématos sao simulados diretamente em software ou sao convertidos primeiro em um DFA, que é entao simu- lado. Capitulo 3 pressoes regulares linguagens esse capitulo introduzindo a notacdo chamada “expressées regulares” expressdes Sao outro tipo de notacao para a definicao de linguagens, que mos- brevemente na Secao 1.1.2. As expressdes regulares também podem ser con- radas uma “linguagem de programacio”, na qual expressamos algumas aplica- importantes, como aplicagdes de pesquisa em textos ou componentes de compi- es. As rrreenes regulares estdo intimamente relacionadas aos aut6matos fini- i inisticos ¢ podem ser consideradas uma alternativa “amigavel para o ” para a notacao dos NFA, a fim de descrever componentes de software. Neste capitulo, depois de definir expressdes regulares, mostraremos que Ss sao capazes de definir todas e somente as linguagens regulares, Discutire- s 0 modo como as expresses regulares sao usadas em varios sistemas de pware. Em seguida, examinaremos as leis algébricas que se aplicam a expres- ‘regulares. Elas tém semelhanca significativa com as leis algébricas da arit- ica, ainda que também existam algumas diferenas importantes entre as al- ras de expressoes regulares e de expressoes aritméticas. Expressoes regulares te ponto, deslocamos nossa aten¢ao das descri¢des de linguagens semelhan- juinas — automatos finitos deterministicos e nao-deterministicos - para i descricdo algébrica: a “expressao regular”. Descobriremos que as expres- s regulares podem definir exatamente as mesmas linguagens que as diversas mas de autOmatos descrevem: as linguagens regulares. Porém, as expressdes ares oferecem algo que os autOmatos nao oferecem: um modo declarativo ressar Os Strings que queremos aceitar. Dessa maneira, as expressdes re- wes servem como a linguagem de entrada para muitos sistemas que proces- sam strings. Os exemplos incluem:

Você também pode gostar