




























































































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Livro texto da disciplina
Tipologia: Notas de estudo
1 / 479
Esta página não é visível na pré-visualização
Não perca as partes importantes!





























































































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