Table Of ContentIntrodu¸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).