Introdu¸c˜ao aos Fundamentos da Computa¸c˜ao ii Editora Thomson Introdu¸c˜ao aos fundamentos da computa¸c˜ao Sum´ario Pref´acio vii Agradecimentos xi 1 Conceitos Preliminares 1 1.1 Representa¸c˜ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Linguagens Formais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3 Grama´ticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.4 Problemas de Decis˜ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 1.5 Exerc´ıcios Adicionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 1.6 Notas Bibliogr´aficas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2 M´aquinas de Estados Finitos 31 2.1 Alguns Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.1.1 Um quebra-cabe¸ca . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.1.2 Um probleminha de matem´atica . . . . . . . . . . . . . . . . . . 35 2.1.3 Modelagem do funcionamento de um elevador . . . . . . . . . . . 36 2.2 Autˆomatos Finitos Determin´ısticos . . . . . . . . . . . . . . . . . . . . . 39 2.2.1 O que ´e autˆomato finito determin´ıstico . . . . . . . . . . . . . . . 39 2.2.2 Minimiza¸c˜ao de AFDs . . . . . . . . . . . . . . . . . . . . . . . . 47 2.2.3 Algumas propriedades dos AFDs . . . . . . . . . . . . . . . . . . 52 2.3 Autˆomatos Finitos N˜ao Determin´ısticos . . . . . . . . . . . . . . . . . . 64 2.3.1 O que ´e autˆomato finito n˜ao determin´ıstico . . . . . . . . . . . . 65 2.3.2 Equivalˆencia entre AFDs e AFNs . . . . . . . . . . . . . . . . . . 69 2.3.3 AFN com transi¸c˜oes λ . . . . . . . . . . . . . . . . . . . . . . . . 71 2.4 Linguagens Regulares: Propriedades . . . . . . . . . . . . . . . . . . . . 81 2.4.1 Invariˆancia `a direita . . . . . . . . . . . . . . . . . . . . . . . . . 82 2.4.2 Propriedades de fechamento . . . . . . . . . . . . . . . . . . . . . 83 2.4.3 O lema do bombeamento . . . . . . . . . . . . . . . . . . . . . . 86 2.5 M´aquinas de Mealy e de Moore . . . . . . . . . . . . . . . . . . . . . . . 92 2.6 Express˜oes Regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 2.7 Grama´ticas Regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 2.8 Linguagens Regulares: Conclus˜ao . . . . . . . . . . . . . . . . . . . . . . 117 iii iv Editora Thomson Introdu¸c˜ao aos fundamentos da computa¸c˜ao 2.9 Exerc´ıcios Adicionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 2.10 Notas Bibliogr´aficas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 3 Autˆomatos de Pilha 133 3.1 Uma Introdu¸c˜ao Informal . . . . . . . . . . . . . . . . . . . . . . . . . . 134 3.2 Autˆomatos de Pilha Determin´ısticos . . . . . . . . . . . . . . . . . . . . 137 3.3 Autˆomatos de Pilha N˜ao Determin´ısticos . . . . . . . . . . . . . . . . . . 144 3.4 Grama´ticas Livres do Contexto . . . . . . . . . . . . . . . . . . . . . . . 152 3.4.1 Defini¸c˜ao e exemplos . . . . . . . . . . . . . . . . . . . . . . . . . 153 3.4.2 Deriva¸c˜oes e ambiguidade . . . . . . . . . . . . . . . . . . . . . . 156 3.4.3 Manipula¸c˜ao de gram´aticas e formas normais . . . . . . . . . . . 162 3.4.4 GLCs e autˆomatos de pilha . . . . . . . . . . . . . . . . . . . . . 180 3.5 Linguagens Livres do Contexto: Propriedades . . . . . . . . . . . . . . . 191 3.6 Exerc´ıcios Adicionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 3.7 Notas Bibliogr´aficas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 4 M´aquinas de Turing 205 4.1 O que E´ M´aquina de Turing . . . . . . . . . . . . . . . . . . . . . . . . . 205 4.2 Algumas Varia¸c˜oes de MTs . . . . . . . . . . . . . . . . . . . . . . . . . 216 4.2.1 Ma´quina com cabe¸cote im´ovel . . . . . . . . . . . . . . . . . . . . 216 4.2.2 Ma´quina com mu´ltiplas trilhas . . . . . . . . . . . . . . . . . . . 217 4.2.3 Ma´quina com fita ilimitada em ambas as dire¸c˜oes . . . . . . . . . 218 4.2.4 Ma´quina com mu´ltiplas fitas . . . . . . . . . . . . . . . . . . . . 220 4.2.5 Ma´quina n˜ao determin´ıstica . . . . . . . . . . . . . . . . . . . . . 222 4.3 Grama´ticas e M´aquinas de Turing . . . . . . . . . . . . . . . . . . . . . 228 4.4 Propriedades das LREs e das Linguagens Recursivas . . . . . . . . . . . 235 4.5 Exerc´ıcios Adicionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 4.6 Notas Bibliogr´aficas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 5 Decidibilidade 243 5.1 A Tese de Church-Turing . . . . . . . . . . . . . . . . . . . . . . . . . . 243 5.2 M´aquinas de Turing e Problemas de Decis˜ao . . . . . . . . . . . . . . . . 245 5.3 Uma M´aquina de Turing Universal . . . . . . . . . . . . . . . . . . . . . 250 5.4 O Problema da Parada . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 5.5 Redu¸c˜ao de um Problema a Outro . . . . . . . . . . . . . . . . . . . . . 258 5.6 Alguns Problemas Indecid´ıveis Sobre GLCs . . . . . . . . . . . . . . . . 269 5.7 Exerc´ıcios Adicionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 5.8 Notas Bibliogr´aficas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 A Matem´atica Discreta: o que vocˆe precisa saber 275 A.1 Prova de Teoremas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 A.2 Conjuntos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 A.3 Rela¸c˜oes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 A.4 Fun¸co˜es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 Newton Jos´e Vieira Sum´ario v A.5 Conjuntos Enumer´aveis . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 A.6 Defini¸c˜oes Recursivas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 A.7 Indu¸c˜ao Matem´atica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 A.8 Grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312 Bibliografia 319 ´Indice Remissivo 324 Pref´acio Estelivrofoiescritoparaserutilizadoprincipalmenteporalunosdecursosdegradua¸c˜ao na ´area de computa¸c˜ao, como ciˆencia da computa¸c˜ao, matem´atica computacional, en- genharia de computa¸c˜ao, sistemas de informa¸c˜ao e outros. Tamb´em pode ser utilizado poralunosdep´os-gradua¸c˜ao,eventualmentecomplementadocomoutrasreferˆenciasque abordem alguns assuntos com maior profundidade ou que apresentem alguns t´opicos n˜ao cobertos aqui. Al´em disso, pode ser u´til para profissionais da ´area de computa¸c˜ao em geral, tanto para aqueles que desejem fazer uma revis˜ao quanto para aqueles que queiram ter um primeiro contato com a ´area. Os textos que tratam sobre os assuntos aqui apresentados podem ser divididos em trˆes grupos. H´a os com uma abordagem bastante abstrata e formal, orientados para leitores com uma base matem´atica forte. Alguns deles preocupam-se em apontar ou desenvolveralgumasaplica¸c˜oes,por´emofoco´eaexplora¸c˜aodasestruturasmatem´aticas em si. Em um segundo grupo, h´a os com uma abordagem menos abstrata, com uma preocupa¸c˜ao em explicar de forma intuitiva as estruturas matem´aticas envolvidas, mas que ainda se valem de formalismos e de demonstra¸c˜oes de teoremas para assegurar um m´ınimo de concis˜ao, precis˜ao e rigor. Estes dirigem-se a leitores que n˜ao precisam ter uma base matem´atica forte, contudo, ainda assim precisam ter uma certa facilidade para lidar com objetos matem´aticos. Finalmente, h´a os que, al´em de priorizar uma explica¸ca˜o intuitiva das estruturas envolvidas, evitam ao m´aximo o uso de formalismos e de demonstra¸c˜oes de teoremas. O objetivo principal desses u´ltimos ´e atrair leitores semam´ınimapropens˜aoparalidarcom formalismos edemonstra¸c˜oes deteoremas. Por evitarem o uso de formalismo, tais textos costumam ser muito prolixos, com uma taxa muito baixa de conteu´do por p´agina, al´em de terem, aqui e ali, problemas de precis˜ao e at´e mesmo de clareza. Com rela¸c˜ao aos trˆes grupos mencionados no par´agrafo anterior, este livro pode ser classificado como do segundo grupo, mas, ainda que se beneficiando do formalismo matem´atico para efeitos de concis˜ao e precis˜ao, ele tem uma preocupa¸c˜ao especial em apresentar todos os conceitos apelando para a intui¸c˜ao do leitor, principalmente o incluso no pu´blico-alvo mencionado anteriormente. Deve-se ressaltar, por´em, que aqueles que n˜ao tiverem interesse nas demonstra¸c˜oes de teoremas ainda assim podem se beneficiar da leitura do livro, visto que poder˜ao encontrar bastante material, como m´etodos,algoritmosetc.,quepodeserassimiladoparausoemamplagamadesitua¸c˜oes. Osconceitosmatem´aticosnecess´ariosparamelhorcompreens˜aodoassuntos˜aoapre- sentados sucintamente no Apˆendice A, a saber: os conceitos de conjuntos, rela¸c˜oes, fun¸c˜oes, conjuntos enumer´aveis, defini¸c˜oes recursivas e grafos, al´em das principais t´ecnicas para a prova de teoremas, entre as quais se ressalta a de indu¸c˜ao matem´atica. O leitor que j´a tiver estudado tais t´opicos estar´a qualificado para entender com facili- dade o assunto abordado nos cap´ıtulos. No entanto, para aquele que sentir necessidade de uma revis˜ao, o conteu´do do apˆendice ´e suficiente. O Cap´ıtulo 1 apresenta as quatro no¸c˜oes b´asicas de representa¸c˜ao, linguagens for- mais, grama´ticas e procedimentos de decis˜ao. Tais no¸c˜oes s˜ao importantes para o vii viii Editora Thomson Introdu¸c˜ao aos fundamentos da computac¸˜ao entendimento do resto do livro. Como se pode depreender pelos t´ıtulos dos cap´ıtulos restantes, o assunto foi desenvolvido a partir do conceito de m´aquinas. Essa estrutura, que n˜ao ´e a mais comum na literatura, foi escolhida por levar a uma abordagem mais intuitiva ao aluno m´edio de computa¸c˜ao, como constatado pelo autor a partir de sua experiˆencia de mais de 12 anos lecionando uma disciplina com o conteu´do deste livro no curso de bacharelado em ciˆencia da computa¸c˜ao da Universidade Federal de Minas Gerais. As linguagens formais e autˆomatos s˜ao, na ´area de teoria da computa¸c˜ao, das mais prof´ıcuas do ponto de vista pr´atico. Ao contr´ario do que se pode imaginar `a pri- meira vista, v´arios dos conceitos aqui estudados tˆem aplica¸c˜oes pr´aticas, n˜ao s´o em ambientes complexos e sofisticados, mas tamb´em em ambientes relativamente simples e corriqueiros. Por exemplo, as m´aquinas de estados finitos, tema do Cap´ıtulo 2, podem ser usadas como ferramentas de modelagem nos mais diversos problemas, por exem- plo, concep¸c˜ao de analisadores l´exicos, confec¸c˜ao de algoritmos para busca em texto, projeto de m´aquinas para venda de produtos (jornais, refrigerantes etc.), projeto do funcionamento de elevadores e assim por diante. O conteu´do do livro foi definido para ser lecionado em uma disciplina de um se- mestre. Dada essa limita¸c˜ao de prazo, e como o assunto ´e bastante extenso, optou-se por dar ˆenfase aos aspectos que tˆem maior contrapartida do ponto de vista pr´atico. Assim, por exemplo, a parte relativa a m´aquinas de estados finitos, no Cap´ıtulo 2, recebeu um espa¸co maior, visto que essas m´aquinas encontram aplica¸c˜oes em grande quantidade de situa¸c˜oes, como foi ressaltado anteriormente. J´a no Cap´ıtulo 3, que aborda os autˆomatos de pilha, ´e dada maior ˆenfase a gram´aticas e conceitos correlatos, uma vez que estes tˆem maior aplicabilidade pr´atica que os autˆomatos de pilha propri- amente (pelo menos em sua forma original). Na verdade, os autˆomatos costumam ser, na pr´atica, obtidos a partir de gram´aticas. No Cap´ıtulo 4 s˜ao apresentadas as m´aquinas de Turing, no intuito de dar ao leitor uma no¸c˜ao dos componentes fundamentais de uma m´aquina que faz computa¸c˜ao. As m´aquinasquetˆemumpodercomputacionalentreodeautˆomatodepilhaeodem´aquina de Turing, os denominados autˆomatos linearmente limitados, recebem um tratamento bastante superficial, por n˜ao terem muita importˆancia do ponto de vista pr´atico e n˜ao terem a relevˆancia te´orica das m´aquinas de Turing. Finalmente, no Cap´ıtulo 5, que trata de decidibilidade, o foco ´e fornecer ao leitor uma no¸c˜ao dos limites do conceito de computa¸c˜ao, o que ´e feito por meio da apre- senta¸c˜ao de alguns problemas de enunciado muito simples para os quais n˜ao existem solu¸c˜oes computacionais (algoritmos), entre os quais o tradicional problema da parada. O livro cont´em cerca de 400 exerc´ıcios formulados. Ao final de cada se¸c˜ao, s˜ao for- mulados exerc´ıcios para a pr´atica e a consolida¸c˜ao dos conceitos estudados. E, ao final de cada cap´ıtulo, ´e ainda apresentada uma se¸c˜ao com exerc´ıcios sobre todo o assunto cobertonomesmo. Taisexerc´ıcios diferemdosdefinaldesec¸˜aoporterem,emgeral, um n´ıvel de dificuldade um pouco maior e por n˜ao serem t˜ao direcionados a determinados conceitos. Por exemplo, em um exerc´ıcio de final de se¸c˜ao, normalmente s˜ao apontados o m´etodo, a t´ecnica ou o algoritmo a serem empregados para conseguir certo objetivo; j´a em um exerc´ıcio de final de cap´ıtulo, o m´etodo, a t´ecnica ou o algoritmo a serem Newton Jos´e Vieira Pref´acio ix utilizados n˜ao s˜ao assinalados, devendo ser escolhidos ou determinados pelo estudante. Outracaracter´ısticamarcantedestetexto´eaexistˆenciadeumcap´ıtulocomsolu¸c˜oes de exerc´ıcios selecionados. Esse cap´ıtulo ´e importante, pois d´a aos alunos a oportuni- dade de conferir ou comparar solu¸c˜oes, al´em de fornecer uma oportunidadeao autor de abordar t´opicos interessantes que n˜ao caibam naturalmente no texto normal. Ao final de cada cap´ıtulo, ap´os a se¸c˜ao de exerc´ıcios propostos, ´e apresentada uma bibliografia que cont´em a origem dos diversos conceitos, assim como sugest˜oes para leituras complementares. Dopontodevistadoconteu´do, existem v´arioslivrosquecobremosto´picos aquidis- cutidos. Destes, deveser especialmente ressaltado odeHopcrofteUllman (1979), fonte a partir da qual n˜ao apenas a presente publica¸c˜ao, mas tamb´em a maioria das outras, buscou inspira¸c˜ao e exemplo. Alguns outros bons textos, do ponto de vista did´atico, com abordagens alternativas `aquelas aqui utilizadas s˜ao os de Hopcroft, Motwani e Ullman (2001) (a segunda edi¸c˜ao do texto citado anteriormente), Martin (1991), Linz (1997), Sipser (1997), Greenlaw e Hoover (1998), Floyd e Beigel (1994) e Kozen (1997).