Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Teoria da Computação, Notas de estudo de Informática

Livro texto da disciplina

Tipologia: Notas de estudo

2013

Compartilhado em 01/11/2013

ariellauber
ariellauber 🇧🇷

4.5

(2)

6 documentos

1 / 479

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
A Ina, Rachel, e Aaron
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Pré-visualização parcial do texto

Baixe Teoria da Computação e outras Notas de estudo em PDF para Informática, somente na Docsity!

A Ina, Rachel, e Aaron

vi ´INDICE

  • Parte Um: Aut ˆomatos e Linguagens
  • 1 Linguagens Regulares
    • 1.1 Aut ˆomatos Finitos - Descric¸ ˜ao formal de um aut ˆomato finito - Exemplos de aut ˆomatos finitos - Definic¸ ˜ao formal de computac¸ ˜ao - Projetando aut ˆomatos finitos - As operac¸ ˜oes regulares
    • 1.2 N˜ao-determinismo - Definic¸ ˜ao formal de um aut ˆomato finito n˜ao-determin´ıstico - Equivalˆencia de AFNs e AFDs - Fecho sob as operac¸ ˜oes regulares
    • 1.3 Express ˜oes Regulares - Definic¸ ˜ao formal de uma express˜ao regular - Equivalˆencia com aut ˆomatos finitos
    • 1.4 Linguagens N˜ao-regulares - O lema do bombeamento para linguagens regulares
      • Exerc´ıcios, Problemas, e Soluc¸˜oes
  • 2 Linguagens Livres-do-Contexto
    • 2.1 Gram´aticas Livres-do-Contexto - Definic¸ ˜ao formal de uma gram´atica livre-do-contexto - Exemplos de gram´aticas livres-do-contexto - Projetando gram´aticas livres-do-contexto - Ambig ¨uidade - Forma normal de Chomsky
    • 2.2 Aut ˆomato com Pilha - Definic¸ ˜ao formal de um aut ˆomato com pilha - Exemplos de aut ˆomatos com pilha - Equivalˆencia com gram´aticas livres-do-contexto
    • 2.3 Linguagens N˜ao-livres-do-contexto - O lema do bombeamento para linguagens livres-do-contexto
      • Exerc´ıcios, Problemas, e Soluc¸˜oes
  • Parte Dois: Teoria da Computabilidade
  • 3 A Tese de Church–Turing
    • 3.1 M´aquinas de Turing - Definic¸ ˜ao formal de uma m´aquina de Turing - Exemplos de m´aquinas de Turing
    • 3.2 Variantes de M´aquinas de Turing - M´aquinas de Turing multifitas - M´aquinas de Turing n˜ao-determin´ısticas - Enumeradores - Equivalˆencia com outros modelos ´INDICE vii
    • 3.3 A Definic¸ ˜ao de Algoritmo - Os problemas de Hilbert - Terminologia para descrever m´aquinas de Turing
      • Exerc´ıcios, Problemas, e Soluc¸˜oes
  • 4 Decidibilidade
    • 4.1 Linguagens Decid´ıveis - Problemas decid´ıveis concernentes a linguagens regulares - contexto Problemas decid´ıveis concernentes a linguagens livres-do-
    • 4.2 O Problema da Parada - O m´etodo da diagonalizac¸ ˜ao - O problema da parada ´e indecid´ıvel - Uma linguagem Turing-irreconhec´ıvel
      • Exerc´ıcios, Problemas, e Soluc¸˜oes
  • 5 Redutibilidade
    • 5.1 Problemas Indecid´ıveis da Teoria de Linguagens - Reduc¸ ˜oes via hist ´orias de computac¸ ˜ao
    • 5.2 Um Problema Indecid´ıvel Simples
    • 5.3 Redutibilidade por Mapeamento - Func¸ ˜oes Comput´aveis - Definic¸ ˜ao formal de redutibilidade por mapeamento
      • Exerc´ıcios, Problemas, e Soluc¸˜oes
  • 6 T ´op. Avanc¸ ados em Teoria da Computabilidade
    • 6.1 O Teorema da Recurs˜ao - Auto-referˆencia - Terminologia para o teorema da recurs˜ao - Aplicac¸ ˜oes
    • 6.2 Decidibilidade de teorias l ´ogicas - Uma teoria decid´ıvel - Uma teoria indecid´ıvel
    • 6.3 Turing-Redutibilidade
    • 6.4 Uma Definic¸ ˜ao de Informac¸ ˜ao - Descric¸ ˜oes de comprimento m´ıinimo - Otimalidade da definic¸ ˜ao - Cadeias incompress´ıveis e aleatoriedade
      • Exerc´ıcios, Problemas, e Soluc¸˜oes
  • Parte Tr ˆes: Teoria da Complexidade
  • 7 Complexidade de Tempo
    • 7.1 Medindo Complexidade - Notac¸ ˜ao O-grande e o-pequeno viii ´INDICE - Analisando algoritmos - Relacionamentos de complexidade entre modelos
    • 7.2 A Classe P - Tempo polinomial - Exemplos de problemas em P
    • 7.3 A Classe NP - Exemplos de problemas em NP - A quest˜a P versus NP
    • 7.4 NP-completetude - Redutibilidade em tempo polinomial - Definic¸ ˜ao de NP-completude - O Teorema de Cook–Levin
    • 7.5 Problemas NP-completos Adicionais - O problema da cobertura de v ´ertices - O problema do caminho hamiltoniano - O problema da soma de subconjuntos
      • Exerc´ıcios, Problemas, e Soluc¸˜oes
  • 8 Complexidade de Espac¸ o
    • 8.1 Teorema de Savitch
    • 8.2 A Classe PSPACE
    • 8.3 PSPACE-completude - O problema TQBF - Estrat´egias vencedoras para jogos - Geografia generalizada
    • 8.4 As Classes L e NL
    • 8.5 NL-completude - Busca em grafos
    • 8.6 NL ´e igual a coNL
      • Exerc´ıcios, Problemas, e Soluc¸˜oes
  • 9 Intratabilidade
    • 9.1 Teoremas de Hierarquia - Completude de espac¸o exponencial
    • 9.2 Relativizac¸ ˜ao - Limites do m´etodo da diagonalizac¸ ˜ao
    • 9.3 Complexidade de Circuitos
      • Exerc´ıcios, Problemas, e Soluc¸˜oes
  • 10 T ´op. Avanc¸ ados em Teoria da Complexidade
    • 10.1 Algoritmos de Aproximac¸ ˜ao
    • 10.2 Algoritmos Probabil´ısticos - A classe BPP - Primalidade - Programas ramificantes l ˆe-uma-vez
  • 10.3 Alternac¸ ˜ao ´INDICE ix - Tempo e espac¸o alternante - A hierarquia de tempo Polinomial
  • 10.4 Sistemas de Prova Interativa - N˜ao-isomorfismo de grafos - Definic¸ ˜ao do modelo - IP = PSPACE
  • 10.5 Computac¸ ˜ao Paralela - Circuitos booleanos uniformes - A classe NC - P-completude
  • 10.6 Criptografia - Chaves secretas - Criptossistemas de chave-p ´ublica - Func¸ ˜oes unidirecionais - Func¸ ˜oes alc¸ap˜ao
    • Exerc´ıcios, Problemas, e Soluc¸˜oes
  • Bibliografia Selecionada
  • Indice Remissivo´

xii PREF ´ACIO `A PRIMEIRA EDIC¸ ˜AO

se perder em detalhes cansativos. Claro que a ´unica maneira de determinar se teoria lhe interessa ´e tentar aprendˆe-la. Teoria ´e relevante para a pr´atica. Ela prov ˆe ferramentas conceituais que os praticantes usam em engenharia da computac¸ ˜ao. Projetar uma nova lingua- gem de programac¸ ˜ao para uma aplicac¸ ˜ao especializada? O que voc ˆe aprendeu sobre gram´aticas neste curso vem bem a calhar. Lidar com busca por cadeias e casamento de padr ˜oes? Lembre-se de autˆomatos finitos e express˜oes regulares. Confrontado com um problema que parece requerer mais tempo de computador do que vocˆe pode suportar? Pense no que voc ˆe aprendeu sobre NP-completude. V´arias ´areas de aplicac¸ ˜ao tais como protocolos criptogr´aficos modernos, se sus- tentam em princ´ıpios te ´oricos que vocˆe vai aprender aqui. Teoria tamb´em ´e relevante para voc ˆe porque ela lhe mostra um lado mais simples, e mais elegante, dos computadores, os quais normalmente considera- mos como sendo m´aquinas complicadas. Os melhores projetos e aplicac¸ ˜oes de computadores s˜ao concebidos com elegˆancia em mente. Um curso te ´orico pode elevar seu sentido est ´etico e ajud´a-lo a construir sistemas mais bonitos. Finalmente, teoria ´e bom para vocˆe porque estud´a-la expande sua mente. Tec- nologia de computadores muda rapidamente. Conhecimento t ´ecnico espec´ıfico, embora ´util hoje, fica desatualizado em apenas uns poucos anos. Considere por outro lado as habilidades de pensar, exprimir-se claramente e precisamente, para resolver problemas, e saber quando voc ˆe n˜ao resolveu um problema. Essas habi- lidades tˆem valor duradouro. Estudar teoria treina voc ˆe nessas ´areas. Considerac¸ ˜oes pr´aticas `a parte, quase todo mundo trabalhando com compu- tadores tem curiosidade sobre essas criac¸ ˜oes impressionantes, suas capacidades, e suas limitac¸ ˜oes. Um novo ramo da matem´atica cresceu nos ´ultimos 30 anos para responder a certas quest ˜oes b´asicas. Aqui est´a uma que permanece sem soluc¸ ˜ao: Se eu lhe der um n ´umero grande, digamos, com 500 d´ıgitos, vocˆe pode encontrar seus fatores (os n ´umeros que o dividem), em uma quantidade de tempo razo ´avel? Mesmo usando um supercomputador, ningu ´em atualmente conhece como fazer isso em todos os casos sem o tempo de vida do universo! O problema da fatorac¸ ˜ao est´a relacionado a certos c ´odigos secretos em criptossistemas modernos. Encon- tre um maneira r´apida de fatorar e a fama ´e toda sua!

AO( `A) EDUCADOR(A)

Este livro pretende ser um texto para o final da graduac¸ ˜ao ou o in´ıcio da p ´os- graduac¸ ˜ao em teoria da computac¸ ˜ao. Ele cont´em um tratamento do assunto desenhado em torno de teoremas e provas. Fiz algum esforc¸o para acomodar estudantes com pouca experi ˆencia pr´evia em provar teoremas, embora estudantes mais experientes ter˜ao uma vida mais f´acil. Meu objetivo principal ao apresentar o material tem sido torn´a-lo claro e interessante. Ao fazer isso, tenho enfatizado a intuic¸ ˜ao e “a grande figura” no assunto em detrimento de alguns detalhes de mais baixo n´ıvel. Por exemplo, muito embora apresente o m ´etodo de prova por induc¸ ˜ao no Cap´ıtulo 0 juntamente com outros preliminares matem´aticos, ela n˜ao desempe- nha um papel importante subseq ¨uentemente. Geralmente n˜ao apresento as pro-

PREF ´ACIO `A PRIMEIRA EDIC¸ ˜AO xiii

vas por induc¸ ˜ao usuais da corretude de v´arias construc¸ ˜oes relativas a aut ˆomatos. Se apresentadas claramente, essas construc¸ ˜oes convencem e n˜ao necessitam de muito argumento. Uma induc¸ ˜ao pode confundir ao inv´es de esclarecer porque a pr ´opria induc¸ ˜ao ´e uma t´ecnica um tanto sofisticada que muitos acham misteri- osa. Trabalhar o ´obvio com uma induc¸ ˜ao corre o risco de ensinar aos estudantes que prova matem´atica ´e uma manipulac¸ ˜ao formal em vez de ensin´a-los o que ´e e o que n˜ao ´e um argumento cogente. Um segundo exemplo ocorre nas Partes II e III, onde descrevo algoritmos em prosa ao inv´es de pseudoc ´odigo. N˜ao gasto muito tempo programando m´aquinas de Turing (ou quaisquer outros modelos formais). Estudantes hoje v ˆem com uma formac¸ ˜ao em programac¸ ˜ao e acham que a tese de Church–Turing ´e auto- evidente. Da´ı n˜ao apresento simulac¸ ˜oes excessivamente longas de um modelo por outro para estabelecer sua equival ˆencia. Al´em de dar intuic¸ ˜ao adicional e suprimir alguns detalhes, dou o que poderia ser chamado uma apresentac¸ ˜ao cl´assica do material. Muitos te ´oricos achar˜ao a escolha do material, terminologia, e ordem de apresentac¸ ˜ao consistente com os de outros livros-texto largamente utilizados. Introduz´ı terminologia original em apenas uns poucos lugares, quando achei a terminologia padr˜ao particularmente obscura ou confusa. Por exemplo introduzo o termo redutibilidade por mapea- mento ao inv´es de redutibilidade muitos-para-um. Pr´atica por meio de resoluc¸ ˜ao de problemas ´e essencial para aprender qual- quer assunto matem´atico. Neste livro, os problemas s˜ao organizados em duas categorias principais chamadas Exerc´ıcios e Problemas. Os Exerc´ıcios revisam definic¸ ˜oes e conceitos. Os Problemas requerem alguma engenhosidade. Pro- blemas marcados com um asterisco s˜ao mais dif´ıceis. Tentei tornar tanto os Exerc´ıcios quanto os Problemas desafios interessantes.

A PRIMEIRA EDIC¸ ˜AO

Introduc¸ ˜ao `a Teoria da Computac¸ ˜ao primeiro apareceu como uma Edic¸ ˜ao Preli- minar em capa mole. A presente edic¸ ˜ao difere da Edic¸ ˜ao Preliminar de v´arias maneiras substanciais. Os tr ˆes ´ultimos cap´ıtulos s˜ao novos: Cap´ıtulo 8 so- bre complexidade de espac¸o; Cap´ıtulo 9 sobre intratabilidade demonstr´avel; e Cap´ıtulo 10 sobre t ´opicos avanc¸ados em teoria da complexidade. O Cap´ıtulo 6 foi expandido para incluir v´arios t ´opicos avanc¸ados em teoria da computabili- dade. Outros cap´ıtulos foram melhorados atrav ´es da inclus˜ao de exemplos e exerc´ıcios adicionais. Coment´arios de instrutores e estudantes que usaram a Edic¸ ˜ao Preliminar fo- ram ´uteis para o polimento dos Cap´ıtulos 0 a 7. Obviamente, os erros que eles reportaram foram corrigidos nesta edic¸ ˜ao. Os Cap´ıtulos 6 e 10 d˜ao um apanhado de v´arios t ´opicos mais avanc¸ados em teorias de computabilidade e complexidade. Eles n˜ao se pretendem compreen- der uma unidade coesa da maneira que os cap´ıtulos remanescentes o s˜ao. Esses cap´ıtulos foram inclu´ıdos para permitir ao instrutor selecionar t ´opicos opcionais que podem ser de interesse do estudante mais exigente. Os pr ´oprios t ´opicos variam amplamente. Alguns, tais como Turing-redutibilidade e alternac¸˜ao , s ˜ao ex-

PREF ´ACIO `A PRIMEIRA EDIC¸ ˜AO xv

dreich, Brian Grossman, David Harel, Micha Hofri, Dung T. Huynh, Neil Jones, H. Chad Lane, Kevin Lin, Michael Loui, Silvio Micali, Tadao Murata, Christos Papadimitriou, Vaughan Pratt, Daniel Rosenband, Brian Scassellati, Ashish Sharma, Nir Shavit, Alexander Shen, Ilya Shlyakhter, Matt Stallman, Perry Susskind, Y. C. Tay, Joseph Traub, Osamu Watanabe, Peter Widemayer, David Williamson, Derick Wood, e Charles Yang pelos coment´arios, sugest ˜oes, e assistˆencia a medida que a escrita progrediu. As seguintes pessoas acrescentaram coment´arios que melhoraram este livro: Isam M. Abdelhameed, Eric Allender, Michelle Atherton, Rolfe Blodgett, Al Briggs, Brian E. Brooks, Jonathan Buss, Jin Yi Cai, Steve Chapel, David Chow, Michael Ehrlich, Yaakov Eisenberg, Farzan Fallah, Shaun Flisakowski, Hjalmtyr Hafsteinsson, C. R. Hale, Maurice Herlihy, Vegard Holmedahl, Sandy Irani, Kevin Jiang, Rhys Price Jones, James M. Jowdy, David M. Martin Jr., Manrique Mata-Montero, Ryota Matsuura, Thomas Minka, Farooq Mohammed, Tadao Murata, Jason Murray, Hideo Nagahashi, Kazuo Ohta, Constantine Papageor- giou, Joseph Raj, Rick Regan, Rhonda A. Reumann, Michael Rintzler, Arnold L. Rozenberg, Larry Roske, Max Rozenoer, Walter L. Ruzzo, Sanathan Sahgal, Leonard Schulman, Steve Seiden, Joel Seiferas, Ambuj Singh, David J. Stucki, Jayram S. Thathachar, H. Venkateswaran, Tom Whaley, Christopher Van Wyk, Kyle Young, and Kyoung Hwan Yun. Robert Sloan usou uma vers˜ao anterior do manuscrito deste livro em uma turma que ele ensinou e me passou inestim´aveis coment´arios e id´eias de sua experiˆencia com o manuscrito. Mark Herschberg, Kazuo Ohta, e Latanya Swe- eney leram partes do manuscrito e sugeriram melhoramentos extensos. Shafi Goldwasser me ajudou com o material do Cap´ıtulo 10. Receb´ı suporte t´ecnico especialista de William Baxter da Superscript, que es- creveu o pacote de macros LATEX que implementa o desenho interior, e de Larry Nolan do departamento de matem´atica do MIT, que mant ´em tudo funcionando. Tem sido um prazer trabalhar com o pessoal da PWS Publishing na criac¸ ˜ao do produto final. Menciono Michael Sugarman, David Dietz, Elise Kaiser, Mo- nique Calello, Susan Garland e Tanja Brull porque tive maior contato com eles, mas sei que muitos outros estiveram envolvidos tamb ´em. Obrigado a Jerry Mo- ore pela edic¸ ˜ao de c ´opia ( _copy editing_ ), a Diane Levy pelo projeto da capa, e a Catherine Hawkes pelo desenho do interior. Agradec¸oa National Science Foundation pelo apoio fornecido sob o grant CCR-9503322. Meu pai, Kenneth Sipser, e irm˜a, Laura Sipser, converteram os diagramas do livro para forma eletr ˆonica. Minha outra irm˜a, Karen Fisch, nos salvou em v´arias emergˆencias computacionais, e minha m˜ae, Justine Sipser, ajudou com os conselhos maternos. Agradec¸o-os por contribuir sob circunstˆancias dif´ıceis, incluindo prazos insanos e software recalcitrante. Finalmente, meu amor vai para minha esposa, Ina, e minha filha, Rachel. Obrigado por aguentar tudo isso.

Cambridge, Massachusetts Michael Sipser Outubro de 1996

xviii PREF ´ACIO `A SEGUNDA EDIC¸ ˜AO

outro lado, usar reduc¸ ˜oes para provar indecidibilidade d´a uma preparac¸ ˜ao mais valiosa para as reduc¸ ˜oes que aparecem em teoria da complexidade. Devo aos meus assistentes de ensino, Ilya Baran, Sergi Elizalde, Rui Fan, Jo- nathan Feldman, Venkatesan Guruswami, Prahladh Harsha, Christos Kapoutsis, Julia Khodor, Adam Klivans, Kevin Matulef, Ioana Popescu, April Rasala, Sofya Raskhodnikova, and Iuliu Vasilescu que me ajudaram a confeccionar alguns dos novos problemas e soluc¸ ˜oes. Ching Law, Edmond Kayi Lee, e Zulfikar Ramzan tamb´em contribu´ıram para as soluc¸ ˜oes. Agradec¸o a Victor Shoup por chegar com uma maneira simples de reparar a lacuna na an´alise do algoritmo de prima- lidade probabil´ıstico que aparece na primeira edic¸ ˜ao. Aprecio os esforc¸os das pessoas na Course Technology em incentivar a mim e as outras partes deste projeto, especialmente Alyssa Pratt e Aimee Poi- rier. Muito obrigado a Gerald Eisman, Weizhen Mao, Rupak Majumdar, Ch- ris Umans, e Christopher Wilson por suas revis ˜oes. Devo a Jerry Moore por seu excelente trabalho de copy-editing e a Laura Segel da ByteGraphics ([email protected]) por sua confecc¸ ˜ao maravilhosamente precisa das figuras. O volume de mensagens eletr ˆonicas que receb´ı tem sido mais do que eu es- perava. Ouvir de tantos de voc ˆes de tantos lugares diferentes tem sido absolu- tamente prazeroso, e tenho tentado responder a todos em algum momento— minhas desculpasaqueles que deixei de responder. Relacionei aqui as pessoas que deram sugest ˜oes que especificamente afetaram esta edic¸ ˜ao, mas agradec¸o a todos por sua correspondˆencia. Luca Aceto, Arash Afkanpour, Rostom Aghanian, Eric Allender, Karun Bakshi, Brad Ballinger, Ray Bartkus, Louis Barton, Arnold Beckmann, Mihir Bellare, Kevin Trent Bergeson, Matthew Berman, Rajesh Bhatt, Somenath Biswas, Lenore Blum, Mauro A. Bonatti, Paul Bondin, Nicholas Bone, Ian Bratt, Gene Browder, Doug Burke, Sam Buss, Vladimir Bychkovsky, Bruce Car- neal, Soma Chaudhuri, Rong-Jaye Chen, Samir Chopra, Benny Chor, John Clausen, Allison Coates, Anne Condon, Jeffrey Considine, John J. Crashell, Claude Crepeau, Shaun Cutts, Susheel M. Daswani, Geoff Davis, Scott Dex- ter, Peter Drake, Jeff Edmonds, Yaakov Eisenberg, Kurtcebe Eroglu, Georg Essl, Alexander T. Fader, Farzan Fallah, Faith Fich, Joseph E. Fitzgerald, Perry Fizzano, David Ford, Jeannie Fromer, Kevin Fu, Atsushi Fujioka, Michel Gal- ley, K. Ganesan, Simson Garfinkel, Travis Gebhardt, Peymann Gohari, Ganesh Gopalakrishnan, Steven Greenberg, Larry Griffith, Jerry Grossman, Rudolf de Haan, Michael Halper, Nick Harvey, Mack Hendricks, Laurie Hiyakumoto, Steve Hockema, Michael Hoehle, Shahadat Hossain, Dave Isecke, Ghaith Issa, Raj D. Iyer, Christian Jacobi, Thomas Janzen, Mike D. Jones, Max Kanovitch, Aaron Kaufman, Roger Khazan, Sarfraz Khurshid, Kevin Killourhy, Seungjoo Kim, Victor Kuncak, Kanata Kuroda, Suk Y. Lee, Edward D. Legenski, Li-Wei Lehman, Kong Lei, Zsolt Lengvarszky, Jeffrey Levetin, Baekjun Lim, Karen Li- vescu, Thomas Lasko, Stephen Louie, TzerHung Low, Wolfgang Maass, Arash Madani, Michael Manapat, Wojciech Marchewka, David M. Martin Jr., Anders Martinson, Lyle McGeoch, Alberto Medina, Kurt Mehlhorn, Nihar Mehta, Al- bert R. Meyer, Thomas Minka, Mariya Minkova, Daichi Mizuguchi, G. Allen

PREF ´ACIO `A SEGUNDA EDIC¸ ˜AO xix

Morris III, Damon Mosk-Aoyama, Xiaolong Mou, Paul Muir, German Muller, Donald Nelson, Gabriel Nivasch, Mary Obelnicki, Kazuo Ohta, Thomas M. Oleson, Jr., Curtis Oliver, Owen Ozier, Rene Peralta, Alexander Perlis, Holger Petersen, Detlef Plump, Robert Prince, David Pritchard, Bina Reed, Nicholas Riley, Ronald Rivest, Robert Robinson, Christi Rockwell, Phil Rogaway, Max Rozenoer, John Rupf, Teodor Rus, Larry Ruzzo, Brian Sanders, Cem Say, Kim Schioett, Joel Seiferas, Joao Carlos Setubal, Geoff Lee Seyon, Mark Skandera, Bob Sloan, Geoff Smith, Marc L. Smith, Stephen Smith, Alex C. Snoeren, Guy St-Denis, Larry Stockmeyer, Radu Stoleru, David Stucki, Hisham M. Sueyllam, Kenneth Tam, Elizabeth Thompson, Michel Toulouse, Eric Tria, Chittaranjan Tripathy, Dan Trubow, Hiroki Ueda, Giora Unger, Kurt L. Van Etten, Jesir Vargas, Bienvenido Velez-Rivera, Kobus Vos, Alex Vrenios, Sven Waibel, Marc Waldman, Tom Whaley, Anthony Widjaja, Sean Williams, Joseph N. Wilson, Chris Van Wyk, Guangming Xing, Vee Voon Yee, Cheng Yongxi, Neal Young, Timothy Yuen, Kyle Yung, Jinghua Zhang, Lilla Zollei.

Mais que tudo agradec¸o a minha fam´ılia—Ina, Rachel, e Aaron—por sua paciˆencia, compreens˜ao, e amor enquanto eu sentava por horas infind´aveis aqui em frente `a tela do meu computador.

Cambridge, Massachusetts Michael Sipser Dezembro de 2004

I N T R O D U C¸ A O˜

Comec¸amos com uma vis˜ao geral daquelas ´areas da teoria da computac¸ ˜ao que apresentamos neste curso. A seguir, voc ˆe ter´a uma chance de aprender e/ou revisar alguns conceitos matem´aticos que vocˆe vai precisar mais adiante.

AUT ˆOMATOS, COMPUTABILIDADE, E COMPLEXIDADE

Este livro enfoca tr ˆes ´areas tradicionalmente centrais da teoria da computac¸ ˜ao: aut ˆomatos, computabilidade, e complexidade. Elas s˜ao interligadas pela quest˜ao:

Quais s˜ao as capacidades e limitac¸˜oes fundamentais dos computadores?

Essa quest˜ao vai l´a atr´as nos anos 1930’s quando l ´ogicos matem´aticos primeiro comec¸aram a explorar o significado de computac¸ ˜ao. Avanc¸os tecnol ´ogicos desde aquele tempo tˆem aumentado enormemente nossa capacidade de computar e t ˆem trazido essa quest˜ao do dom´ınio da teoria para o mundo do interesse pr´atico. Em cada uma das trˆes ´areas—aut ˆomatos, computabilidade, e complexidade— essa quest˜ao ´e interpretada diferentemente, e as respostas variam conforme a interpretac¸ ˜ao. Ap ´os este cap´ıtulo introdut ´orio, exploraremos cada ´area em uma 1

2 CAP´ITULO 0 / INTRODUC¸ ˜AO

parte separada deste livro. Aqui, introduzimos essas partes em ordem reversa porque comec¸ando do fim voc ˆe pode entender melhor a raz˜ao para o in´ıcio.

TEORIA DA COMPLEXIDADE

Problemas computacionais v ˆem em diferentes variedades: alguns s˜ao f´aceis e alguns s˜ao dif´ıceis. Por exemplo, o problema da ordenac¸ ˜ao ´e um f´acil. Diga- mos que vocˆe precise de arranjar uma lista de n ´umeros em ordem ascendente. Mesmo um pequeno computador pode ordenar um milh˜ao de n ´umeros bastante rapidamente. Compare isso a um problema de escalonamento. Digamos que vocˆe tenha que encontrar um escalonamento de classes para a universidade in- teira para satisfazer algumas restric¸ ˜oes razo´aveis, tal como nunca duas aulas t ˆem lugar na mesma sala no mesmo tempo. O problema do escalonamento parece ser muito mais dif´ıcil que o problema da ordenac¸ ˜ao. Se vocˆe tem somente mil aulas, encontrar o melhor escalonamento pode requerer s ´eculos, at´e mesmo com um supercomputador.

O que faz alguns problemas computacionalmente dif´ıceis e outros f´ace is?

Essa ´e a quest˜ao central da teoria da complexidade. Notavelmente, n˜ao sabemos a resposta para ela, embora ela tenha sido intensamente pesquisada durante os ultimos 35 anos. Mais adiante, exploramos essa fascinante quest ˜´ ao e algumas de suas ramificac¸ ˜oes. Em uma das importantes conquistas da teoria da complexidade at ´e agora, pesquisadores descobriram um elegante esquema para classificar problemas con- forme sua dificuldade computacional. Ele ´e an´alogo `a tabela peri ´odica para clas- sificar elementos conforme suas propriedades qu´ımicas. Usando esse esquema, podemos demonstrar um m´etodo para dar evidˆencia de que certos problemas s˜ao computacionalmente dif´ıceis, ainda que sejamos incapazes de provar que eles o s˜ao. Vocˆe tem v´arias opc¸ ˜oes quando vocˆe se depara com um problema que parece ser computacionalmente dif´ıcil. Primeiro, entendendo qual aspecto do problema e a raiz da dificuldade, voc ˆ´ e pode ser capaz de alter´a-lo de modo que o problema seja mais facilmente sol ´uvel. Segundo, voc ˆe pode ser capaz de se contentar com menos que uma soluc¸ ˜ao perfeita para o problema. Em certos casos encontrar soluc¸ ˜oes que apenas aproximam a soluc¸ ˜ao perfeita ´e relativamente f´acil. Terceiro, alguns problemas s˜ao dif´ıceis somente na situac¸ ˜ao do pior caso, por´em f´aceis na maior parte do tempo. Dependendo da aplicac¸ ˜ao, vocˆe pode ficar satisfeito com um procedimento que ocasionalmente ´e lento mas usualmente roda rapida- mente. Finalmente, voc ˆe pode considerar tipos alternativos de computac¸ ˜ao, tais como computac¸ ˜ao aleatorizada, que pode acelerar certas tarefas. Uma ´area aplicada que tem sido afetada diretamente pela teoria da comple- xidade ´e o velho campo da criptografia. Na maioria das ´areas, um problema computacional f´acil ´e prefer´ıvel a um dif´ıcil porque os f´aceis s˜ao mais baratos de resolver. Criptografia ´e incomum porque ela especificamente requer pro- blemas computacionais que sejam dif´ıceis, ao inv´es de f´aceis, porque c ´odigos secretos tˆem que ser dif´ıceis de quebrar sem a chave ou senha secreta. A teoria