Artigo Complexidade
Artigo Complexidade
Artigo Complexidade
Instituto de Computacao
Universidade Estadual de Campinas
Banca Examinadora:
Prof. Dr. Arnaldo Vieira Moura (Orientador)
Prof. Dr. Flavio K. Miyazawa
Instituto de Computacao - UNICAMP
Prof. Dr. Jose Coelho de Pina
Instituto de Matematica e Estatstica - USP
Prof. Dr. Julio C. Lopez Hernandez (Suplente)
Instituto de Computacao - UNICAMP
Profa. Dra. Ana Cristina Vieira de Melo (Suplente)
Instituto de Matematica e Estatstica - USP
iv
Resumo
A teoria de complexidade computacional procura estabelecer limites para a eficiencia
dos algoritmos, investigando a dificuldade inerente dos problemas computacionais. O problema P vs NP e uma questao central em complexidade computacional. Informalmente,
ele procura determinar se, para uma classe importante de problemas computacionais, a
busca exaustiva por solucoes e essencialmente a melhor alternativa algortmica possvel.
Esta dissertacao oferece tanto uma introducao classica ao tema, quanto uma exposicao a diversos teoremas mais avancados, resultados recentes e problemas em aberto. Em
particular, o metodo da diagonalizacao e discutido em profundidade.
Os principais resultados obtidos por diagonalizacao sao os teoremas de hierarquia de
tempo e de espaco (Hartmanis e Stearns [54, 104]). Apresentamos uma generalizacao
desses resultados, obtendo como corolarios os teoremas classicos provados por Hartmanis
e Stearns. Essa e a primeira vez que uma prova unificada desses resultados aparece na
literatura.
Abstract
Computational complexity theory is the field of theoretical computer science that aims
to establish limits on the efficiency of algorithms. The main open question in computational complexity is the P vs NP problem. Intuitively, it states that, for several important
computational problems, there is no algorithm that performs better than a trivial exhaustive search.
We present here an introduction to the subject, followed by more recent and advanced
results. In particular, the diagonalization method is discussed in detail. Although it is a
classical technique in computational complexity, it is the only method that was able to
separate strong complexity classes so far.
Some of the most important results in computational complexity theory have been
proven by diagonalization. In particular, Hartmanis and Stearns [54, 104] proved that,
given more resources, one can solve more computational problems. These results are
known as hierarchy theorems. We present a generalization of the deterministic hierarchy
theorems, recovering the classical results proved by Hartmanis and Stearns as corollaries.
This is the first time that such unified treatment is presented in the literature.
vi
Pref
acio
A complexidade computacional e uma disciplina fundamental para a ciencia da computacao. Seus resultados sao elegantes, profundos, e muitas vezes imprevisveis. Espero,
sinceramente, que parte do meu fascnio e interesse por essa disciplina seja transmitido
ao leitor.
Esta dissertacao de mestrado foi escrita para ser usada por estudantes interessados em
aprender complexidade computacional. Existem excelentes livros [7, 47, 88, 103] sobre o
tema na literatura. Meu objetivo foi escrever um texto em portugues para ser usado de
forma complementar a essas obras. Por isso, certos topicos relevantes que sao muito bem
abordados nesses livros foram omitidos. Procurei destacar os metodos mais importantes
e apresentar alguns resultados avancados que nao sao discutidos em profundidade nesses
textos.
Ou
nico pre-requisito para leitura da dissertacao e um pouco de maturidade matematica, embora uma exposicao anterior a um curso de projeto e analise de algoritmos seja
u
til. Para facilitar a leitura, a maioria das demonstracoes sao feitas em detalhes.
Segue uma breve descricao de cada captulo da dissertacao.
Captulo 1: Introduc
ao. Neste captulo introduzimos os principais conceitos utilizados em complexidade computacional. Apos uma breve discussao sobre os objetivos dessa
disciplina, definimos o modelo computacional das Maquinas de Turing. Essas maquinas
formalizam a nocao de algoritmo utilizada em complexidade computacional. A seguir,
discutimos como medir a complexidade computacional de um algoritmo. Finalmente,
mostramos como provar um limitante inferior envolvendo um tipo de maquina de Turing
um pouco menos eficiente.
Captulo 2: Introduc
ao ao Problema P vs NP. Neste captulo abordamos o principal problema em aberto da teoria de complexidade computacional: a relacao entre as
classes de complexidade P e NP. Informalmente, o problema P vs NP procura determinar
se, para uma classe importante de problemas computacionais, a busca exaustiva por solucoes e essencialmente a melhor alternativa algortmica possvel. Apresentamos diversas
vii
viii
Agradecimentos
Aos meus pais, Carlos Magno de Oliveira e Helena Maria Carboni Oliveira, a` minha irma,
Iana Carboni Oliveira, e ao meu amor, Nayara Fonseca de Sa, por tudo de especial que
representam na minha vida.
Ao meu orientador, professor Arnaldo Veira Moura, por ter me dado a oportunidade e
liberdade para estudar diversos topicos do meu interesse, por tantos conselhos sabios oferecidos durante o mestrado, e por ter insistido constantemente para que eu melhorasse o
texto final desta dissertacao.
Aos professores Walter Carnielli e Orlando Lee, meus orientadores durante a graduacao,
por toda ajuda que me ofereceram naquele perodo.
Aos meus amigos dos primeiros anos de graduacao, agora fsicos e matematicos, por terem
despertado meu interesse pelos aspectos mais teoricos e fundamentais da ciencia.
Ao professor Cid Carvalho de Souza, por ter despertado meu interesse por complexidade
computacional atraves de suas aulas de projeto e analise de algoritmos.
Ao Anderson de Ara
ujo, por ter revisado os primeiros captulos da dissertacao.
Aos funcionarios do Instituto de Computacao, por toda assistencia prestada durante os
meus anos na Unicamp.
` FAPESP, pelo suporte financeiro oferecido durante o mestrado.
A
ix
Sum
ario
Resumo
Abstract
vi
Pref
acio
vii
Agradecimentos
ix
1 Introduc
ao
1.1 Motivacao . . . . . . . . . . . . . .
1.2 Computabilidade vs Complexidade
1.3 Complexidade Computacional . . .
1.4 O Problema P vs NP . . . . . . . .
1.5 Terminologia Basica e Notacao . .
1.6 Maquinas de Turing . . . . . . . .
1.7 Eficiencia dos Algoritmos . . . . . .
1.8 Um Exemplo de Limitante Inferior
1.9 Referencias Adicionais . . . . . . .
.
.
.
.
.
.
.
.
.
1
1
3
4
4
5
6
10
11
14
.
.
.
.
.
.
.
.
.
17
17
20
24
25
27
31
32
35
37
2 Introduc
ao ao Problema P vs NP
2.1 Introducao . . . . . . . . . . . . .
2.2 Definicao . . . . . . . . . . . . . .
2.3 Decisao vs Busca . . . . . . . . .
2.4 Uma Formulacao Alternativa . . .
2.5 Reducoes e Problemas Completos
2.6 Importancia Matematica . . . . .
2.7 Principais Abordagens . . . . . .
2.8 Resultados Basicos . . . . . . . .
2.9 Referencias Adicionais . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3 Simulac
ao e Diagonalizac
ao
3.1 Introducao . . . . . . . . . . . . . . .
3.2 Um Teorema Geral de Hierarquia . .
3.3 Consequencias do Resultado Anterior
3.4 O Teorema da Lacuna . . . . . . . .
3.5 A Hierarquia Nao-Determinstica . .
3.6 O Metodo da Completude . . . . . .
3.7 Referencias Adicionais . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4 O Problema P vs NP em Profundidade
4.1 A Hierarquia Polinomial . . . . . . . . . .
4.2 Alternancia . . . . . . . . . . . . . . . . .
4.3 Cotas Inferiores para SAT . . . . . . . . .
4.4 Reducoes e NP coNP . . . . . . . . . . .
4.5 O Teorema de Ladner . . . . . . . . . . .
4.6 NP-Completude, Isomorfismo e Densidade
Limites da Diagonalizac
ao
Introducao . . . . . . . . . . . . . . . . .
Uma Barreira Fundamental . . . . . . .
P vs NP e Resultados de Independencia
Resultados Adicionais . . . . . . . . . .
Oraculos Aleatorios . . . . . . . . . . . .
Relativizacao Positiva . . . . . . . . . .
O Argumento Contrario de Kozen . . . .
Possvel Superar a Relativizacao? . . .
E
Referencias Adicionais . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
39
39
44
49
51
53
55
57
.
.
.
.
.
.
.
.
59
59
66
70
74
77
81
86
88
.
.
.
.
.
.
.
.
.
91
91
94
96
99
100
102
103
104
106
6 Conclus
ao
107
Bibliografia
108
xi
Captulo 1
Introdu
c
ao
The most beautiful thing we can experience is the mysterious.
It is the source of all true art and science.
Albert Einstein.
Neste captulo introduzimos os principais conceitos utilizados em complexidade computacional. Apos uma breve discussao sobre os objetivos dessa disciplina, definimos o modelo computacional das Maquinas de Turing. Essas
maquinas formalizam a nocao de algoritmo utilizada em complexidade computacional. A seguir, discutimos como medir a complexidade computacional
de um algoritmo. Finalmente, mostramos como provar um limitante inferior
envolvendo um tipo de maquina de Turing um pouco menos eficiente.
1.1
Motivac
ao
Esta dissertacao de mestrado versa sobre uma das questoes mais profundas investigadas pela ciencia moderna. Antes de discutirmos a importancia do problema que vamos
estudar, convidamos o leitor a refletir sobre a seguinte questao:
Qual e o objetivo da ciencia da computacao?
De maneira geral, pode-se dizer que a ciencia da computacao procura entender as limitacoes e oportunidades oferecidas pelo nosso universo em relacao a nossa capacidade de
processar, armazenar e transmitir informacoes. Ainda que possa parecer ampla demais,
essa definicao ilustra razoavelmente bem a direcao das pesquisas em ciencia da compu1
Captulo 1. Introducao
tacao ao longo das decadas. Desde o advento dos primeiros computadores ate a epoca
das pesquisas em computacao quantica, tentamos entender e tirar vantagem do mundo
computacional ao nosso redor.
Embora a visao quantica do mundo traga consigo uma promessa de novas possiblidades
computacionais, diversos problemas fundamentais persistem no universo da computacao
classica, sendo que o mais importante deles e o problema P vs NP.
De modo fascinante, durante o seculo passado diversos pesquisadores mostraram que
existem barreiras fundamentais limitando a nossa capacidade de processar informacoes.
Por exemplo, demonstrou-se que existem problemas computacionais extremamente difceis. Em outras palavras, mesmo que pudessemos utilizar em conjunto os melhores
computadores atuais durante todo o tempo de vida do universo, nao seramos capazes de
encontrar solucoes para muitos problemas, embora elas existam.
A teoria de complexidade computacional procura classificar os problemas computaci uma disciplina relativamente recente,
onais de acordo com o seu grau de dificuldade. E
com muitos problemas em aberto e alguns resultados extraordinarios. O principal desafio
para os pesquisadores dessa disciplina e o desenvolvimento de metodos matematicos que
possam ser usados para provar que certos problemas computacionais sao inerentemente
difceis.
O problema P vs NP e uma questao central em complexidade computacional. Informalmente, ele procura determinar se, para uma classe importante de problemas computacionais, a busca exaustiva por solucoes e essencialmente a melhor alternativa algortmica
possvel. Infelizmente, essa nao e uma solucao viavel para milhares de problemas presentes
na fsica, biologica, matematica e outras disciplinas, mas e o melhor que sabemos fazer.
Apesar de ter sido intensamente estudado por decadas, o problema permanece em aberto.
Aparentemente, os metodos atuais utilizados em matematica e ciencia da computacao nao
sao suficientes para resolver o problema.
Sem d
uvida alguma, a solucao do problema P vs NP sera um grande passo para a cien razoavel supor que toda civilizacao avancada questionou em algum
cia da computacao. E
1.2
Computabilidade vs Complexidade
Apesar da nocao de algoritmo ser utilizada ha pelo menos dois mil anos, apenas no
seculo vinte o conceito de computacao foi formalmente definido e estudado. Isso ocorreu
principalmente devido a suspeita dos pesquisadores da epoca de que certos problemas
computacionais poderiam ser indecidveis por meio de computacao.
Para provar que um problema pode ser resolvido por um algoritmo, basta dar uma descricao detalhada de um procedimento finito capaz de resolver o problema computacional
em consideracao. Porem, para argumentar que determinada tarefa nao pode ser resolvida
por meio de computacao, torna-se necessaria a definicao formal do conceito de algoritmo.
Somente assim podemos provar que nenhum procedimento satisfazendo a definicao de
algoritmo e capaz de realizar a tarefa desejada.
Portanto, a primeira grande questao enfrentada pelos pesquisadores foi encontrar uma
definicao satisfatoria para esse conceito. De modo fascinante, verificou-se que todas as
definicoes propostas para a nocao de computacao eram equivalentes, ou seja, os diversos
modelos computacionais sugeridos resolviam o mesmo conjunto de problemas. Devido a
esse fato, a nocao de computacao se tornou um conceito cientfico robusto e fundamental.
A partir da definicao formal de algoritmo, amplamente aceita, os pesquisadores obtiveram sucesso em provar que existem problemas bem definidos que nao podem ser resolvidas
por meios algortmicos. A u
nica maneira de resolver esses problemas e abandonando algum requisito fundamental e indiscutvel da definicao de algoritmo, como o fato de um
programa de computador sempre terminar a sua computacao apos um n
umero finito de
passos, ou possuir uma descricao finita. A teoria de computabilidade tem como objetivo principal determinar quais problemas sao computaveis, ou seja, podem ser resolvidos
atraves de algoritmos.
A existencia de problemas indecidveis trouxe consequencias extraordinarias. Por
exemplo, a partir da indecidibilidade do problema da parada e possvel demonstrar que a
matematica e uma ciencia necessariamente incompleta. Isso significa que em qualquer axiomatizacao da matematica e possvel encontrar sentencas verdadeiras que nao podem ser
demonstradas a partir das regras e axiomas do sistema formal. Veja a secao de referencias
desta secao para mais detalhes.
A teoria de computabilidade fornece metodos para classificarmos quais problemas sao
solucionaveis por algoritmos. Por outro lado, a teoria de complexidade pode ser vista
como uma continuacao dessa disciplina, uma vez que ela particiona os problemas que
podem ser resolvidos por algoritmos em diversas classes, de acordo com a quantidade de
recursos computacionais necessarios e suficientes para resolver cada problema. Embora
a teoria de computabilidade seja uma disciplina fascinante, ela nao sera discutida nesta
dissertacao. Recomendamos que o leitor interessado em computabilidade procure alguma
Captulo 1. Introducao
1.3
Complexidade Computacional
A complexidade computacional e a area da ciencia da computacao que procura determinar por quais motivos certos problemas decidveis sao tao difceis de serem resolvidos
por computadores. Essa disciplina, praticamente inexistente ha quarenta anos, expandiuse tremendamente e atualmente e responsavel por boa parte das atividades de pesquisa
em teoria da computacao.
Desde a decada de sessenta, quando o uso de computadores deixou de ser restrito
a poucas instituicoes cientficas, os programadores perceberam que a existencia de um
algoritmo (programa) para uma tarefa nao era suficiente para que ela pudesse ser resolvida
por um computador. Foram descobertos muitos problemas praticos para os quais os
melhores algoritmos conhecidos demoravam tanto tempo para executar que inviabilizava
completamente a busca de respostas para o problema atraves de meios computacionas. A
grande questao era se essas observacoes eram uma consequencia da nossa incapacidade de
encontrar um algoritmo mais eficiente para o problema ou se resultavam de dificuldade
inerente do problema em consideracao.
Essa situacao levou `a ideia de se medir a dificuldade de determinadas tarefas com
respeito a` quantidade de recursos computacionais necessarios e suficientes para computalas. Isso, por sua vez, levou `a classificacao dos problemas que podem ser resolvidos
algoritmicamente de acordo com o seu grau de dificuldade.
Os principais objetivos da teoria que estudaremos sao, portanto: estimar os recursos
computacionais necessarios e suficientes para solucionar problemas algortmicos concretos;
identificar e definir a nocao de eficiencia ou tratabilidade dos problemas computacionais; desenvolver metodos para classifica-los dentro de diversas classes de complexidade;
comparar a eficiencia de diversos modelos computacionais distintos.
1.4
O Problema P vs NP
Por sua vez, a classe NP contem os problemas computacionais com solucoes que podem
ser verificadas de forma eficiente. Intuitivamente, o problema P vs NP pergunta como
essas duas classes estao relacionadas, ou seja, se para todo problema cujas solucoes sao
eficientemente checaveis tambem existe um algoritmo eficiente capaz de encontrar tais
solucoes. Apesar de ser uma questao envolvendo classes de problemas, a existencia de
problemas completos para a classe NP torna interessante o estudo de alguns problemas
computacionais especficos.
Dado um problema computacional pertencente a` classe NP, existe um algoritmo muito
simples capaz de resolve-lo. Ele procede da seguinte forma: gera todas as respostas
possveis para uma dada instancia do problema e entao aplica um algoritmo capaz de
checar essas respostas (a existencia desse u
ltimo e garantida pela definicao de NP). Uma
desvantagem dessa abordagem e que o algoritmo final nao e eficiente. Enunciado de outra
forma, o problema P vs NP procura responder se essa busca exaustiva por solucoes pode
ser sempre evitada. Embora a maioria dos pesquisadores acredite que a busca exaustiva
seja essencial, ninguem ate agora foi capaz de exibir uma prova matematica desse fato.
O problema P vs NP e de fundamental importancia na criptografia moderna. A seguranca da Internet e da maioria das transacoes financeiras depende de algumas hipoteses,
tais como a dificuldade inerente de se fatorar n
umeros inteiros muito grandes. Se P =
NP, essas hipoteses sao falsas e a seguranca de tais transacoes estaria comprometida.
A existencia de um algoritmo eficiente para algum problema NP-completo (veja a
secao 2.5) teria consequencias fantasticas nao so para a ciencia da computacao, mas tambem para muitas outras areas de natureza distinta. Por exemplo, isso transformaria a
matematica contemporanea, ao permitir que um computador encontrasse provas formais
de diversos teoremas que possuam uma demonstracao de tamanho razoavel (veja a secao 2.6). Essas consideracoes valem tambem para diversos outros trabalhos criativos que
atualmente listamos como inerentemente humanos. Esse e um problema fundamental na
inteligencia artificial, cuja solucao poderia ser facilitada se tivessemos algoritmos praticos
para problemas NP-completos.
1.5
Terminologia B
asica e Nota
c
ao
Captulo 1. Introducao
1.6
M
aquinas de Turing
Captulo 1. Introducao
10
Captulo 1. Introducao
(ii) Toda maquina de Turing (vista como um objeto matematico) e representada por
infinitas palavras.
Finalmente, observamos que os programas escritos em linguagens de programacao
modernas podem ser eficientemente simulados por maquinas de Turing (veja a secao de
referencias adicionais no fim do captulo). Por isso, em termos de poder computacional,
temos a equivalencia Algoritmos = Maquinas de Turing = Programas de Computador.
1.7
Efici
encia dos Algoritmos
11
1.8
Os pesquisadores que estudam complexidade estao interessados em determinar a complexidade computacional de cada problema. Embora essa seja uma tarefa bastante difcil
para a maioria dos problemas computacionais, e possvel caracterizar precisamente a complexidade de algumas tarefas simples.
Nesta secao vamos considerar apenas maquinas de Turing com uma u
nica fita. Como
vamos trabalhar apenas com linguagens, nao ha necessidade de ter uma fita separada para
sada. Por conveniencia, vamos assumir que existem dois estados especiais qaceitar e qrejeitar
no conjunto de estados Q de cada maquina de Turing. Uma maquina M aceita a palavra
x se em algum passo de sua computacao ela entra no estado qaceitar . Analogamente, M
rejeita x caso seja colocada no estado qrejeitar durante sua computacao. Uma vez nesses
estados, M termina sua computacao imediatamente.
12
Captulo 1. Introducao
Definic
ao 1.6. [Complexidade de Kolmogorov]. Seja = (M1 , M2 , . . .) uma codificacao
das maquinas de Turing no alfabeto {0, 1} a partir das respectivas funcoes de transicao.
Para cada palavra x {0, 1}, a sua complexidade de Kolmogorov em relacao a e:
K (x) = min{|Mj | : Mj () = x}.
Lema 1.7. [Palavras Incompressveis]. Para todo n N existe uma palavra x de tamanho
n tal que K (x) n.
Demonstracao. Existem 2n palavras de tamanho n e apenas 2n 1 palavras de tamanho
menor ou igual a n1. Como cada maquina de Turing representa no maximo uma palavra,
deve existir alguma palavra de tamanho n que nao pode ser representada no sentido da
complexidade de Kolmogorov por maquinas de Turing de tamanho menor que n.
O lema anterior prova que existem palavras incompressveis. Vamos agora descrever a
ideia utilizada na prova do limitante inferior (n2 ) para PALIN para maquinas de Turing
com uma u
nica fita. Em primeiro lugar, vamos mostrar que o tempo de execucao de
qualquer algoritmo decidindo PALIN pode ser usado para provar um limitante superior na
complexidade de Kolmogorov das palavras do alfabeto {0, 1}? . Depois disso mostraremos
que, caso o algoritmo seja rapido demais (utilize o(n2 ) passos), entao teremos uma violacao
do fato de que existem palavras incompressveis. Esse argumento e conhecido como metodo
da incompressibilidade. A seguir apresentamos a prova formal desse resultado.
Teorema 1.8. Seja M uma maquina de Turing de fita u
nica que decide PALIN. Entao
2
a complexidade de tempo de M e (n ).
Demonstracao. Considere a computacao de M com uma entrada w. Dizemos que em um
determinado passo da computacao de M ocorre um cruzamento entre as celulas i e i + 1
da fita com o estado q se: (i) antes desse passo a cabeca de leitura de M se encontra
na celula i ou na celula i + 1 da fita; (ii ) apos esse passo a cabeca de leitura de M
tambem se encontra na celula i ou na celula i + 1 da fita; (iii) o estado de M apos esse
passo e q. A sequencia de cruzamentos de M com entrada w entre as celulas i e i + 1
da fita sera denotada por Si (M, w) = (q1 , . . . , qm ), de forma que todos os cruzamentos
existentes aparecem em Si (M, w) e os mesmos estao ordenados de acordo com o n
umero
do passo da computacao no momento do cruzamento. Observe que, dada uma sequencia
de cruzamentos, cruzamentos de n
umero mpar sao oriundos de passos da computacao de
M que entram na posicao i + 1 da fita a partir da posicao i, e cruzamentos de n
umero
par sao oriundos de passos da computacao de M que entram na posicao i da fita a partir
da posicao i + 1.
Do ponto de vista das primeiras i posicoes da fita, tudo o que importa e o processamento que ocorre dentro dessas posicoes e a sequencia de cruzamentos de n
umero par
13
em Si (M, w). Isso significa que, independentemente do que aconteca nas outras posicoes
localizadas `a direita da celula i, desde que a sequencia de cruzamentos de n
umero par
seja a mesma teremos os mesmos smbolos escritos nas primeiras i posicoes de memoria
ao termino da computacao. O mesmo ocorre com as posicoes da fita localizadas `a direita
da celula i em relacao aos cruzamentos de n
umero mpar em Si (M, w). Esse resultado
ilustra o fato de que a computacao e um fenomeno local.
Seja agora w = x0n xR , onde xR denota o reverso de x (x escrito ao contrario) e x e
uma palavra incompressvel de tamanho n (veja o lema anterior). Lembre-se que tM (w)
e o n
umero de passos de M com entrada w. Deve existir uma posicao i da fita em um
dos locais inicialmente ocupados pela parte da entrada correspondente a 0n com n
umero
de cruzamentos m entre as celulas i e i + 1 satisfazendo m tM (w)/n. Isso ocorre pois,
caso contrario, teramos uma violacao do n
umero total de passos tM (w) de M . Suponha
que a sequencia de cruzamentos entre essas celulas seja Si (M, w) = (q1 , . . . , qm ).
Vamos agora provar que, em relacao a` maquina M , a tupla (i, n, Si (M, w)) identifica de
forma u
nica a palavra original x utilizada na construcao de w. Com o intuito de obtermos
uma contradicao, suponha que exista uma palavra distinta w0 = y0n y R de tamanho 3n
com a mesma tupla anterior. Considere agora o processamento de M com a entrada
facil perceber que essa entrada produz a mesma sequencia de cruzamentos
x0n y R . E
entre as celulas i e i + 1 que as palavras w e w0 . Por isso, durante a computacao de M
com essa nova entrada, M se comporta nas primeiras i posicoes da fita como se estivesse
processando a palavra w, e nas outras posicoes superiores como se estivesse processando
a palavra w0 . Como w e w0 sao palndromos, as duas palavras sao aceitas por M . Isso
implica que, independentemente do local onde ocorra o u
ltimo passo de sua computacao,
n R
a palavra x0 y tambem sera aceita por M . Como M decide PALIN e x0n y R nao e um
palndromo, obtemos uma contradicao.
Provaremos a seguir que existe um maquina de Turing M 0 que, dada a tupla (i, n, Si (M, w)),
imprime a palavra x. Essa maquina computa da seguinte maneira:
1) Gera em ordem lexicografica todas as palavras de tamanho 3n na forma z0n z R .
2) Simula a maquina M em cada uma dessas entradas.
3) Se ao termino de alguma simulacao a sequencia de cruzamentos entre as celulas i e
i + 1 for igual a Si (M, w), a maquina M 0 imprime a palavra z usada na simulacao atual
e termina seu processamento.
Como x e a u
nica palavra compatvel com a tupla de entrada, o algoritmo anterior
imprime x ao termino de sua execucao. Podemos adicionar a tupla (i, n, Si (M, w)) a`
memoria interna de M 0 para obtermos uma maquina Mx tal que Mx () = x.
Para todo x, qual o tamanho da palavra que codifica a maquina Mx ? Claramente,
14
Captulo 1. Introducao
1.9
Refer
encias Adicionais
15
Captulo 2
Introdu
c
ao ao Problema P vs NP
There is the problem, seek the solution.
You can find it through pure thought.
David Hilbert.
Neste captulo abordamos o principal problema em aberto da teoria de complexidade computacional: a relacao entre as classes de complexidade P e NP.
Informalmente, o problema P vs NP procura determinar se, para uma classe
importante de problemas computacionais, a busca exaustiva por solucoes e
essencialmente a melhor alternativa algortmica possvel. Apresentamos diversas formulacoes equivalentes para esse problema, alem de discutirmos sua
importancia e os principais metodos empregados na tentativa de resolve-lo.
2.1
Introduc
ao
18
na proxima secao que o problema do caminho mnimo possui uma solucao muito mais
eficiente. A classe de problemas que admitem algoritmos eficientes e denotada por P.
Em meados da decada de sessenta, A. Cobham [22] e J. Edmonds [34] estavam interessados em muitas questoes desse tipo. Em particular, Edmonds foi capaz de provar que a
busca exaustiva nao e a melhor solucao computacional para muitos problemas de interesse
pratico. Para conseguir isso, e preciso explorar de forma inteligente a estrutura intrnseca
de cada problema. Segundo Edmonds, um algoritmo capaz de tirar proveito das sutilezas
do problema computacional em consideracao poderia ser considerado um bom algoritmo.
Apesar de ter mostrado que isso e possvel para muitas tarefas, ele e outros pesquisadores
da epoca nao foram capazes de encontrar solucoes mais elegantes que a busca exaustiva
para muitos outros problemas importantes.
O principal problema da busca exaustiva e que sua implementacao requer um n
umero
de passos computacionais proporcional ao n
umero de possibilidades no espaco de busca,
o que e em geral uma funcao de crescimento exponencial no tamanho das instancias do
problema. Com a descoberta de novos algoritmos, ficou claro que a existencia de um algoritmo de complexidade exponencial para um problema nao significava que a complexidade
real do problema era exponencial. Cobham e Edmonds sugeriram que um algoritmo e eficiente quando seu n
umero de passos e limitado por uma funcao algebrica, ou seja, por
um polinomio. Como essa definicao apresenta diversas propriedades interessantes e a experiencia nos mostra que algoritmos polinomiais sao computacionalmente viaveis, ela se
tornou amplamente aceita.
Os pesquisadores logo perceberam que diversos problemas computacionais difceis possuem uma propriedade muito especial: dada uma resposta para uma instancia do problema, e possvel verificar de modo eficiente se ela e de fato uma das solucoes procuradas.
A classe de problemas com solucoes que podem ser verificadas de modo eficiente e denotada por NP.
Lembre que P representa a classe de problemas com solucoes que podem ser encontradas de modo eficiente. Qual a relacao entre as classes P e NP? Em outras palavras,
se podemos verificar a solucao de um problema em tempo polinomial, entao tambem
podemos encontrar a solucao em tempo polinomial?
facil verificar quando
Vejamos, atraves de um exemplo simples, o que isso significa. E
uma sequencia de n
umeros e uma solucao para um quebra-cabecas Sudoku1 . Portanto,
Sudoku e um problema pertencente a` classe NP2 . No entanto, existe algum modo inteligente de encontrar rapidamente a solucao para um jogo de Sudoku? Ou seja, Sudoku
pertence a` classe P?
1
A descric
ao do jogo Sudoku pode ser obtida em http://pt.wikipedia.org/wiki/Sudoku.
Para essa afirmac
ao fazer sentido, estamos considerando que os tabuleiros de Sudoku podem ser
arbitrariamente grandes.
2
2.1. Introducao
19
20
2.2
Definic
ao
2.2. Definicao
21
Exemplo 2.4. [Problema do Caminho Mnimo]. Esse problema pode ser modelado atraves
de um grafo com peso nas arestas. Seja G = (V, E, p) um grafo, onde V e um conjunto de
vertices (cidades), E e um conjunto de pares nao-ordenados de vertices (cidades vizinhas)
e p : E R+ e o peso de cada aresta (distancia entre as cidades vizinhas). Se C =
(v1 , . . . , vn ) e um caminho no grafo G, a distancia de C e dada pela soma do peso das
arestas vi vi+1 E, onde 1 i n 1. Dados dois vertices s e t em G, nosso algoritmo
deve determinar qual e o caminho entre s e t com a menor distancia total. Vamos a seguir
descrever um algoritmo A que resolve de forma eficiente esse problema.
Adotamos as seguintes convencoes. Fixe uma ordem qualquer nas arestas de G. Vamos
denotar por Ek o conjunto que contem as k primeiras arestas segundo essa ordem. Seja
Gk = (V, Ek , p|Ek ) o subgrafo ponderado de G que contem todos os vertices originais de G e
apenas as k primeiras arestas segundo essa ordem. O algoritmo A resolvera um problema
mais geral que o proposto. Na k-esima etapa, ira encontrar o menor caminho entre todos
os pares de vertices do grafo Gk . O caso base G0 e trivial. Assuma que A tenha executado
por k etapas e seja Ck (u, v) o menor caminho encontrado entre os vertices u e v no grafo
Gk . A distancia total do caminho Ck (u, v) sera denotada por dk (u, v). Como encontrar
os melhores caminhos no grafo Gk+1 ?
Em primeiro lugar, se a nova aresta ek+1 = {w1 , w2 } e tal que p(ek+1 ) dk (w1 , w2 ),
entao os melhores caminhos e as melhores distancias nao sao alterados. Caso contr
ario,
para todos os pares de vertices ja sabemos qual e o menor caminho entre eles em Gk+1 que
nao utiliza a nova aresta. Sejam v1 e v2 dois vertices de G. Temos duas possibilidades para
cada caminho otimo em Gk+1 . Ou ele e igual ao caminho anterior, ou utiliza a nova aresta.
Como qualquer aresta so aparece uma u
nica vez em um caminho otimo, basta A comparar
dk (v1 , v2 ) com dk (v1 , w1 ) + p(ek+1 ) + dk (w2 , v2 ) e com dk (v1 , w2 ) + p(ek+1 ) + dk (w1 , v2 ) para
determinar Ck+1 (v1 , v2 ) e dk+1 (v1 , v2 ). Isso completa a descricao do algoritmo A.
O leitor pode verificar facilmente que esse algoritmo utiliza um n
umero de passos
polinomial em |E| + |V |. Considere agora a versao de decisao do problema anterior:
DISTMIN = {hG, s, t, ki : G e um grafo ponderado e dG (s, t) k}.
Podemos utilizar o algoritmo anterior para determinar em tempo polinomial o menor
caminho entre os vertices s e t e comparar sua distancia com o valor k. Por isso, temos
que DISTMIN P.
Apresentamos a seguir a definicao da classe NP. Uma definicao alternativa e discutida
na secao 2.4.
Definic
ao 2.5. [Classe de Complexidade NP].
Uma linguagem L {0, 1}? pertence a classe NP se existe um polinomio p(.) : N N e
uma maquina de Turing V de tempo polinomial tal que para todo x {0, 1}? :
22
2.2. Definicao
23
Definic
ao 2.8. [Classe de Complexidade coNP].
coNP = { L : L NP }.
Definic
ao 2.9. De forma geral, se R e uma classe de complexidade, definimos coR =
{ L : L R}.
Observe que a classe coNP nao e o complemento do conjunto NP. Por definicao, se
uma linguagem L esta em coNP, entao podemos verificar eficientemente atraves de um
certificado que uma certa palavra nao pertence a` linguagem L.
Por exemplo, enquanto e facil provar que um dado sistema de equacoes quadraticas
possui solucao (basta apresentar a solucao), como convencer alguem de que esse sistema
nao e satisfatvel? Existe algum certificado eficiente que possa ser usado para comprovar
a ausencia de solucoes? No caso geral, temos o seguinte problema.
Quest
ao em Aberto 2.10. NP = coNP ?
Esse problema tambem e muito importante, e sua solucao ampliara nosso entendimento
sobre a capacidade das provas eficientes. Alem disso, temos a seguinte relacao entre as
conjecturas anteriores.
Definic
ao 2.11. Seja R uma classe de complexidade. Dizemos que R e fechada por
complementacao de linguagens se, para toda linguagem L R, temos L R.
Lema 2.12. Se NP 6= coNP , entao P 6= NP.
Demonstracao. Em primeiro lugar, observe que NP = coNP se e somente se NP e fechada
por complementacao de linguagens (isso vale em geral para qualquer classe de complexidade). Portanto, segue pela hipotese do lema que NP nao possui essa propriedade. No
entanto, invertendo os estados de aceitacao e rejeicao de uma maquina determinstica,
temos que P e uma classe fechada por complementacao de linguagens. Isso prova que
P 6= NP.
Veremos mais alguns resultados relacionando as classes NP e coNP na secao 4.4. Veja
a secao de referencias adicionais deste captulo para saber mais sobre a questao NP vs
coNP.
Temos ainda outro relacionamento basico entre as classes discutidas anteriormente.
Lema 2.13. P NP coNP.
Demonstracao. Como P e uma classe fechada por complementacao de linguagens, basta
provar que P NP. Seja M uma maquina de Turing polinomial que decide L. Considere
imediato que
o verificador V que aceita a entrada hx, wi se e somente se M (x) = 1. E
V e um verificador eficiente. Tomando, por exemplo, o polinomio p(n) = n, temos que
x L w {0, 1}p(|x|) tal que V (x, w) = 1. Isso prova que L NP.
24
Suponha agora que exista uma linguagem L que admite certificados eficientemente
verificaveis tanto para presenca de palavras na linguagem quanto para ausencia de palavras. Em outras palavras, L NP coNP. Podemos concluir, nesse caso, que L pode ser
decidida em tempo polinomial?
Quest
ao em Aberto 2.14. P = NP coNP ?
Similarmente, e possvel demonstrar que se esse resultado for falso entao P 6= NP.
Vimos nesta secao que outras duas perguntas interessantes surgem naturalmente a
partir do enunciado do problema P vs NP. A solucao de qualquer um desses problemas
sera um avanco importante para a teoria de complexidade computacional.
2.3
Decis
ao vs Busca
25
2.4
Uma Formula
c
ao Alternativa
26
27
nos levar a um salto significativo de poder computacional. Em outras palavras, o problema P vs NP pergunta se maquinas eficientes determinsticas e nao-determinsticas sao
capazes de resolver os mesmos problemas. Pelo menos no caso mais trivial envolvendo
determinismo e nao-determinismo, sabemos provar que computacoes nao-determinsticas
sao mais poderosas.
Teorema 2.18. DTIME(n) ( NTIME(n).
Demonstracao. A prova desse resultado pode ser obtida em Paul et al. [89].
2.5
Reduc
oes e Problemas Completos
28
29
mostrar que existe funcao fL : {0, 1}? {0, 1}? computavel eficientemente tal que x L
se e somente se fL (x) L0 . Dada uma linguagem arbitraria L NP, o que sabemos sobre
ela? Apenas que existe um verificador VL eficiente para L capaz de testar corretamente
certificados de tamanho pL (|x|). Como precisamos acomodar todas as reducoes possveis
utilizando apenas essas informacoes, considere a seguinte definicao para L0 :
L0 = {hV, x, 1k i : w {0, 1}k tal que V (x, w) = 1}.
Observe que x L se e somente se hVL , x, 1pL (|x|) i L0 . Alem disso, a funcao fL (x) =
hVL , x, 1pL (|x|) i pode ser computada eficientemente. Isso prova que L0 e NP-difcil.
O principal impedimento para mostrarmos que L0 e NP-completa, ou seja, pertence
a` classe NP, e o fato de que w nao e um certificado eficientemente verificavel para L0 .
Embora w seja sucinto, como a maquina V da instancia de entrada e arbitraria, nao
podemos garantir que a sada de V com entrada hx, wi pode ser computada em tempo
limitado por algum polinomio fixo. Para superar essa limitacao, adicionamos um novo
ingrediente `a definicao de L0 :
L0 = {hV, x, 1k , 1t i : w {0, 1}k tal que V (x, w) = 1 em no maximo t passos }.
Seja qL (x) o polinomio que limita o tempo de execucao de VL . Entao x L se e somente
se hVL , x, 1pL (|x|) , 1qL (|x|) i L0 . Alem disso, a nova reducao tambem pode ser computada
em tempo polinomial. Portanto, L0 permanece NP-difcil. Por outro lado, temos agora
que w e um certificado sucinto e eficientemente checavel para a presenca de uma palavra
em L0 . Isso demonstra que L0 NP, ou seja, L0 e uma linguagem NP-completa.
Embora o problema utilizado na demonstracao anterior seja importante conceitualmente, ele nao e muito natural. Um segundo fato surpreendente e que existem problemas
NP-completos bastante naturais e de interesse pratico. Na verdade, atualmente sao conhecidos milhares de problemas com essa propriedade (veja a secao de referencias adicionais
deste captulo). O mais famoso deles e apresentado a seguir.
Definic
ao 2.23. [Linguagem SAT]. Uma formula proposicional em forma normal conjuntiva sobre as variaveis x1 , . . . , xn consiste em uma expresssao do tipo:
V W
(x1 , . . . , xn ) = i
u
j ij ,
onde cada uij e uma variavel xk ou a sua negacao xk . Uma formula desse tipo induz
naturalmente uma funcao booleana : {0, 1}n {0, 1} obtida atraves da aplicac
ao dos
conectivos , e aos bits de entrada. Dizemos que uma formula e satisfatvel se existe
~x {0, 1}n tal que (~x) = 1. Denotamos por SAT o conjunto de formulas proposicionais
satisfatveis em forma normal conjuntiva.
Teorema 2.24. [Teorema de Cook-Levin]. SAT e uma linguagem NP-completa.
30
31
2.6
Import
ancia Matem
atica
No incio do seculo passado, descobriu-se que o uso intuitivo e indiscriminado de diversas nocoes matematicas basicas poderia levar ao surgimento de inconsistencias logicas.
Esse fato inusitado provocou um enorme desenvolvimento no estudo da matematica, e
diversos sistemas formais foram sugeridos na tentativa de construir a matematica a partir
de bases mais seguras. Dentre os diversos sistemas axiomaticos formais propostos, um
dos mais importantes e a teoria de conjuntos conhecida como ZFC (Teoria de Conjuntos
Zermelo-Fraenkel with Choice).
Essa teoria possui tres propriedades muito interessantes. Em primeiro lugar, todos os
teoremas matematicos usuais podem ser provados a partir dos axiomas e regras do sistema
ZFC (veja Cohen e Davis [23]). Alem disso, a linguagem utilizada na demonstracao de
teoremas a partir dos axiomas dessa teoria e completamente formalizada. Por u
ltimo, no
sistema ZFC podemos verificar a validade de uma prova em tempo polinomial no tamanho
da demonstracao. Essas propriedades garantem que um algoritmo ou computador pode
ser utilizado para o estudo de diversas questoes relacionadas com esse sistema e com a
matematica em geral.
Em virtude disso, um matematico muito importante em sua epoca, chamado David
Hilbert, estava interessado na criacao de um algoritmo capaz de verificar automaticamente
se uma dada afirmacao matematica e um teorema. Essa questao ficou conhecida como
o Entscheidungsproblem, ou seja, o problema de decisao. Para o espanto de todos, Alan
Turing provou em 1936 [107] que nao existe algoritmo para resolver este problema.
Apesar desse resultado de impossibilidade, a complexidade computacional inspirou o
estudo de uma versao moderna desse problema. Considere a seguinte linguagem:
MATEMATICA
= {h, 1n i : existe uma prova de em ZFC de tamanho n}.
32
Essa linguagem, alem de ser decidvel (basta testar todas as provas possveis de tamanho
menor ou igual a n), tambem pertence a` classe de complexidade NP. Isso ocorre pois
uma demonstracao de tamanho k n para o teorema serve como certificado para sua
2.7
Principais Abordagens
33
34
mial. Como circuitos booleanos sao muito mais simples que maquinas de Turing, diversos
metodos combinatorios e probabilsticos podem ser utilizados na tentativa de provar que
alguma linguagem NP-completa nao admite circuitos eficientes.
Embora essa abordagem tenha tido algum sucesso com modelos mais restritos de circuitos booleanos, os melhores resultados obtidos para o caso geral sao muito fracos. Assim
como ocorre com a diagonalizacao, tambem e possvel justificar parte do fracasso dessa
abordagem. Discutiremos novamente essa questao na secao 5.8.
M
etodos Alg
ebricos
Apos a descoberta das barreiras descritas anteriormente, um novo metodo mostrou-se
interessante para o estudo da relacao entre classes de complexidade. Uma tecnica baseada
na aritmetizacao de formulas logicas foi capaz de provar resultados importantes, como a
caracterizacao de classes3 IP = PSPACE [101]. Alem disso, foram descobertas demonstracoes que ultrapassam simultaneamente as barreiras envolvendo os metodos anteriores.
Caracterizac
ao L
ogica das Classes de Complexidade
A questao P vs NP e equivalente a um problema de expressividade envolvendo duas
classes distintas de expressoes logicas. Todas as linguagens em P podem ser representadas por meio de formulas logicas de primeira ordem envolvendo um operador adicional de
ponto fixo. Similarmente, as linguagens em NP sao capturadas pelas expressoes logicas
em linguagem de segunda-ordem existencial. Portanto, o problema P vs NP e equivalente
a` seguinte questao: a logica de segunda-ordem existencial e capaz de descrever mais linguagens do que a logica de primeira ordem com o operador de ponto fixo? Um ponto
forte dessa abordagem e a disponibilidade de metodos bastante estudados proveninentes
da logica matematica.
GCT - Geometric Complexity Theory
Esse e um metodo recente proposto por Mulmuney e Sohoni em uma serie de artigos
publicados nos u
ltimos anos. Esses autores argumentam que diversas dificuldades enfrentadas pelos metodos anteriores podem ser formalmente analisadas e superadas atraves da
geometria algebrica e da teoria de representacoes.
Em alguns casos, a prova de um limitante superior implica na demonstracao de um
3
35
limitante inferior. Por exemplo, um resultado famoso de Kannan [64] mostra que, para
todo inteiro k, existem linguagens na hierarquia polinomial (definida na secao 4.1) com
complexidade de circuito (nk ). Por outro lado, e facil provar que se P = NP entao a
hierarquia polinomial coincide com a classe P (veja a secao 4.1). Por isso, basta demonstrar
0
que existe um inteiro k 0 tal que toda linguagem em P possui circuitos de tamanho O(nk )
para mostrar que P 6= NP. Esse exemplo mostra que se os problemas em P sao faceis
demais, entao ha problemas em NP que sao difceis.
A principal ideia por tras da abordagem GCT e baseada em um argumento similar,
porem aplicado em um contexto diferente. Essencialmente, para provar que P 6= NP
basta demonstrar que diversos problemas de decisao em geometria algebrica e teoria de
representacoes percentem a` classe P. A abordagem utiliza tecnicas matematicas bastante
avancadas e os autores admitem que o desenvolvimento completo desse projeto pode levar
decadas. Veja a secao de referencias deste captulo para mais detalhes.
2.8
Resultados B
asicos
36
Lpreenchida = {hx, 1k 2
i : x L}
esta em NP, uma vez que a seguinte MTND M 0 decide Lpreenchida eficientemente: dado
0 |z|k
y {0, 1}? , primeiro M 0 verifica se y = hz, 1k 2 i para alguma palavra z. Se isso nao
k
ocorre, M 0 rejeita y. Caso contrario, M 0 simula a maquina M com entrada z por ate k 0 2|z|
passos e aceita ou rejeita a entrada y de acordo com a decisao de M . Devido ao nosso
preenchimento, temos que M 0 computa em tempo polinomial no tamanho de y, ou seja,
Lpreenchida NP. Porem, por hipotese, temos que P = NP e portanto Lpreenchida P. Utilizando uma maquina determinstica de tempo polinomial que decide Lpreenchida podemos
decidir L em tempo determinstico exponencial: basta adicionar os bits de preenchimento
e aplicar a maquina eficiente de Lpreenchida . Isso prova que NEXP EXP e portanto EXP
= NEXP.
Observe que para provar que P 6= NP basta demonstrar que EXP 6= NEXP.
O resultado anterior mostra que, para alguns recursos computacionais, a igualdade
entre classes de complexidade inferiores pode ser estendida `as classes de complexidade
possvel demonstrar uma versao mais geral do teorema 2.30, valida tanto
superiores. E
para tempo quanto para espaco. Veja o livro de Papadimitriou [88] para mais detalhes.
Veremos no captulo 3 que muitos resultados desse tipo podem ser unificados atraves de
uma nocao mais abrangente de complexidade de tempo e espaco.
Embora alguns problemas discutidos anteriormente permanecam em aberto, provaremos no proximo captulo que P 6= EXP e NP 6= NEXP.
2.9
37
Refer
encias Adicionais
38
assumirmos que os problemas NP-completos nao podem ser resolvidos de forma eficiente
no universo fsico. Veja tambem o site [1] mantido pelo mesmo autor para uma descricao
de centenas de classes de complexidade estudadas em complexidade computacional.
Captulo 3
Simula
c
ao e Diagonaliza
c
ao
Time is the most valuable thing a man can spend.
Theophrastus.
Intuitivamente, esperamos que com mais recursos computacionais seja possvel resolver mais problemas. Os teoremas de hierarquia de tempo e de espaco,
alguns dos resultados mais importantes provados em complexidade computacional, estabelecem exatamente isso. O argumento utilizado na prova desses
teoremas e conhecido como metodo da diagonalizacao. Neste captulo vamos
estudar essa tecnica em profundidade. Veremos tambem como generalizar e
unificar a demonstracao dos teoremas de hierarquia e de outros resultados importantes em complexidade computacional.
3.1
Introduc
ao
Em um artigo muito importante para a teoria de complexidade computacional, Hartmanis e Stearn [54] provaram que e possvel resolver mais problemas computacionais
quando se tem mais tempo disponvel. Em outras palavras, eles demonstraram a existencia de problemas computacionais decidveis porem arbitrariamente difceis. Por exemplo,
existem linguagens que ate podem ser decididas em tempo polinomial, mas nunca em
tempo O(n3 ). Similarmente, pode-se provar que o mesmo fenomeno ocorre quando consideramos a complexidade de espaco ao inves da complexidade de tempo [104]. Esses
resultados ficaram conhecidos como teoremas de hierarquia.
O principal argumento utilizado na demonstracao desses resultados e uma combinacao
de simulacao e diagonalizacao. Embora essas ideias nao sejam novas, esse e o u
nico
39
40
metodo conhecido capaz de separar certas classes de complexidade importantes. Por isso,
entender os pontos fortes e os limites da diagonalizacao e fundamental para o estudo de
complexidade computacional.
Antes de provarmos uma forma bastante geral do teorema da hierarquia, vamos melhorar nossa intuicao atraves de um exemplo mais simples. Se necessario, revise a definicao
de complexidade de espaco apresentada na secao 1.7.
Definic
ao 3.1. [Classe de Complexidade DSPACE]. Seja S : N N uma funcao. Uma
linguagem L {0, 1}? pertence a classe DSPACE(S(n)) se existe uma maquina de Turing
M que decide L e que tenha complexidade de espaco O(S(n)).
Teorema 3.2. DSPACE(n) ( DSPACE(n3 ).
imediato que DSPACE(n) DSPACE(n3 ). Considere agora a seguinte
Demonstracao. E
linguagem:
L = {hM i : M e uma maquina de Turing que aceita hM i e sM (hM i) |hM i|1.5 }.
Por conveniencia, na definicao da linguagem L utilizamos a propria descricao da maquina
de Turing como entrada para sua computacao. Observe que, permitindo entradas arbitrarias para cada maquina de Turing, podemos obter uma linguagem L0 capaz de codificar
as instancias de todos os problemas que podem ser resolvidos em tempo n1.2 , por exemplo
(no sentido da demontracao do teorema 2.22). Isso explica, de certa forma, porque L e
uma linguagem tao difcil para computacoes que utilizam espaco linear. Vamos dividir a
demonstracao desse teorema em dois lemas.
Lema 3.3. L DSPACE(n3 ).
Demonstracao. A prova deste lema ilustra o conceito de simulacao entre maquinas de
Turing. Precisamos mostrar que existe uma maquina de Turing U satisfazendo as seguintes
propriedades: (1) U aceita a palavra hM i se e somente se M aceita seu proprio codigo
utilizando no maximo |hM i|1.5 celulas de memoria; (2) U utiliza espaco O(n3 ), onde
n = |hM i| e o tamanho da palavra de entrada; (3) U sempre termina sua computacao.
Para simular a computacao de M , a maquina U utiliza tres fitas de memoria. A
primeira fita de U armazena a entrada hM i. Na segunda fita, U guarda o estado atual
de M durante a simulacao e o n
umero de celulas de memoria acessadas por M ate o
momento. Por u
ltimo, a terceira fita de U armazena de forma concatenada o conte
udo
das fitas de memoria de M durante a sua computacao. Smbolos especiais sao utilizados
na terceira fita para indicar a posicao de cada cabeca de leitura de M durante a simulacao.
No incio da simulacao, U copia a palavra de entrada para o incio da terceira fita, de
modo que a palavra hM i sirva como entrada para a maquina M .
3.1. Introducao
41
Para simular um passo de M , a maquina U verifica o smbolo lido por cada cabeca
de leitura de M (fita 3), o estado atual de M (fita 2) e sua tabela de transicao (fita 1).
Informacoes auxiliares utilizadas por U para processar essas informacoes sao mantidas na
segunda fita. A maquina U atualiza sua terceira fita de modo a refletir o conte
udo das
fitas da maquina M apos cada passo da simulacao. Se necessario, algumas fitas de M
sao deslocadas para a direita na terceira fita de U para garantir espaco para outras fitas.
U atualiza as informacoes na fita 2 e prossegue para o proximo passo da simulacao. Se
em algum momento M aceita ou rejeita seu proprio codigo, U toma a mesma decisao.
Caso M acesse mais do que n1.5 celulas de memoria, a maquina U rejeita a entrada hM i.
Claramente, com essa descricao temos que U satisfaz o primeiro requisito desejado.
A primeira fita de U utiliza durante a computacao n celulas de memoria. A terceira
fita nao utiliza mais do que n1.5 celulas, pois caso esse limite seja ultrapassado, a simulacao
e interrompida e U rejeita a entrada hM i. Por u
ltimo, o contador de celulas de memoria
utilizadas por M e os dados auxiliares armazenados na segunda fita nao utilizam mais
do que c1 n celulas de memoria para alguma constante c1 que depende dos detalhes de
implementacao da maquina U . Isso prova que U utiliza no maximo O(n1.5 ) celulas de
memoria.
No entanto, observe que a maquina simulada pode executar indefinidamente enquanto
utiliza uma quantidade finita de memoria. Por isso, a descricao atual da maquina U
nao satisfaz o requisito (3). Veremos que nao e difcil descobrir quando essa situacao
ocorre. Lembre que a descricao de M tem tamanho n. Durante a simulacao: (1) M
pode utilizar no maximo n1.5 celulas de memoria; (2) M possui no maximo n fitas de
leitura; (3) o n
umero maximo de estados de M e de smbolos no seu alfabeto e n. Observe
que essas informacoes determinam completamente o estado atual da computacao de M
(tambem chamado de configuracao de M ). Alem do mais, combinando o conte
udo das
fitas de M , o seu estado atual e a posicao de cada cabeca de leitura, temos que existem
1.5
no maximo (nnn )(n)(n1.5 )n configuracoes distintas possveis. Isso significa que, apos
2.5
nn +1.5n+1 passos simulados, podemos rejeitar a maquina de entrada, pois nesse caso
sabemos que M repete alguma configuracao e portanto computa indefinidamente, ou
seja, hM i
/ L. Alteramos a maquina U para que ela conte o n
umero de passos realizados
por M (na segunda fita) e verifique quando isso ocorre. O espaco adicional utilizado por
2.5
U e de no maximo k log nn +1.5n+1 celulas, para alguma constante k adequada. Ou seja,
o espaco total utilizado por M ainda e O(n3 ). Isso completa a demonstracao de que
L DSPACE(n3 ).
Lema 3.4. L
/ DSPACE(n).
Demonstracao. A prova deste lema ilustra o argumento de diagonalizacao. Suponha que
L DSPACE(n), ou seja, existe uma maquina de Turing A que decide L e SA (n) e O(n).
42
facil perceber que DSPACE(n) e uma classe fechada por complementacao de linguagens
E
(basta inverter os estados de aceitacao e rejeicao da maquina de Turing). Portanto, seja
B uma maquina de Turing que decide a linguagem L em espaco linear. Suponha que hBi
seja uma palavra suficientemente grande que represente a maquina B (sempre podemos
adicionar tuplas irrelevantes `a descricao hBi). Considere agora a computacao de A com
entrada hBi. Temos que A aceita hBi se e somente se B aceita hBi e sB (hBi) |hBi|1.5 ,
uma vez que A decide L. Por outro lado, isso ocorre se e somente se B aceita hBi,
pois a condicao sB (hBi) |hBi|1.5 e verdadeira ja que B computa em espaco linear e
hBi e uma palavra suficientemente grande. Finalmente, a u
ltima condicao ocorre se e
somente se A rejeita hBi, pois A decide L e B decide L. Essa contradicao mostra que
L
/ DSPACE(n).
Isso completa a demonstracao do teorema.
O teorema 3.2 pode ser utilizado para demonstrar que maquinas determinsticas que
utilizam espaco linear e maquinas nao-determinsticas eficientes nao sao capazes de resolver os mesmos problemas computacionais.
Definic
ao 3.5. Uma classe de complexidade R e fechada por reducao de tempo polinomial
se L R e L0 p L implicam L0 R.
Teorema 3.6. NP 6= DSPACE(n).
Demonstracao. Como a composicao de uma reducao computada em tempo polinomial
com uma MTND eficiente e novamente uma MTND eficiente, temos que NP e uma classe
fechada por reducao de tempo polinomial. Por outro lado, vamos utilizar o teorema 3.2
e o metodo do preenchimento para provar que DSPACE(n) nao possui essa propriedade.
Isso prova que NP 6= DSPACE(n).
De acordo com o teorema 3.2, existe uma linguagem L DSPACE(n3 ) \ DSPACE(n).
Suponha que L seja decidida por uma maquina de Turing ML que nunca utiliza mais que
kn3 celulas de suas fitas. Atraves de uma simples modificacao na maquina ML (despre3
zamos a sequencia final de 1s), temos que a linguagem Lpreenchida = {hw, 1k|w| i : w L}
esta em DSPACE(n). Alem disso, e imediato que L p Lpreenchida . Porem, por hipotese,
L
/ DSPACE(n). Isso mostra que DSPACE(n) nao e uma classe de complexidade fechada
por reducao de tempo polinomial.
Embora este possa parecer um resultado muito simples, ainda nao sabemos provar qual
inclusao entre essas classes e falsa (provavelmente, as duas inclusoes nao sao validas). O
mesmo argumento pode ser utilizado para demonstrar que P 6= DSPACE(n).
Outras duas classes de complexidade importantes sao definidas a seguir.
3.1. Introducao
43
Definic
ao 3.7. [Classe de Complexidade PSPACE].
S
PSPACE = k1 DSPACE(nk ).
Definic
ao 3.8. [Classe de Complexidade EXPSPACE].
S
k
EXPSPACE = k1 DSPACE(2n ).
Lema 3.9. PSPACE EXP.
Demonstracao. Para demonstrar isso, mostraremos que todo algoritmo determinstico
b+1
com complexidade de espaco O(nb ) possui complexidade de tempo O(2n ), onde b e
um inteiro positivo qualquer. Seja L PSPACE e considere que M e uma maquina de
umero de estados da
Turing que decide a linguagem L em espaco k1 nk2 . Sejam k3 o n
maquina M , k4 o n
umero de fitas de M e k5 o n
umeros de smbolos no seu alfabeto.
Antes de qualquer passo de sua computacao: (1) M pode estar em algum dos k3 estados;
(2) o n
umero maximo de combinacoes possveis para a localizacao das cabecas de leitura
k
de M e (k1 nk2 )k4 ; (3) existem no maximo (k5 )k4 k1 n 2 possibilidades para o conte
udo escrito nas fitas de M . Por isso, o n
umero maximo de configuracoes possveis para M e
k2 k4 k4 k1 nk2
nk2 +1
k3 (k1 n ) k5
c1 2
, onde c1 e uma constante que nao depende de n. Se M
k +1
computa com alguma entrada de tamanho n por mais do que c1 2n 2 passos, entao M
repete alguma configuracao anterior, entrando portanto em um laco infinito. Como M
sempre termina sua computacao (M decide L), isso nao e possvel. Portanto, M computa
k +1
em tempo O(2n 2 ), ou seja, L EXP.
Por outro lado, observe que NP PSPACE. Isso ocorre pois, dada uma entrada,
podemos reaproveitar o espaco utilizado por uma maquina de Turing determinstica de
tempo polinomial para checar todos as escolhas nao-determinsticas possveis de uma
MTND de tempo polinomial. Essa e uma vantagem fundamental da complexidade de
espaco em relacao a` complexidade de tempo. Segue atraves do mesmo argumento que
NEXP EXPSPACE. De fato, e possvel provar atraves de simulacao que espaco e um
recurso mais poderoso que tempo.
Teorema 3.10. Seja T (n) : N N uma funcao arbitraria.
Entao DTIME(T (n)) DSPACE(T (n)/ log T (n)).
Demonstracao. A prova desse teorema utiliza uma simulacao envolvendo blocos de memoria e pode ser obtida em Hopcroft et al. [58].
Vamos resumir no proximo enunciado o que sabemos sobre as classes de complexidade
estudadas ate agora.
Teorema 3.11. P NP PSPACE EXP NEXP EXPSPACE.
Demonstracao. Vimos na discussao anterior que NP PSPACE e NEXP EXPSPACE.
O resultado segue a partir dos lemas 2.28 e 3.9.
44
3.2
Nosso proximo passo e provar um teorema geral de hierarquia e obter como corolarios
os teoremas de hierarquia classicos demonstrados por Hartmanis e Stearn [54, 104]. Por
simplicidade, vamos considerar nesta secao apenas maquinas de Turing determinsticas
com uma u
nica fita (veja a secao 1.8). Alem disso, assuma que todas as maquinas utilizam
o alfabeto {0, 1}. Veremos na proxima secao como converter esse resultado para maquinas
de Turing sem tais restricoes.
Primeiro, vamos definir uma nocao de complexidade um pouco mais geral do que a
usada ate agora.
Definic
ao 3.12. [f -complexidade]. Sejam M uma maquina de Turing e f : N N N
uma funcao arbitraria. Considere a funcao f-tsM : {0, 1}? N dada por f-tsM (x) =
f (tM (x), sM (x)). Dizemos que a f -complexidade de M e dada pela funcao f -TSM : N
N, onde f -TS(n) = max{ f-tsM (x) : x {0, 1}n }.
A funcao f introduz uma nova medida de complexidade baseada nas complexidades
de tempo e espaco da maquina de Turing. Claramente, se f e uma das projecoes binarias,
entao a f -complexidade obtida e a complexidade usual de tempo ou espaco.
Definic
ao 3.13. Uma linguagem L e decidvel em f -complexidade O(g(n)) se existe uma
maquina de Turing M decidindo L tal que f -TSM e O(g(n)).
O proximo resultado mostra que, para qualquer f -complexidade adotada, existem
problemas arbitrariamente difceis.
Definic
ao 3.14. Sejam f : N N N e g : N N funcoes arbitrarias. Definimos a
seguinte linguagem:
Lf,g = { hM i | M e uma maquina de Turing que aceita hM i e f-tsM (hM i) g(|hM i|) }.
(3.1)
Teorema 3.15. Nao existe maquina de Turing que decide Lf,g em f -complexidade o(g(n)).
Demonstracao. A fim de obtermos uma contradicao, suponha que uma maquina de Turing
A decida Lf,g e que f -TSA (n) seja o(g(n)). Considere a maquina de Turing B obtida a
partir de A atraves da troca de papeis entre os estados de aceitacao e rejeicao. Entao B
aceita w se e somente se A rejeita w, para todo w {0, 1}? .
Adicione diversas regras irrelevantes a` funcao de transicao de B, obtendo uma maquina
de Turing B 0 . Claramente,
L(B 0 ) = L(B) = {0, 1}? \ L(A).
(3.2)
45
Alem disso, existe algum n0 N tal que f -TSA (n) g(n) para todo n n0 , uma
vez que f -TSA (n) e o(g(n)). Por isso, temos f -tsA (x) g(n) para todo x {0, 1}? com
n = |x| n0 . Porem, e imediato que f -tsA = f -tsB 0 , e portanto
f -tsB 0 (hB 0 i) g(|hB 0 i|)
(3.3)
(usando 3.1)
(usando 3.3)
(usando 3.2)
A rejeita hB 0 i.
Obtemos uma contradicao. Isso prova que nao existe maquina de Turing A capaz de
decidir Lf,g em f -complexidade o(g(n)).
Como a funcao f pode ser qualquer combinacao de tempo e espaco (f pode ser,
inclusive, uma funcao nao-computavel), o teorema 3.15 prova essencialmente que a melhor
maquina de Turing universal possvel e aquela que realiza uma simulacao passo a passo
da maquina de entrada.
Para ilustrar, seja g(n) = n3 e considere a projecao f (x, y) = x. Neste caso, a f complexidade corresponde `a complexidade usual de tempo. Por isso, a linguagem Lf,g
pode ser descrita como o conjunto de palavras que representam maquinas de Turing que
aceitam seu proprio codigo em no maximo n3 passos. O teorema 3.15 prova que nao existe
maquina de Turing que decide Lf,g em tempo o(n3 ).
O proximo resultado mostra que podemos desprezar a complexidade das maquinas de
Turing envolvidas se tomarmos f como sendo a funcao identicamente nula.
Corol
ario 3.16. [Existencia de Problemas Indecidveis]. Sejam f : N N N a func
ao
identicamente nula e g : N N uma funcao arbitraria. Para f e g tomadas dessa forma,
a linguagem Lf,g da definicao 3.14 e indecidvel, i.e., nao existe maquina de Turing que
decide Lf,g .
Demonstracao. Seja M uma maquina de Turing que decide Lf,g . Como f e identicamente
nula e g possui imagem nao-negativa, temos que f -TSM e o(g(n)). Por isso, M decide
Lf,g em f -complexidade o(g(n)). No entanto, segue pelo teorema 3.15 que a linguagem
Lf,g nao pode ser decidida em f -complexidade o(g(n)). Essa contradicao completa a
demonstracao de que Lf,g e uma linguagem indecidvel.
46
47
trilha
trilha
trilha
trilha
trilha
trilha
trilha
1 guarda g(n).
2 armazena ng(n)2g(n) .
3 e responsavel polo contador t.
4 contem o contador s.
5 e usada para computar f (t, s).
6 guarda o codigo de M e seu estado atual.
7 reflete a fita de M durante sua computacao.
48
(3.6)
Falta somente encontrar um limitante superior para TA (n). Sabemos que A computa
g(n) em tempo TMg (n). A multiplicacao do passo 4 pode ser feita em tempo O(g(n)).
Durante a simulacao, A precisa computar f (t, s). Sempre temos s t ng(n)2g(n) + 1,
que em binario pode ser representado por O(g(n)) bits. Por isso, f (t, s) e computado em
tempo TMf (c3 g(n)), para alguma constante c3 apropriada. Em cada passo da simulacao,
as trilhas precisam ser deslocadas e alguns valores sao comparados (lembre que A mantem
o conte
udo das trilhas por perto). Isso pode ser feito em tempo proporcional ao tamanho
das trilhas, ou seja, c1 [SMg (n)+g(n)+SMf (c2 g(n)) ]. Finalmente, nao mais do que O(g(n))
passos sao simulados. Portanto, TA (n) satisfaz:
TA (n) c4 TMg (n) + g(n) TMf (c3 g(n)) + SMg (n) + g(n) + SMf (c2 g(n)) .
(3.7)
49
3.3
Consequ
encias do Resultado Anterior
50
Um fato importante verificado para os modelos estudados em computacao e a equivalencia em termos de poder computacional entre eles. Esse fato e conhecido como a Tese
de Church-Turing. Isso significa que, dados dois modelos computacionais suficientemente
poderosos C1 e C2 , e possvel converter uma maquina do primeiro modelo em uma maquina
equivalente do segundo modelo, i.e., capaz de decidir a mesma linguagem. Alem disso,
para todos os modelos fisicamente implementaveis conhecidos, o tempo de execucao da
maquina convertida e no maximo polinomialmente maior do que o tempo de execucao da
maquina original. Por isso, se C1 e C2 sao dois modelos computacionais arbitrarios, existe
um polinomio p12 (x) tal que se uma linguagem L pode ser decidida em tempo O(t(n)) no
modelo C1 , entao L pode ser decidida em tempo O(p12 (t(n))) no modelo computacional
C2 .
Definic
ao 3.24. Seja C um modelo computacional arbitrario. O conjunto de linguagens
decidveis em tempo determinstico O(t(n)) no modelo computacional C sera denotado por
DTIMEC (t(n)).
Lema 3.25. Seja t : N N uma funcao arbitraria. Temos entao que:
(i) Se L DTIMEC1 (t(n)), entao L DTIMEC2 (p12 (t(n))).
(ii) Se L
/ DTIMEC1 (p21 (t(n))), entao L
/ DTIMEC2 (t(n)).
As funcoes p12 (x) e p21 (x) sao os polinomios associados ao custo computacional adicionado na conversao entre as maquinas dos modelos computacionais C1 e C2 .
Demonstracao. A demonstracao de (i) e imediata e a demonstracao de (ii) segue pela
contrapositiva.
Esse fato simples mostra que a existencia de hierarquias de complexidade e uma propriedade compartilhada por todos os modelos computacionais.
Considere a partir de agora que C1 e o modelo computacional de maquinas de Turing
de fita u
nica com alfabeto binario e denote por C2 o modelo computacional de maquinas de
Turing arbitrarias. Portanto, temos daqui em diante que DTIMEC2 (t(n)) = DTIME(t(n)).
imediato que p12 (x) = x, uma vez que C1 e um caso particular de C2 . Segue do proximo
E
resultado que podemos tomar p21 (x) = x2 .
Teorema 3.26. Seja M1 uma maquina de Turing que decide uma linguagem L em tempo
O(t(n)). Entao existe uma maquina de Turing de fita u
nica e alfabeto binario que decide
2
L em tempo O(t(n) ).
Demonstracao. A prova desse resultado segue a partir de uma simulacao similar `aquela
utilizada na prova do lema 3.3, onde varias fitas sao armazenadas em uma u
nica fita da
maquina simuladora.
51
Temos finalmente tudo que precisamos para separar algumas classes de complexidade
importantes.
Teorema 3.27. P 6= EXP.
Demonstracao. Observe primeiramente que t(n) = 2n/2 e uma funcao tempo-construtvel
em maquinas de Turing de fita u
nica. Portanto, pelo corolario 3.22, temos a inclusao
n/4
propria de classes DTIMEC1 (2 ) ( DTIMEC1 (2n ). Alem disso, segue a partir do lema
3.25 que:
P DTIME(2n/8 ) DTIMEC1 (2n/4 ) ( DTIMEC1 (2n ) DTIME(2n ) EXP,
como queramos demonstrar.
As mesmas ideias podem ser utilizadas para separar outras classes de complexidade
importantes. O proximo resultado segue a partir dos teoremas de hierarquia de modo
analogo.
Definic
ao 3.28. [Classe de Complexidade E].
S
E = c1 DTIME(2cn ).
Teorema 3.29.
(i) PSPACE 6= EXPSPACE.
(ii) E 6= EXP.
(iii) P 6= E.
Alem disso, o argumento utilizado na demonstracao do teorema 3.6 pode ser usado
para provar que NP 6= E.
3.4
O Teorema da Lacuna
Veremos nesta secao que os teoremas de hierarquia podem nao ser validos quando
utilizamos funcoes nao-construtveis. Por exemplo, existem funcoes t(n) nao-triviais tais
que DTIME(t(n)) = DTIME(2t(n) ). Assim como demonstramos um teorema de hierarquia
um pouco mais geral, vamos provar uma versao mais abstrata do resultado conhecido como
Teorema da Lacuna (Borodin [16]).
Definic
ao 3.30. Uma linguagem L pertence `a classe COMPLEXf (g(n)) se existe uma
maquina de Turing A que decide L e, para todo inteiro n, temos que f-TSA (n) g(n).
52
3.5
53
A Hierarquia N
ao-Determinstica
54
E possvel simular t(n) passos de uma maquina de Turing em tempo t(n) log t(n). Consulte a secao
de referencias deste captulo para mais detalhes.
55
3.6
O M
etodo da Completude
Na secao 2.5 vimos que os problemas NP-completos sao os mais difceis da classe NP.
Uma propriedade fundamental da nocao de completude e que se demonstrarmos que um
problema completo esta em uma classe inferior, entao ocorre um colapso de classes. Por
isso, caso seja provado que P 6= NP, sabemos que nenhum problema NP-completo admite
algoritmos eficientes.
Os teoremas de hierarquia implicam que diversas classes de complexidade sao distintas.
Por exemplo, vimos que P 6= EXP. Definindo adequadamente a nocao de completude para
a classe EXP, podemos obter que problemas EXP-completos nao podem ser resolvidos em
tempo polinomial. Interessantemente, muitos problemas praticos acabam se mostrando
completos para alguma classe de complexidade. Isso nos da uma compreensao muito boa
da dificuldade do problema sendo estudado.
Definic
ao 3.37. [Completude]. Seja R uma classe de complexidade. Dizemos que uma
linguagem L {0, 1}? e R-completa se:
(i) L R;
(ii) Para toda linguagem L0 R, temos L0 p L.
Observe que as classes de complexidade EXP, PSPACE, coNP, coNEXP e EXPSPACE
sao fechadas por reducao de tempo polinomial. Consequentemente, se provarmos que um
problema completo de uma certa classe de complexidade A pertence `a classe B, temos
A B. Conversamente, se A * B entao problemas completos da classe A nao pertencem
a` classe de complexidade B.
Uma construcao semelhante a que aparece na demonstracao do teorema 2.22 pode
ser usada para exibir linguagens completas para diversas dessas classes. Embora esses
problemas nao sejam muito u
teis, problemas completos naturais podem facilitar certas
demonstracoes envolvendo classes de complexidade. Veremos a seguir como a nocao de
completude pode ser usada para classificar a dificuldade computacional de alguns problemas de interesse pratico.
Uma expressao regular e uma forma sucinta de representar palavras (sequencias de caracteres) que satisfazem um certo padrao. Por exemplo, uma palavra satisfaz a expressao
regular A? bA? se ela e formada por uma sequencia arbitraria de As, seguido por um b, e
56
depois por mais uma sequencia de As. Outro exemplo e a expressao regular {c b}arro,
satisfeita pelas palavras carro e barro. Portanto, uma expressao regular e uma palavra
bem-definida e o conjunto de palavras que satisfazem uma certa expressao regular e uma
possvel combinar as operacoes basicas ?, e a concatenacao de smbolos
linguagem. E
para produzir regras que codificam linguagens sofisticadas.
Expressoes regulares sao usadas por diversos utilitarios, tais como editores de texto
e interpretadores, para manipular texto baseado em padroes. Por exemplo, pode-se usar
uma expressao regular para garantir que o dado digitado por um usuario e um endereco
web valido. Outro uso importante de expressoes regulares e a filtragem de informacao em
bancos de dados textuais. Vamos definir a seguir o conjunto de palavras que representam expressoes regulares validas. Por simplicidade, vamos considerar apenas o alfabeto
binario.
Definic
ao 3.38. [Expressoes Regulares]. O conjunto de expressoes regulares pode ser
definido indutivamente atraves das seguintes regras: (1) os smbolos 0 , 1 e sao expressoes
regulares; (2) se 1 e 2 sao expressoes regulares, entao 1 2 , 1 2 e 1? sao expressoes
regulares. O significado de uma expressao regular e uma linguagem definida indutivamente
da seguinte maneira: L(0) = {0}, L(1) = {1}, L() = , L(1 2 ) = L(1 )L(2 ) = {xy :
x L(1 ), y L(2 )}, L(1 2 ) = L(1 ) L(2 ), e L(1? ) = L(1 )? . Os operadores sao
aplicados de acordo com a ordem de precedencia anterior. Finalmente, dizemos que duas
expressoes regulares 1 e 2 sao equivalentes se L(1 ) = L(2 ).
Um importante problema computacional e decidir se duas expressoes regulares sao
equivalentes. Atraves de algumas modificacoes na definicao de expressao regular, essa
tarefa fornece um grande n
umero de problemas completos:
(1) O problema de decidir se duas expressoes regulares sao equivalentes e PSPACEcompleto.
(2) Uma expressao regular e livre de estrela se nao possui ocorrencias do operador ? .
Decidir se duas expressoes regulares livres de estrela sao equivalentes e um problema
coNP-completo.
(3) Suponha que adicionemos o operador 2 (elevar ao quadrado) no conjunto de operadores de expressoes regulares, de forma que L(2 ) = L()L(). Decidir se duas expressoes
regulares livres de estrela e com o operador 2 sao equivalentes e um problema coNEXPcompleto.
(4) Suponha que os operadores ? e 2 sejam permitidos. Entao o problema da equivalencia de expressoes regulares se torna EXPSPACE-completo. Por isso, sabemos pelo
57
teorema 3.29 que esse problema nao pode ser resolvido de forma eficiente.
(5) Alem disso, podemos adicionar um operador de negacao a`s expressoes regulares,
de forma que L() = {0, 1}? \L(). Nesse caso, o problema de equivalencia nao pode
ser resolvido por nenhum algoritmo determinstico com tempo de execucao limitado por
uma torre de exponenciais de altura constante.
A prova desses resultados pode ser obtida em Meyer e Stockmeyer [79, 80]. Muitos outros
problemas completos e demonstracoes de completude podem ser obtidos no livro de Du e
Ko [33].
Os resultados provados neste captulo mostram que alguns problemas computacionais
nao podem ser resolvidos de modo eficiente. Podemos demonstrar isso porque tais problemas sao completos em suas respectivas classes de complexidade. Entretando, veremos na
secao 4.5 que e bem provavel que diversos problemas computacionais interessantes nao sejam completos. Um grande desafio para os pesquisadores em complexidade computacional
e descobrir metodos capazes de provar que problemas nessa situacao sao computacionamente difceis. Infelizmente, os argumentos utilizados neste captulo provavelmente nao
sao suficientes para isso. Discutiremos em profundidade os limites do metodo de diagonalizacao no captulo 5.
3.7
Refer
encias Adicionais
58
Captulo 4
O Problema P vs NP em
Profundidade
May the force of P and NP be with you.
Sanjeev Arora.
Neste captulo vamos discutir alguns topicos mais avancados relacionados com
o problema P vs NP. Inicialmente, veremos como a hierarquia polinomial generaliza a definicao das classes de complexidade P e NP. Vamos mostrar tambem
que algoritmos muito eficientes em tempo e espaco nao sao capazes de decidir
a linguagem SAT. Discutiremos em seguida algumas propriedades estruturais
das linguagens em NP. Por u
ltimo, demonstraremos que existem algoritmos
assintoticamente otimos para todos os problemas da classe NP.
4.1
A Hierarquia Polinomial
Na secao 3.1 mostramos que NP PSPACE. Vamos a partir de agora explorar algumas
classes de complexidade situadas entre NP e PSPACE.
A Hierarquia Polinomial (PH) foi definida inicialmente por Meyer e Stockmeyer [79,
105], a partir de uma generalizacao das classes P e NP. Muitos resultados importantes
em complexidade computacional estao relacionados com a hipotese de que a hierarquia
polinomial nao colapsa em nenhum de seus nveis.
Diversos problemas naturais tem complexidade de tempo situada em PH. Por exemplo,
seja (x1 , . . . , xn ) uma formula proposicional e f : {0, 1}n {0, 1} a funcao computada
por essa formula. Seria a formula que computa a funcao f e em cuja descricao ocorrem
59
60
o menor n
umero possvel de conectivos? Por definicao, uma formula proposicional e
satisfatvel se e somente se existe uma atribuicao que a torne verdadeira. Por outro lado,
uma formula e a menor possvel se e somente se para toda formula proposicional 0
onde ocorrem menos conectivos, existe uma atribuicao ~x tal que (~x) 6= 0 (~x). Observe
que essa combinacao de quantificadores aumenta significativamente nossa capacidade de
expressar problemas computacionais. Vejamos mais um exemplo.
Exemplo 4.1. [Jogadas Finais em um Jogo Arbitrario]. Consideramos neste exemplo um
jogo de tabuleiro entre dois jogadores com as seguintes propriedades:
(i) Dada uma descricao C de um tabuleiro do jogo, e possvel verificar de modo eficiente
todas as proximas jogadas possveis, ou seja, sabemos verificar se um tabuleiro C 0
pode ser obtido a partir de C com uma u
nica jogada;
(ii) Os jogadores alternam as jogadas;
(iii) Existe uma maquina de Turing eficiente M que, ao receber como entrada um tabuleiro C0 e tabuleiros C1 , . . . , Ck , aceita a entrada hC0 , C1 , . . . , Ck i se e somente se:
(1) cada tabuleiro pode ser obtido a partir do tabuleiro anterior conforme descrito
no item (i); (2) os jogadores alternam as jogadas; (3) algum tabuleiro Ci determina
a vitoria do primeiro jogador.
Observe que certos jogos de tabuleiro classicos como dama e xadrez satisfazem as propriedades anteriores. No entanto, jogos muito mais gerais podem ser codificados pela maquina
de Turing M .
Considere agora o seguinte problema computacional. Dado um tabuleiro C, o primeiro
jogador pode ganhar o jogo nas proximas k jogadas? Em outras palavras, existe uma jogada
do primeiro jogador que leva a um tabuleiro valido C1 tal que, para toda jogada do segundo
jogador que leva a um tabuleiro valido C2 tal que, existe um jogada do primeiro jogador . . .
de forma que em no maximo k jogadas o jogo e vencido pelo primeiro jogador? Isso e o
mesmo que perguntar se existe uma estrategia vencedora para o primeiro jogador que pode
ser aplicada `as proximas k jogadas. Esse problema pode ser representado pela seguinte
linguagem:
Lk = {hCi {0, 1}? : C1 C2 . . . Qk Ck M (C, C1 , . . . , Ck ) = 1},
onde Qi e o quantificador ou de acordo com a paridade do inteiro k.
Intuitivamente, esse problema e muito mais difcil do que problemas em NP. Por
exemplo, tomando k = 1 e considerando M como sendo um verificador eficiente para SAT,
podemos considerar uma formula proposicional como sendo um jogo em que o primeiro
jogador vence se consegue encontrar uma atribuicao que satisfaca a formula de entrada.
61
Definic
ao 4.2. [Hierarquia Polinomial]. Para todo inteiro k 0, dizemos que uma
linguagem L pertence `a classe pk (k-esimo nvel da hierarquia polinomial) se existe uma
maquina de Turing M que computa em tempo polinomial e um polinomio q(.) tal que
x L w1 {0, 1}q(|x|) w2 {0, 1}q(|x|) . . . Qk wk {0, 1}q(|x|) M (x, w1 , . . . , wk ) = 1,
onde Qk denota ou se k for par ou mpar, respectivamente.
Alem disso, definimos pk = copk = {L : L pk }. Finalmente, definimos a hierarS
quia polinomial como sendo a classe de complexidade PH = k0 pk .
Novamente, a restricao de que toda palavra wi tenha tamanho exato q(|x|) nao e uma
limitacao. Basta que as palavras envolvidas sejam polinomialmente limitadas, uma vez
que sempre podemos obter uma maquina de Turing equivalente que opera de acordo com
as restricoes de tamanho da definicao anterior. Utilizaremos esse fato implicitamente a
partir de agora.
A linguagem Lk discutida no exemplo 4.1 pertence a` classe pk . Por isso, temos que
Lk esta em pk . Considere a seguir jogos em que a vitoria sera determinada nas proximas
k jogadas (ou seja, se M (C, C1 , . . . , Ck ) = 0 entao o segundo jogador vence o jogo).
Negando a definicao de Lk , obtemos que Lk representa o problema de verificar se existe
uma estrategia vencedora para o segundo jogador para as proximas k jogadas.
Observe que P = p0 = p0 , NP = p1 e coNP = p1 . Alem disso, por definicao, se
L pk entao L pk , ou seja:
x L w1 {0, 1}q(|x|) w2 {0, 1}q(|x|) . . . Qk wk {0, 1}q(|x|) M (x, w1 , . . . , wk ) = 1,
onde Qk denota ou se k for par ou mpar, respectivamente. Portanto, negando os dois
lados da equivalencia anterior, obtemos que:
x L w1 {0, 1}q(|x|) w2 {0, 1}q(|x|) . . . Qk wk {0, 1}q(|x|) M (x, w1 , . . . , wk ) = 0,
onde dessa vez Qk denota ou se k for mpar ou par, respectivamente. Seja M 0
uma maquina de Turing que aceita sua entrada se e somente se M rejeita sua entrada.
Claramente:
x L w1 {0, 1}q(|x|) w2 {0, 1}q(|x|) . . . Qk wk {0, 1}q(|x|) M 0 (x, w1 , . . . , wk ) = 1.
Isso mostra que, alterando a disposicao dos quantificadores, podemos obter uma definicao
alternativa para a classe pk .
Utilizando a observacao anterior, note que para todo inteiro k 0 temos pk pk+1
pk+2 (o novo quantificador nao altera a validade da expressao se desprezarmos a palavra de
S
entrada adicional). Portanto, PH = k0 pk . Similarmente, e facil provar que pk pk+1
e que pk pk+1 .
62
q(|x|)
i|)
onde wi {0, 1}q (|hx,1
para todo 2 i k + 1. Combinando (1) e (2), podemos
obter um polinomio p(.) adequado e modificar a maquina ML0 de forma que:
63
q(|x|)
i|)
onde ui {0, 1}q (|hx,1
para todo 1 i k. Seja p(.) um polinomio tal que p(n) =
0
n q(n)
q(n)+q (|h1 , 1 i|), para todo inteiro n. Combinando (1) e (2) e modificando a maquina
ML0 , obtemos que existe uma maquina de Turing eficiente M tal que:
64
65
Demonstracao. A prova desse resultado pode ser obtida no livro de Papadimitriou [88].
Para os primeiros nveis da hierarquia polinomial, diversos problemas naturais completos sao conhecidos. O artigo de Schaefer e Umans [96] apresenta diversos exemplos.
Em relacao ao caso geral, temos os seguintes resultados.
Lema 4.12. [pk e fechada por reducao polinomial].
Se L pk e L0 p L, entao L0 pk .
Demonstracao. Se L pertence `a classe pk , entao existe uma maquina de Turing M que
computa em tempo polinomial e um polinomio q(.) tais que
x L w1 {0, 1}q(|x|) w2 {0, 1}q(|x|) . . . Qk wk {0, 1}q(|x|) M (x, w1 , . . . , wk ) = 1,
onde Qk denota ou se k for par ou mpar, respectivamente. Por outro lado, como
L0 p L, existe uma funcao f : {0, 1}? {0, 1}? computavel em tempo polinomial tal
que x L0 se e somente se f (x) L. Portanto,
x L0 f (x) L w1 w2 . . . Qk wk M (f (x), w1 , . . . , wk ) = 1,
Observe que a maquina de Turing Mf (x, w1 , . . . , wk ) = M (f (x), w1 , . . . , wk ) computa em
tempo polinomial, uma vez que f e M sao polinomiais. Isso completa a prova de que
L0 pk .
Lema 4.13. Se existe uma linguagem PH-completa, entao a hierarquia polinomial colapsa
em algum nvel finito, ou seja, existe k 0 tal que PH = pk .
Demonstracao. Se L e uma linguagem PH-completa, entao existe k tal que L pk . Por
hipotese, para toda linguagem L0 PH, temos que L0 p L. Segue pelo lema anterior que
PH pk e portanto PH = pk .
O proximo teorema mostra que, se PH = PSPACE, entao ocorre o colapso da hierarquia polinomial. A demonstracao utiliza o metodo da completude.
Teorema 4.14. Se PH = PSPACE, entao existe k tal que PH = pk .
Demonstracao. A seguinte linguagem e PSPACE-completa:
L = {hM, x, 1s i : M aceita a entrada x utilizando no maximo s celulas de memoria }.
Atraves de simulacao podemos mostrar que L PSPACE. Por outro lado, se L0 e uma
linguagem decidida em espaco polinomial por uma maquina ML0 , podemos usar essa
maquina para provar que L0 p L. Isso mostra que a linguagem L e completa para a
classe PSPACE. Portanto, se PH = PSPACE, temos que a classe de complexidade PH
possui problemas completos. Pelo lema anterior, obtemos que existe k tal que PH = pk ,
como queramos demonstrar.
66
Vimos na secao 2.7 que as classes P e NP podem ser caracterizadas atraves de certos
conceitos logicos. De forma analoga, e possvel caracterizar a classe PH em termos de
expressibilidade logica. A hierarquia polinomial corresponde a` classe de propriedades
expressaveis na logica de segunda ordem. Veja o livro de Immerman [61] para mais
detalhes.
Outras tres definicoes equivalentes para a classe PH sao conhecidas. Uma envolve o
conceito de maquinas alternantes, que sera discutido na proxima secao. As outras duas sao
basedas em oraculos e certos tipos de circuitos, respectivamente. Para mais informacoes,
consulte o livro de Arora e Barak [7], por exemplo.
4.2
Altern
ancia
4.2. Alternancia
67
k1 ATIME(2
nk
).
A alternancia nos fornece uma nova caracterizacao para diversas classes de complexidade estudadas anteriormente.
Teorema 4.18. [Relacao entre ATIME e ASPACE]. Seja f (n) : N N uma func
ao com
f (n) n para todo natural n. Temos as seguintes inclusoes de classe:
68
4.2. Alternancia
69
k) Gera atraves do seu nao-determinismo uma palavra wk {0, 1}q(|x|) . O tipo dos estados
utilizados durante a geracao dessa palavra depende da paridade de k.
Simula deterministicamente com estados do mesmo tipo utilizados na etapa anterior a
computacao de M com entrada hx, w1 , . . . , wk i. Nosso algoritmo aceita x se e somente se
M aceita essa entrada. Observe que, em partes determinsticas da computacao, o tipo de
estado nao altera o conjunto de configuracoes de aceitacao final.
Note que esse algoritmo alternante computa em tempo polinomial. Alem disso, ocorre
exatamente k 1 alternancias entre estados existencias e universais. Finalmente, segue
pela definicao de aceitacao por MTAs que nosso algoritmo decide a linguagem L, ou seja,
L pk -TIME(nc ) para alguma constante c adequada.
Suponha agora que L pk -TIME(nc ) para alguma constante c 1. Em outras
palavras, existe uma MTA A com no maximo k 1 alternancias que decide L em tempo
dnc , para alguma constante d. Vamos exibir uma maquina de Turing determinstica M
que computa em tempo polinomial tal que:
x L w1 w2 w3 . . . Qk wk M (x, w1 , . . . , wk ) = 1 (1),
c
70
4.3
Consideramos que a palavra computada pela reducao e armazenada em uma fita de sada utilizada
somente para escrita. Assim como ocorre com a fita de entrada, o n
umero de celulas escritas na fita de
sada n
ao e levado em conta no c
alculo da complexidade de espaco do algoritmo.
71
2
e tomar d arbitrariamente pequeno para provar que SAT
/ DTISP(n
, (log n)b ), para
todo , b > 0. A demonstracao do resultado principal sera baseada em diversas inclusoes
de classes. Assuma que NTIME(n) DTISP(nc , nd ). Mostraremos que:
NTIME(nk ) DTISP(nkc , nkd ) p2 -TIME(nk(d+c/2) ) NTIME(nck(d+c/2) ),
onde k e um inteiro positivo escolhido de forma que em nenhum momento tenhamos
computacoes em tempo sublinear (precisamos pelo menos ler a palavra de entrada nas
MTs envolvidas na demonstracao). Note que se ck(d + c/2) < k, temos uma violacao do
teorema de hierarquia nao-determinstico demonstrado na secao 3.5. Reescrevendo essa
desigualdade, fica provado que, para c(c + 2d) < 2, NTIME(n) * DTISP(nc , nd ).
Durante as demonstracoes vamos utilizar o fato de que e possvel converter verificadores
de pk em maquinas pk -alternantes e vice-versa sem alterar as complexidades de tempo
envolvidas (veja a prova do teorema 4.21). A primeira inclusao e a mais simples de ser
provada. Utilizamos um argumento usual de preenchimento.
Lema 4.23. Se NTIME(n) DTISP(nc , nd ), entao NTIME(nk ) DTISP(nkc , nkd ),
onde k e qualquer inteiro positivo.
Demonstracao. Primeiro observe que o resultado e bastante intuitivo: se podemos computar n passos nao-determinsticos em tempo (ou espaco) determinstico g(n), entao podemos
computar nk passos nao-determinsticos em tempo (ou espaco) determinstico g(n)k .
72
ou seja, M decide L. Fazendo |x| = n, temos que |hx, 1|x| i| e O(nk ). Como M 0 computa
em tempo O(nc ) e espaco O(nd ), temos que M computa em tempo O(nkc ) e espaco O(nkd ).
Isso completa a demonstracao de que L DTISP(nkc , nkd ).
A proxima inclusao mostra que podemos trocar tempo determinstico por alternancia.
Observe que o resultado nao depende de nenhuma hipotese.
Lema 4.24. DTISP(nkc , nkd ) p2 -TIME(nk(d+c/2) ).
Demonstracao. Utilizaremos pela primeira vez um argumento conhecido como metodo
das configuracoes. Basicamente, vamos determinar se uma palavra e aceita por uma
maquina de Turing verificando se existe um caminho valido entre a configuracao inicial
da maquina e uma configuracao de aceitacao. Alem disso, quebraremos esse problema em
diversas partes, resolvendo cada uma delas separadamente utilizando alternancia.
Seja L DTISP(nkc , nkd ) e considere que M e uma maquina de Turing determinstica
que decide L em tempo O(nkc ) e espaco O(nkd ). Em relacao `a computacao de M com uma
entrada x de tamanho n, temos que x L se e somente se existem nkc/2 configuracoes
de M tais que, para todo i N com 1 i < nkc/2 , a configuracao Ci+1 pode ser obtida
a partir da configuracao Ci em k 0 nkc/2 passos (para alguma constante k 0 adequada) e a
configuracao Cnkc/2 e uma configuracao de aceitacao. Portanto,
x L hC1 , . . . , Cnkc/2 i hii [M 0 (x, hC1 , . . . , Cnkc/2 i, hii) = 1],
onde M 0 e uma maquina de Turing determinstica que verifica a condicao anterior. Como
M computa em espaco O(nkd ), temos que |hC1 , . . . , Cnkc/2 i| e O(nkc/2 nkd ). Por isso, apenas
para ler a entrada e obter as configuracoes Ci e Ci+1 , M 0 precisa de O(nk(d+c/2) ) passos. A
computacao de M 0 pode ser feita em tempo O(nkc/2 ). Convertendo M 0 em uma maquina
alternante, obtemos que L p2 -TIME(nk(d+c/2) ).
Finalmente, uma hipotese um pouco mais fraca do que a inicial nos permite trocar
alternancia por tempo nao-determinstico.
Lema 4.25. Se NTIME(nk ) DTIME(nkc ), entao p2 -TIME(nk(d+c/2) ) NTIME(nck(d+c/2) ).
73
2
Suponha que existam e b tais que SAT DTISP(n
, (log n)b ). Sabemos
que, para
b
todo > 0, uma funcao O((log n) ) e tambem O(n ), e portanto SAT DTISP(n 2 , n ).
Alem disso, se L NTIME(n), entao x L se e somente se a formula proposicional de tamanho n log n associada a x e satisfatvel (veja a discussao do paragrafo anterior). Como essareducao pode ser computada em tempo linear e espaco poli-logaritmo e
SAT DTISP(n 2 , n ), existe um polinomio p(.) tal que:
74
2
temos que SAT
/ DTISP(n
, (log n)b ), como queramos demonstrar.
NTIME(n) DTISP((n log n)
4.4
Reduc
oes e NP coNP
Na secao 2.5 discutimos a nocao de reducao entre problemas computacionais e introduzimos o conceito de reducao de Karp. Essa nocao restrita de reducao foi estudada
porque ela e suficiente para a teoria de NP-completude. No entanto, em complexidade
computacional e mais interessante desenvolver uma nocao de reducao que se comporte
da seguinte maneira: um problema A se reduz a um problema B se a existencia de um
algoritmo eficiente para B implica a existencia de um algoritmo eficiente para A. Por
exemplo, pode ser interessante chamar diversas vezes o algoritmo eficiente que resolve o
problema B quando se quer resolver o problema A. Alem disso, podemos ter diferentes
caminhos de execucao de acordo com as respostas obtidas por essas chamadas. Essa nocao
mais geral de reducao entre problemas e capturada pela nocao de reducao de Cook.
Esse conceito pode ser facilmente formalizado atraves do uso de maquinas de Turing
com oraculo (MTO). As MTOs sao maquinas de Turing usuais que possuem a habilidade
adicional de realizar chamadas a um oraculo L. Mais especificamente, L {0, 1}? e
uma linguagem arbitraria e a maquina de Turing com acesso ao oraculo L e capaz de
verificar instantaneamente se uma dada palavra pertence a` linguagem L. Para isso, basta
a MTO escrever essa palavra em uma fita adicional chamada fita do oraculo e utilizar uma
instrucao especial que obtem a resposta do oraculo. Esse procedimento pode ser realizado
diversas vezes durante a computacao da MTO.
Definic
ao 4.28. [Maquinas de Turing com Oraculo (MTOs)]. Uma maquina de Turing
M com oraculo e uma maquina de Turing com uma fita especial adicional, chamada fita
de oraculo, e tres estados especiais: qoraculo , qsim e qnao . A computacao de M e sempre
relativa a um oraculo L {0, 1}? . Quando M entra no estado qoraculo , seu proximo estado
de execucao depende do conte
udo w escrito na fita de oraculo. O novo estado sera qsim
caso w L, e qnao se w
/ L. O conteu
do da fita de oraculo permanece inalterado apos
essa chamada. Alem disso, independente da linguagem L utilizada como oraculo, cada
75
76
77
4.5
O Teorema de Ladner
78
Teorema 4.34. [Teorema de Ladner]. Suponha que P 6= NP. Entao existe uma linguagem
L {0, 1}? tal que:
(i) L NP;
(ii) L
/ P;
(iii) L nao e uma linguagem NP-completa.
Demonstracao. Seja f : N N uma funcao arbitraria. Considere a seguinte linguagem:
f (n)
SATf = {01n
: || = n e SAT }.
Vamos definir uma funcao H(n) : N N de forma que a linguagem SATH satisfaca os
requisitos do teorema. Primeiro, observe que mais uma vez estamos utilizando o metodo
do preenchimento, pois a complexidade de SATH depende essencialmente do crescimento
da funcao H (assumindo que essa funcao pode ser computada de forma eficiente). Por
outro lado, definiremos H de forma que seu crescimento dependa da dificuldade do proprio
problema SATH (H sera uma funcao bem-definida, uma vez que o valor H(n) depende
apenas de valores H(n0 ) para n0 < n):
Considere uma enumeracao das maquinas de Turing. Para todo n
umero natural n, definimos H(n) como sendo o menor inteiro i < log log n tal que, para
toda palavra x {0, 1}? com |x| log n, a maquina de Turing Mi computa,
tendo x como entrada, em no maximo i|x|i passos e Mi (x) = 1 se e somente
se x SATH . Se nao existe tal i, entao definimos H(n) = log log n.
A funcao H foi definida dessa forma para que possamos provar o seguinte resultado.
Lema 4.35. SATH P se e somente se H(n) e O(1) (ou seja, existe uma constante C
tal que H(n) C para todo inteiro n).
Demonstracao. Primeiro, suponha que SATH P. Seja M uma maquina de Turing que
decide essa linguagem em no maximo c1 nc1 passos. Como adotamos uma codificacao de
maquinas de Turing em que cada maquina e representada por infinitas palavras, existe
i
um inteiro i c1 tal que M e equivalente a Mi . Se n > 22 , entao i < log log n e da segue
da definicao de H(n) que temos H(n) i. Isso prova que H(n) e uma funcao O(1).
Suponha agora que H(n) seja O(1). Como H so pode assumir um n
umero finito de
valores, existe um inteiro i tal que H(n) = i para valores arbitrariamente grandes de n.
Segue pela definicao da funcao H(n) que a maquina de Turing Mi decide SATH em tempo
ini . Isso prova que SATH P.
Vamos agora demonstrar que H(n) pode ser computada eficientemente.
79
80
Demonstracao. Suponha que SATH P. Pelo lema 4.35, H(n) C para alguma constante
C, ou seja, as palavras de SATH sao apenas as palavras de SAT preenchidas com uma
quantidade polinomial de bits adicionais. Por isso, segue facilmente que SAT p SATH , o
que prova que SAT P e portanto P = NP. Como isso contradiz a hipotese do teorema,
temos que SATH
/ P.
Lema 4.39. SATH nao e uma linguagem NP-completa.
Demonstracao. Suponha que SATH seja uma linguagem NP-completa. Entao, existe uma
funcao g(x) : {0, 1}? {0, 1}? que computa a reducao SAT p SATH em tempo O(nk1 ),
para algum inteiro k positivo. Isso garante que existe um inteiro n0 tal que, para entradas
de tamanho maior ou igual a n0 , a reducao anterior pode ser computada em tempo nk .
Como provamos no lema 4.38 que SATH
/ P, segue pelo lema 4.35 que a funcao H(n)
assume valores arbitrariamente grandes. Seja n1 o menor inteiro maior ou igual a n0 tal
que, para todo n n1 , temos H(n) > k. Vamos mostrar que podemos construir um
algoritmo recursivo A que decide a linguagem SAT em tempo polinomial. Com entrada
de tamanho n, A computa da seguinte maneira:
(1) Se n < n1 , entao A decide se a formula e satisfatvel atraves de uma busca exaustiva.
(2) Caso contrario, A computa w = g(). Se a palavra w obtida nao for da forma
H(||)
01||
, entao A rejeita a formula . Caso contrario, recursivamente, A retorna A().
Seja || = n0 . Observe que se n0 < n1 , entao nao ocorrem mais chamadas recursivas
apos a chamada realizada no passo 2. Se n0 n1 , o tamanho de w e limitado pela
complexidade de tempo da reducao computada por g(), ou seja, |w| nk . Lembre que
0
temos || = n e que |w| = || + 1 + ||H(||) = n0 + 1 + n0H(n ) . Portanto, temos:
0
81
possvel provar um resultado ainda mais forte. Se P 6= NP, entao existem infinitos
E
nveis de dificuldade entre as classes P e NP.
Teorema 4.40. Suponha que P 6= NP. Entao existe uma sequencia infinita de linguagens
L1 , L2 , . . . em NP \ P, de forma que Li+1 e Karp-redutvel `a Li , mas Li nao e Cookredutvel `a Li+1 .
Demonstracao. Veja a prova desse resultado no livro de Goldreich [47].
Do ponto de vista matematico, entender a complexidade computacional dos problemas
intermediarios e uma tarefa extremamente difcil. Se P 6= NP, sabemos que nenhum
problema NP-completo possui algoritmo eficiente. No entando, continuamos sem saber,
por exemplo, se o problema do isomorfismo entre grafos pode ser resolvido de forma
eficiente.
4.6
82
O leitor interessado pode observar na literatura que as reducoes usuais utilizadas para
provar a completude dos problemas quase nunca sao isomorfismos polinomiais. Geralmente, isso ocorre porque as instancias produzidas na reducao sao muito especficas, ao
passo que o isomorfismo polinomial precisa ser sobrejetivo.
No entanto, existe um metodo relativamente simples que pode ser usado para converter diversas reducoes em isomorfismos polinomiais. Em particular, e possvel aplicar esse
metodo para demonstrar que todos os problemas NP-completos conhecidos sao polinomialmente isomorfos. Consulte o livro de Papadimitriou [88] para mais detalhes. Devido
a essa enorme evidencia experimental, Hartmanis e Berman [50] sugeriram a seguinte
conjectura.
Quest
ao em Aberto 4.42. [Conjectura do Isomorfismo de Berman-Hartmanis]. Se
L1 , L2 {0, 1}? sao linguagens NP-completas, entao L1 e L2 sao polinomialmente isomorfas?
Como o isomorfismo polinomial e uma relacao de equivalencia, essa conjectura procura
estabelecer essencialmente que todos os problems NP-completos sao equivalentes.
simples perceber que a conjectura do isomorfismo implica que P 6= NP. Primeiro,
E
suponha que P = NP. Entao todas as linguagens nao-triviais de NP sao NP-completas, e
portanto polinomialmente isomorfas. Por outro lado, uma linguagem finita e uma linguagem infinita nao podem ser polinomialmente isomorfas, uma vez que nao existe bijecao
entre um conjunto finito e um conjunto infinito.
Apesar da conjectura do isomorfismo ser bastante intuitiva, alguns resultados indicam
que ela pode ser falsa. Em particular, ela nao e valida na presenca de um oraculo aleatorio
(Kurtz et al. [71]). Veremos como resultados envolvendo oraculos aleatorios podem ser
formalizados na secao 5.5.
A proxima definicao introduz uma propriedade estrutural importante das linguagens.
Definic
ao 4.43. [Densidade de uma Linguagem]. Seja L {0, 1}? uma linguagem arbitraria. A funcao de densidade de L e dada por densL (n) = |{x L : |x| n}|. Ou
seja, densL (n) e o n
umero de palavras de tamanho menor ou igual a n que pertecem `a
linguagem L.
Observe que o crescimento da funcao de densidade e no maximo exponencial. Por isso,
podemos particionar as linguagens em duas classes.
Definic
ao 4.44. [Linguages Densas e Linguagens Esparsas]. Seja L {0, 1}? uma linguagem arbitraria e densL (n) : N N sua funcao de densidade. Dizemos que L e uma
linguagem esparsa se existe um polinomio p(x) com densL (n) p(n), para todo inteiro
positivo n. Caso contrario, dizemos que L e uma linguagem densa.
83
84
A linguagem SAT* e formada por pares de formulas e atribuicoes parciais tais que
existe uma atribuicao parcial menor ou igual (segundo a ordem lexicografica) a` atribuicao
parcial de entrada, e que pode ser estendida a uma atribuicao que satisfaz a formula de
entrada. Observe que 0 serve como certificado eficiente para a linguagem SAT*. Por
isso, SAT* NP. Como SAT e uma linguagem NP-completa, temos que SAT* p SAT.
Pela transitivade da reducao de Karp, obtemos que SAT* p S. Seja h : {0, 1}? {0, 1}?
uma reducao de tempo polinomial entre SAT* e S. Como para toda atribuicao parcial
temos || ||, existe uma constante c1 tal que |h(h, i)| c1 ||c1 . Observe que essa
constante e independente da atribuicao parcial . Por isso, segue a partir da definicao
do polinomio p(.) que existem no maximo p(c1 ||c1 ) palavras em S que sao imagem de
h(h, .i). Seja N esse n
umero.
Exibiremos um algoritmo polinomial que encontra a menor atribuicao que satisfaz a
formula de entrada (x1 , . . . , xn ), caso ela seja satisfatvel. Associamos a essa formula
uma arvore binaria de atribuicoes parciais de altura n + 1 (no nvel inicial temos a palavra
vazia , no proximo nvel as palavras 0 e 1, e assim por diante). Vamos explorar essa
arvore e encontrar a menor atribuicao que satisfaz (caso ela exista). No entanto, nosso
algoritmo verificara (em tempo polinomial) no maximo N nos em cada nvel da arvore.
Como esse valor e polinomial no tamanho da entrada, teremos um algoritmo eficiente
que podera ser usado para decidir a linguagem SAT. Desenvolveremos e provaremos a
corretude do nosso algoritmo por inducao:
No i-esimo nvel da arvore, temos no maximo N nos (atribuicoes de tamanho
i) a serem analisados. Alem do mais, se a formula for satistatvel, algum
desses nos pode ser estendido `a menor atribuicao que satisfaz .
No caso i = 0, a hipotese de inducao e claramente satisfeita, uma vez que se e
satisfatvel, entao a palavra vazia pode ser estendida a` menor atribuicao que satisfaz .
Suponha que o algoritmo tenha executado ate o i-esimo nvel da arvore e que a hipotese
de inducao seja verdadeira nesse nvel. Seja k N o n
umero de nos restantes ao fim dessa
etapa. Inicialmente, geramos todos as 2k atribuicoes parciais a serem verificadas no nvel
i + 1. Segue a partir da hipotese de inducao e por exaustao que alguma delas pode
ser estendida a` menor atribuicao que satisfaz a formula , caso seja satisfatvel. Se
2k N , entao a hipotese de inducao continua verdadeira e partimos para o nvel seguinte
da arvore. Caso contrario, sejam 1 , . . . , 2k as atribuicoes parciais obtidas nessa etapa.
Em primeiro lugar, computamos em tempo polinomial as palavras wj = h(h, j i),
para 1 j 2k. Se existirem ndices j e j 0 tais que wj = wj 0 , entao h, j i SAT* se
e somente se h, j 0 i SAT* (lembre que h e uma reducao entre SAT* e S). Afirmamos
que a maior dessas atribuicoes parciais nao pode ser estendida `a menor atribuicao que
satisfaz . A fim de obtermos uma contradicao, suponha que isso seja possvel. Assuma,
85
sem perda de generalidade, que j j 0 . Vamos considerar os dois cenarios possveis. Por
um lado, se h, j 0 i SAT*, vimos anteriormente que h, j i SAT*. Como j j 0 e
h, j i SAT*, j 0 nao pode ser estendida a` menor atribuicao que satisfaz (note que
j 6= j 0 ). Por outro lado, se h, j 0 i
/ SAT*, entao j 0 nao pode ser estendida a` nenhuma
atribuicao que satisfaz , e muito menos a` menor delas. Por isso, precisamos continuar
a execucao do algoritmo guardando apenas as atribuicoes parciais que possuem imagens
distintas segundo a funcao h, dando preferencia por aquelas que sao menores segundo `a
ordem lexicografica.
Seja k 0 o n
umero de atribuicoes parciais (com imagens distintas por h) restantes. Se
0
k N , passamos para o proximo nvel da arvore. Caso contrario, eliminamos as k 0 N
primeiras atribuicoes parciais segundo a ordem lexicografica e passamos para a proxima
etapa. Isso pode ser feito pois, caso alguma das k 0 N primeiras atribuicoes parciais
possa ser estendida `a uma atribuicao que satisfaz , teremos mais do que N atribuicoes
parciais restantes formando palavras da forma h, .i pertencentes `a SAT*, e portanto mais
do que N imagens distintas h(h, .i) em S, o que contradiz a definicao de N . Portanto, o
i + 1-esimo passo e completado e a hipotese de inducao continua valida.
Finalmente, utilizamos o algoritmo anterior para encontrar em tempo polinomial
um conjunto de no maximo N atribuicoes de tamanho n para a formula de entrada
(x1 , . . . , xn ). Alem disso, por hipotese, alguma dessas atribuicoes e a menor atribuicao
possvel que satisfaz a formula , caso seja satisfatvel. Verificamos o valor de (j )
para cada atribuicao j e descobrimos se a formula de entrada e satisfatvel. Isso completa
a descricao do algoritmo de tempo polinomial que decide SAT.
Um importante precursor desse teorema foi um resultado provado por Berman [11].
Corol
ario 4.47. [Teorema de Berman]. Suponha que alguma linguagem unaria L {1}?
seja NP-completa. Entao P = NP.
Demonstracao. Note que toda linguagem unaria e esparsa. O resultado segue pelo teorema
de Mahaney.
possvel demonstrar que a dificuldade das linguagens de baixa densidade em NP
E
depende da relacao entre certas classes de complexidade mais fortes.
Teorema 4.48. EXP 6= NEXP se e somente se existe uma linguagem esparsa em NP \ P.
Demonstracao. A prova desse resultado pode ser obtida no artigo original de Hartmanis
et al. [53].
Observe que esse teorema fornece uma prova alternativa do teorema de Ladner atraves
da hipotese mais forte de que EXP 6= NEXP, uma vez que uma linguagem esparsa nao
pode ser NP-completa pelo teorema de Mahaney.
86
4.7
Algoritmos Otimos
para NP
Nesta secao vamos provar que todo problema de busca com solucoes eficientemente
verificaveis admite um algoritmo (assintoticamente) otimo. Alem disso, vamos exibir
explicitamente o seu codigo. Embora seja possvel provar a otimalidade do algoritmo, a
demonstracao apresentada nao deixa nenhuma pista sobre sua complexidade.
Seja V um verificador eficiente para uma linguagem L NP. Na secao 2.3 definimos o
problema de busca relacionado ao verificador V : dada uma palavra de entrada x, encontrar
uma palavra w tal que V (x, w) = 1, ou indicar que tal w nao existe.
Definic
ao 4.49. Sejam V um verificador eficiente para uma linguagem L NP e q(x) o
polinomio que descreve o tamanho dos certificados aceitos por V . Denotamos por SV (x) =
{w {0, 1}q(|x|) : V (x, w) = 1} o conjunto de solucoes da entrada x em relacao ao
verificador V .
Para simplificar a demonstracao e o enunciado do resultado, nao vamos considerar o
modelo computacional de maquinas de Turing nesta secao. Assuma que todos os algoritmos discutidos podem ser implementados em um modelo computacional capaz de simular
t passos de sua computacao em no maximo kt passos, onde k e uma constante adequada.
Essa simplificacao nao oferece qualquer risco, uma vez que o teorema desta secao nao sera
utilizado no resto do texto. Se A e um algoritmo, entao tA (x) representa o n
umero de
passos utilizados por A com entrada x.
4.7. Algoritmos Otimos
para NP
87
que nao possuem solucao, simulamos tambem em paralelo um algoritmo B que usa uma
busca exaustiva para procurar todos os certificados aceitos pelo verificador V . Podemos
escolher o algoritmo B de modo que tB (x) = O(2q(|x|) p(|x|)).
Suponha que os algoritmos estejam ordenadas de acordo com a ordem lexicografica de
suas descricoes. A simulacao em paralelo realizada por A ocorre por etapas. Na j-esima
etapa de simulacao:
(1) A simula os primeiros 2j 1 algoritmos com entrada x;
(2) O algoritmo Ai e simulado por 2j /(i + 1)2 passos, onde 1 i 2j 1;
Pj
(3) O algoritmo B e simulado por 2i=11 2j /(i + 1)2 passos, ou seja, pelo n
umero total de
passos simulados no item anterior.
A variacao na taxa de simulacao de cada algoritmo sera u
til para provarmos o item (ii)
do teorema. A simulacao do algoritmo B continua na proxima etapa a partir do u
ltimo
passo realizado na etapa anterior. Por outro lado, para nao sobrecarregar o algoritmo A,
as simulacoes do item (2) sao perdidas ao fim de cada etapa. Assumimos que os passos
utilizados para verificacao da solucao obtida pelo algoritmo Ai tambem sao contados na
simulacao realizada em (2).
Devido `a simulacao paralela realizada em (3), o algoritmo A sempre termina sua
computacao. Por isso, os itens (i) e (iii) do teorema sao satisfeitos.
Vamos finalmente provar que A satisfaz a segunda propriedade do enunciado. Seja A0
um algoritmo que resolve o problema de busca associado ao verificador V . Alem disso,
suponha que SV (x) 6= . Vamos denotar por t0 (x) = tA0 (x) + p(x) o tempo gasto por A0
para obter uma solucao para a entrada x mais o tempo utilizado por V com a verificacao
0
da solucao obtida. Observe que A0 e no maximo o (2|A |+1 1)-esimo algoritmo segundo a
ordenacao lexicografica adotada. Por isso, os t0 (x) passos necessarios para obter e verificar
a solucao de A0 sao realizados na j-esima etapa de simulacao se:
0
k 2X
1
X
j=1 i=1
k
k
2X
1
X
2j
1
2 X j+1
0
j+1
2
2
2k+3 = 22|A |+5 [tA0 (x) + p(|x|)].
2
2
(i + 1)
(i + 1)
6 j=1
j=1
i=1
88
P
2
Usamos em uma das desigualdades anteriores o fato de que a serie
e conn=1 1/n
P
2
2
vergente (Rudin [94]). Em particular, temos n=1 1/n = /6. Como assumimos que t
passos podem ser simulados em tempo kt, obtemos que tA (x) = O(tA0 (x) + p(|x|)), como
queramos demonstrar.
Observe que a constante escondida na notacao assintotica depende apenas do algoritmo A0 . Alem disso, essa constante cresce exponencialmente com a descricao de A0 .
Infelizmente, isso faz com que o algoritmo obtido seja inviavel na pratica. No entanto, a
nocao de otimalidade e pontual, ou seja, e valida para cada palavra de tamanho n que
possui solucao, e nao apenas no pior caso.
Mostraremos a seguir que, se a constante anterior fosse apenas polinomial no tamanho
do algoritmo A0 , entao P = NP. Suponha que existisse um polinomio q(.) de forma que
q(|A0 |) limitasse o valor dessa constante. Primeiro, para toda formula proposicional
satisfatvel existe um algoritmo A de tamanho O(|hi|) que, com entrada hi, imprime
uma atribuicao ~y tal que (~y ) = 1 (adicionamos a propria atribuicao ao codigo de A ).
Alem disso, A computa em tempo linear. Portanto, para L = SAT, a complexidade de
tempo do algoritmo obtido na demonstracao anterior seria O(q(|A |)[tA (x) + p(|x|)]),
onde tA (x) e O(x) e |A | e O(|x|). Portanto, poderamos encontrar uma atribuicao
satisfazendo a formula de entrada em tempo polinomial ou determinar que tal atribuicao
nao existe apos a simulacao desse n
umero de passos. Isso provaria que SAT P, e portanto
teramos P = NP.
4.8
Refer
encias Adicionais
89
Captulo 5
Os Limites da Diagonaliza
c
ao
Oracles are subtle but not malicious.
Scott Aaronson.
Veremos neste captulo que alguns metodos discutidos nesta dissertacao nao
sao capazes de resolver o problema P vs NP. Discutiremos em seguida como
essa limitacao se relaciona com resultados de independencia formal em matematica. Alem disso, vamos estudar o comportamento de diversos problemas
em aberto da complexidade computacional em universos computacionais alternativos. Finalmente, discutiremos como metodos mais modernos superam
a limitacao enfrentada por algumas das tecnicas estudadas anteriormente.
5.1
Introduc
ao
Vimos no captulo 3 que o metodo da diagonalizacao pode ser usado para separar
diversas classes de complexidade interessantes. Em particular, discutimos na secao 3.6
como ele pode ser aplicado, em conjunto com a nocao de completude, para provar que
certos problemas computacionais naturais nao podem ser resolvidos em tempo polinomial.
Alem disso, mostramos em diversas ocasioes que certas inclusoes de classe podem ser
provadas atraves de simulacao.
O principal objetivo deste captulo e demonstrar que essas ideias, emboram sejam
muito poderosas, sao insuficientes para resolver diversas questoes em aberto discutidas
nesta dissertacao. Em particular, mostraremos que nao podemos separar (ou colapsar)
classes como P e PSPACE, NP e coNP, P e PH, e P e NP utilizando apenas simulacao
e diagonalizacao. A principal desvantagem desses metodos e que eles tratam os algo91
92
5.1. Introducao
93
separacao atraves de diagonalizacao e preciso explorar de modo inteligente alguma propriedade do recurso mais poderoso. A mesma dificuldade aparece quando o argumento
anterior e adaptado para as classes P e NP, por exemplo.
Discutimos na secao 4.4 o conceito de maquinas de Turing com acesso a um oraculo.
Vamos a seguir generalizar a definicao 4.29. Se R e uma classe de complexidade e L
{0, 1}? e uma linguagem, denotamos por RL o conjunto de linguagens decidveis por
maquinas de Turing que utilizam uma quantidade de recursos compatvel com a definicao
da classe R e possuem acesso `a linguagem L atraves de um oraculo. Por exemplo, NPSAT
denota o conjunto de linguagens decidveis em tempo polinomial nao-determinstico por
maquinas de Turing com acesso a um oraculo para a linguagem SAT.
A adicao de um oraculo a` definicao de uma classe de complexidade cria um novo
universo computacional. Enquanto vivemos em um universo onde nenhuma computacao
ocorre de graca, podemos imaginar mundos em que essa regra e violada. Por exemplo,
NPSAT e uma classe aparentemente mais poderosa do que NP, uma vez que cada caminho
nao-determinstico pode resolver instantaneamente uma instancia de SAT. Utilizando a
completude de SAT e negando a resposta do oraculo, podemos obter a resposta de uma
computacao nao-determinstica baseada em quantificadores universais. Formalmente, e
possvel demonstrar que NPSAT = p2 (veja o livro de Arora e Barak [7], por exemplo).
2
Observamos que muitos textos definem classes de complexidade do tipo RR
1 . Nesse
caso, as maquinas envolvidas podem ter acesso a` qualquer linguagem da classe R2 (a
linguagem e fixa, porem arbitraria). Na maioria dos casos, isso equivale a dizer que
L
2
RR
e uma linguagem completa para a classe R2 .
1 = R1 , onde L
Durante uma simulacao entre maquinas de Turing, todas as chamadas a um oraculo
feitas pela maquina simulada podem ser respondidas pela maquina simuladora, desde que
ela possua acesso ao mesmo oraculo. Veremos a seguir um resultado que utiliza essa
observacao para estender um teorema demonstrado na secao 3.3.
Teorema 5.2. [Diagonalizacao e Oraculos]. Para toda linguagem O {0, 1}? , temos que
PO 6= EXPO .
Demonstracao. Claramente, temos que PO EXPO . Vamos exibir uma maquina de Turing D com acesso ao oraculo O que decide uma linguagem LD tal que LD EXPO \ PO .
Com entrada hMi i, D computa da seguinte forma:
1) Simula 2n passos da computacao da maquina Mi com entrada hMi i, onde n = |hMi i|.
2) Se Mi invoca o oraculo O com uma palavra z na sua fita de oraculo, D obtem a resposta
dessa chamada atraves do seu proprio oraculo para a linguagem O.
3) A maquina D rejeita a entrada hMi i se e somente se Mi aceita hMi i durante a simulacao
anterior.
94
5.2
Nesta secao vamos provar que existem linguagens A, B {0, 1}? tais que PA = NPA
e PB 6= NPB . Esse resultado foi provado por Baker, Gill e Solovay [8]. Como provas por
simulacao e diagonalizacao demonstram resultados validos em qualquer universo computacional, isso mostra que esses metodos nao sao suficientes para resolver o problema P vs
NP.
Teorema 5.3. [Teorema de Relativizacao BGS]. Existem linguagens A, B {0, 1}? tais
que PA = NPA e PB 6= NPB . Alem disso, temos que A,B EXP.
Demonstracao. Seja A uma linguagem PSPACE-completa. Claramente, usando simulacao temos que PA = PSPACE = NPA . Pelo lema 3.9, obtemos que A EXP.
Precisamos agora demonstrar a existencia de linguagens B e LB tais que LB NPB \ PB .
Para toda linguagem B {0, 1}? , seja LB a seguinte linguagem unaria:
LB = {1n : w {0, 1}n tal que w B}.
Observe que, para toda linguagem B, temos que LB NPB (um verificador eficiente
com acesso `a B pode usar w como certificado de que 1n LB ). Resta demonstrar que
LB
/ PB . Para obter isso, vamos definir B em etapas, de modo que essa linguagem
95
seja uma adversaria para qualquer maquina de Turing de tempo polinomial com acesso
ao oraculo B que tenta decidir LB . Considere que M1 , M2 , . . . e uma lista de todas as
maquinas de Turing, de forma que cada maquina de Turing apareca infinitas vezes nessa
enumeracao.
Ate o incio da etapa i, a pertinencia em B de apenas uma quantidade finita de
palavras foi determinada. Note que isso vale no incio da etapa 1, quando B e totalmente
indeterminada. Seja n i o menor n
umero inteiro de forma que a presenca em B
de nenhuma palavra de tamanho maior ou igual a n tenha sido decidida. Considere
a computacao de ate 2n1 passos da maquina de Turing Mi com entrada 1n (Mi pode
terminar sua computacao antes de completar 2n1 passos). Se a maquina Mi indaga sobre
a presenca em B de uma palavra w ja determinada, respondemos consistentemente. Se
a presenca de w ainda nao foi decidida, respondemos negativamente e determinamos que
w
/ B. Por u
ltimo, se em 2n1 passos a maquina Mi aceita a entrada 1n , determinamos
que todas as palavras restantes de tamanho menor ou igual a n ainda nao consultadas
nao pertencem `a linguagem B. Caso contrario, decidimos que essas palavras estao em B.
Isso completa a descricao da linguagem B.
Note que se Mi aceita 1n em ate 2n1 passos, entao nao existe palavra de tamanho
n que pertence a` B, ou seja, 1n
/ LB . Por outro lado, se a palavra 1n nao e aceita por
Mi em ate 2n1 passos, pelo menos metade das palavras de tamanho n estao em B, uma
vez que em 2n1 passos B so pode ter usado o oraculo para verificar a pertinencia de ate
2n1 palavras. Por isso, neste caso temos que 1n LB . Isso mostra que se Mi termina
sua computacao com a entrada 1n em ate 2n1 passos, entao Mi nao decide LB .
Seja M uma maquina de Turing que computa em tempo polinomial. Entao existe um
inteiro positivo n0 tal que, para toda palavra w de tamanho n0 n0 , M aceita ou rejeita
0
w em no maximo 2n 1 passos. Lembre que cada maquina de Turing aparece infinitas
vezes na enumeracao adotada. Portanto, existe um ndice i n0 tal que M e equivalente
a Mi . Alem disso, na i-esima etapa de construcao da linguagem B, tomamos n i n0
e garantimos que se Mi computa em tempo 2n1 com a entrada 1n , entao L(Mi ) 6= LB .
Portanto, M nao decide a linguagem LB . Isso prova que nao existe maquina de Turing
de tempo polinomial com acesso ao oraculo B que decide LB , ou seja, LB
/ PB .
Observe que, como tomamos na i-esima etapa n i, a presenca em B de palavras de
tamanho menor ou igual a n e determinada pelo comportamento das primeiras i maquinas
de Turing. Portanto, para decidir se uma palavra w de tamanho n pertence a` B, basta
simularmos a computacao das primeiras i maquinas de Turing, onde i n e a i-esima
maquina nunca precisa ser simulada por mais do que 2n1 passos. Como isso pode ser
feito em tempo exponencial, temos que B EXP, como queramos demonstrar.
O teorema anterior nos da forte evidencia de que, para resolver o problema P vs NP,
precisamos investigar profundamente as computacoes envolvidas, e nao apenas simula-
96
interessante notar que provamos que a diagonalizacao e uma tecnica fraca contra o
las. E
problema P vs NP utilizando basicamente um argumento por diagonalizacao.
Podemos estudar os oraculos em situacoes muito mais complexas. Por exemplo, existe
algum universo computacional onde NP = coNP, mas P 6= NP? Vamos enunciar diversos
resultados desse tipo na secao 5.4.
5.3
P vs NP e Resultados de Independ
encia
Quais as implicacoes do Teorema BGS para o problema P vs NP? Nesta secao vamos
discutir algumas questoes envolvendo oraculos e resultados de independencia em matematica.
Dizemos que uma proposicao matematica e independente de um conjunto de axiomas
A se tanto quanto nao podem ser provadas a partir de A. Em primeiro lugar,
como isso pode ser possvel? Inicialmente, vamos discutir a diferenca entre verdade e
demonstrabilidade.
A nocao de verdade nunca esta relacionada com um conjunto de axiomas, mas sim
com uma determinada estrutura que satisfaz os axiomas adotados. Por exemplo, dados
os axiomas da teoria de grupos, um grupo arbitrario G1 e uma estrutura que satisfaz
tais axiomas. Seja uma formula que expressa que um grupo e comutativo, ou seja,
xy(xy = y x). A formula pode ser verdadeira para alguns grupos e falsa em relacao
a outros grupos. Portanto, a nocao de verdade depende da estrutura em consideracao.
Por outro lado, o conceito de demonstrabilidade depende apenas dos axiomas e das
regras de derivacao de um sistema formal. Uma formula pode ser provavel a partir
de um conjunto de axiomas A (e de certas regras de derivacao) ou nao. Um fato muito
importante dos sistemas formais utilizados em matematica e que eles sao corretos, ou
seja, sempre que uma formula e demonstravel a partir de um conjunto de axiomas,
ela e verdadeira em qualquer estrutura que satisfaca os axiomas. Por exemplo, quando
provamos um teorema a partir dos axiomas da teoria de grupos, sabemos que todo
grupo (i.e., estrutura compatvel com esses axiomas) satisfaz a proposicao . Devido a`
corretude, se existem duas estruturas diferentes que satisfazem certos axiomas, mas que
nao concordam em relacao a uma certa propriedade expressa por uma formula (em uma
estrutura a propriedade e verdadeira e em outra nao), entao temos que tanto quanto
sao formulas que nao podem ser provadas a partir de tais axiomas. Portanto, dados
certos axiomas, e possvel que uma proposicao seja verdadeira (em relacao a uma estrutura
canonica que associamos ao sistema formal1 ), porem nao seja demonstravel.
1
97
98
5.4
99
Resultados Adicionais
Nesta secao veremos que existem universos computacionais onde as mais variadas situacoes envolvendo classes de complexidade podem acontecer. Embora tais resultados
indiquem que nao devemos esperar por solucoes simples para muitas questoes em complexidade computacional, eles podem nos fornecer algumas informacoes interessantes. Por
exemplo, considere o seguinte problema em aberto.
Quest
ao em Aberto 5.5. Se P = NP, entao P = PSPACE ?
Considere a seguinte abordagem para provar esse resultado. Vimos na secao 4.2 que
a classe PSPACE contem as linguagens decidveis por maquinas de Turing de tempo
polinomial com um n
umero arbitrario de alternancias (veja o corolario 4.19). Poderamos
utilizar a hipotese de que P = NP e simulacao para eliminar cada alternancia, uma de cada
vez, sem aumentar muito a complexidade da maquina de Turing obtida. Isso provaria que
P = PSPACE.
Embora seja bastante intuitiva, essa abordagem nao e viavel. Isso se deve ao seguinte
teorema.
Teorema 5.6. Existe um oraculo A tal que PA = NPA e NPA 6= PSPACEA .
Demonstracao. Veja o artigo de Ko [68].
Portanto, qualquer prova da questao em aberto 5.5 envolvendo apenas simulacao poderia
ser usada para demonstrar tambem que se PA = NPA , entao PA = PSPACEA , contradizendo o teorema 5.6. Na verdade, um resultado mais geral foi provado por Ko [68].
Teorema 5.7. [Oraculos e a Hierarquia Polinomial]. Para todo inteiro k 0, existem
oraculos A e B tais que:
(i) PHA = pk A e PHA 6= PSPACEA .
(ii) PHB = pk B e PHB = PSPACEB .
O teorema 5.6 fica demonstrado quando tomamos k = 0. Em particular, o teorema
anterior mostra que nao podemos separar ou colapsar os nveis da hierarquia polinomial
atraves de uma demonstracao que envolva apenas simulacao e diagonalizacao.
Vamos enunciar a seguir diversos resultados envolvendo oraculos. A maioria dos oraculos sao construdos por etapas usando diagonalizacao, como na prova do teorema 5.3.
Alguns deles precisam satisfazer diversos requisitos simultaneamente, o que torna as demonstracoes um pouco mais complicadas. Por simplicidade, as provas foram omitidas.
O proximo resultado mostra que, em universos relativizados, as mais diversas situacoes
podem ocorrer envolvendo as classes P, NP e coNP.
100
Teorema 5.8. [P, NP, coNP e Relativizacao]. Existem oraculos A,B e C tais que:
(i) PA 6= NPA coNPA e NPA coNPA 6= NPA .
(ii) PB 6= NPB e NPB = coNPB .
(iii) PC = NPC coNPC e NPC coNPC 6= NPC .
Demonstracao. Veja o artigo original sobre relativizacao de Baker, Gill e Solovay [8].
posVimos na secao 2.8 que se P = NP, entao EXP = NEXP (teorema 2.30). E
svel provar a equivalencia entre essas duas afirmacoes? Utilizando apenas simulacao e
diagonalizacao, a resposta e negativa.
Teorema 5.9. Existe um oraculo A tal que PA 6= NPA e EXPA = NEXPA .
Demonstracao. Veja o artigo de Dekhtyar [32].
Alem disso, nesse mesmo artigo e demonstrado que existem oraculos que separam as
classes PSPACE e EXP.
Discutimos na secao 4.6 a conjectura do isomorfismo. Notamos que e possvel construir
um oraculo que da origem a um universo computacional onde essa conjectura e verdadeira.
Veja o artigo de Fenner et al. [35] para mais detalhes. Entretanto, veremos na proxima
secao que a conjectura do isomorfismo e falsa na maioria dos universos computacionais
relativizados.
Em suma, resultados envolvendo oraculos servem como um guia para as pesquisas atuais. Precisamos descobrir metodos que nao relativizam se quisermos resolver os problemas
em aberto mais importantes da teoria de complexidade computacional.
5.5
Or
aculos Aleat
orios
101
Existe um resultado em teoria da medida conhecido como lei zero-um que garante
que, para praticamente qualquer propriedade S envolvendo oraculos, S ocorre com probabilidade um ou com probabilidade zero. Em particular, sabemos que Prob(A) = 1 ou
Prob(A) = 0. No entanto, qual dos dois casos e verdadeiro3 ? Bennett e Gill [10] demonstraram que, em praticamente todos os universos computacionais possveis, as classes P e
NP sao distintas.
Teorema 5.10. [P vs NP e Oraculos Aleatorios].
ProbC [PL 6= NPL ] = 1.
Demonstracao. A prova desse resultado considera a linguagem L0 = {0n : w {0, 1}n tal
que w1, w11, . . . , w1n L}. Em primeiro lugar, w serve como certificado de que 0n L0
(o verificador tem acesso ao oraculo L). Portanto, para toda linguagem L, temos que
L0 NPL . Por outro lado, e possvel demonstrar que a probabilidade de L0 ser decidida
por uma maquina de Turing determinstica de tempo polinomial com acesso a` L e zero.
Uma prova completa desse resultado pode ser obtida no livro de Du e Ko [33].
Corol
ario 5.11. Existe um oraculo B tal que PB 6= NPB .
possvel demonstrar que no espaco dos oraculos C a conjectura do isomorfismo e
E
falsa com probabilidade um. Em outras palavras, o conjunto I = {L C : A conjectura
do isomorfismo e verdadeira em NPL } possui medida zero. Esse resultado foi provado por
Kurtz et al. [71].
Finalmente, o que podemos deduzir sobre os problemas originais a partir desses resultados envolvendo oraculos aleatorios? Essa questao levou Bennet e Gill [10] a formularem
a Hipotese do Oraculo Aleatorio:
Se um resultado em complexidade computacional e verdadeiro com probabilidade um para
oraculos aleatorios, entao ele e verdadeiro no universo nao-relativizado.
Se essa hipotese e verdadeira, entao o teorema 5.10 prova que P 6= NP. Alem disso, a
conjectura do isomorfismo seria falsa. No entanto, Kurtz [70] demonstrou que a Hipotese
do Oraculo Aleatorio e falsa. Diversos contra-exemplos adicionais foram obtidos posteriormente [21, 51]. Isso significa que nao e possvel extrair nenhuma relacao entre o teorema
5.10 e a questao P vs NP original.
Finalmente, notamos que os resultados envolvendo oraculos aleatorios sao u
teis na
criacao de universos computacionais onde diversas situacoes ocorrem simultaneamente.
Por exemplo, no espaco dos oraculos C temos com probabilidade um que NP 6= PSPACE
3
Esse fato n
ao contradiz o teorema BGS, uma vez que em espacos infinitos eventos com probabilidade
zero podem ocorrer.
102
e PSPACE ( EXP (veja o livro de Du e Ko [33]). Portanto, existe uma linguagem L tal
que NPL 6= PSPACEL e PSPACEL ( EXPL .
5.6
Relativizac
ao Positiva
103
que o teorema BGS e os outros resultados envolvendo relativizacao nao sao interessantes?
Como vimos nas secoes anteriores, esses teoremas sao essenciais para demonstrarmos que
atraves de simulacao e diagonalizacao nao podemos resolver diversos problemas importantes em complexidade computacional.
5.7
O Argumento Contr
ario de Kozen
Em seu artigo original, uma teoria mais geral e desenvolvida. Nesta secao vamos discutir apenas os
aspectos relacionados com o problema P vs NP.
104
quantidade finita de palavras, existe uma palavra w tal que w diagh se e somente se
w L(Mh(w) ). Como no caso anterior, obtemos uma contradicao. Isso completa a prova
de que diagh
/ P.
Teorema 5.16. [Classe P e Linguagens Diagonais]. Para toda linguagem L
/ P, existe
uma funcao computavel h tal que L = diagh . Alem disso, h pode ser escolhida de forma
que as duas condicoes do lema 5.15 sejam satisfeitas.
Demonstracao. Consulte o artigo original de Kozen [69].
Corol
ario 5.17. P 6= NP se e somente se SAT = diagh , onde h e uma funcao computavel
que satisfaz as duas condicoes do lema 5.15.
Devido ao corolario anterior, Kozen conclui que se P 6= NP e demonstravel, entao isso
pode ser feito atraves de uma prova por diagonalizacao (corolario 6.2 do artigo [69]). O
que podemos concluir a partir dessa afirmacao aparentemente contraditoria?
Fortnow [39] argumenta que o principal problema com a interpretacao original de
Kozen e que o conceito de prova por diagonalizacao nao esta definido. No entanto, vamos
pensar um pouco mais sobre o enunciado do corolario 5.17. Note que, assumindo que
P 6= NP, obtemos que SAT
/ P. Por isso, o teorema 5.16 pode ser aplicado, mostrando que
existe uma funcao h computavel tal que SAT = diagh . Isso prova que podemos separar
P e NP utilizando diagonalizacao? Nao, pois assumimos a hipotese de que P 6= NP
para produzir uma funcao h com as propriedades desejadas. Nada garante que a prova
original que separa as classes P e NP utiliza diagonalizacao. Portanto, embora o teorema
demonstrado por Kozen seja interessante, a interpretacao original dos resultados nao
parece estar correta.
5.8
Vimos nas secoes anteriores que a resposta para diversas questoes em aberto da teoria de complexidade computacional depende do universo computacional em consideracao.
Mostramos tambem que as provas envolvendo apenas diagonalizacao e simulacao relativizam, ou seja, provam resultados que sao validos na presenca de qualquer oraculo. Em
particular, diversos metodos discutidos nesta dissertacao nao sao capazes de resolver o
problema P vs NP.
Apos a demonstracao do teorema BGS, as pesquisas em complexidade computacional
se concentraram na busca por metodos capazes de superar a relativizacao. Uma possibilidade e utilizar problemas completos nas demonstracoes. Por exemplo, a prova do teorema
de Ladner (teorema 4.34) nao pode ser estendida trivialmente para qualquer oraculo O.
A demonstracao desse resultado utiliza a linguagem SAT, que e completa para a classe
105
NP. Para generalizar esse resultado, precisamos substitu-la por uma linguagem completa
para NPO . Nesse caso, linguagens dessa forma poderiam ser obtidas, de modo similar
a`quele usado na demonstracao do teorema 2.22.
A relativizacao das tecnicas baseadas em simulacao e diagonalizacao indica que para
resolver o problema P vs NP devemos de fato analisar as computacoes envolvidas, e
nao apenas simula-las. Como vimos na secao 2.7, uma das abordagens propostas foi a
utilizacao de metodos combinatoricos baseados na complexidade de circuitos.
Por qual motivo esses metodos nao foram capazes de resolver a questao P vs NP? Em
1994, Razborov e Rudich [90] apresentaram uma limitacao crucial para as abordagens
envolvendo limitantes inferiores no tamanho dos circuitos. Eles definiram a nocao de
prova matematica natural, mostrando que todas as abordagens por circuitos utilizadas
ate entao satisfaziam esse conceito. Em seguida, provaram que se fosse possvel obter um
limitante inferior forte com tais provas matematicas, isso violaria uma forma mais forte
da conjectura P vs NP que muitos pesquisadores acreditam ser verdadeira.
A classe de complexidade IP contem as linguagens que admitem provas interativas
eficientes. Para uma definicao precisa, veja o livro de Goldreich [47]. Fortnow e Sipser
[43] demonstraram que em certos universos relativizados, algumas linguagens em PSPACE nao possuem provas interativas eficientes, ou seja, existe um oraculo A tal que
IPA 6= PSPACEA . Portanto, qualquer demonstracao de que IP = PSPACE precisaria
utilizar alguma tecnica nova. No mesmo artigo, Fortnow e Sipser conjecturaram que as
classes IP e PSPACE sao diferentes.
Em 1992, A. Shamir [101] surpreendeu a comunidade cientfica ao demonstrar que
ocorre o colapso entre essas duas classes, ou seja, IP = PSPACE. Sua prova utiliza novas
ideias algortmicas baseadas em metodos algebricos, capazes de superar a barreira imposta
pela existencia de um mundo relativizado contraditorio. A grande novidade utilizada na
demonstracao foi a aritmetizacao de certas formulas logicas basedas em um problema
completo para a classe PSPACE.
Em 1998, Buhrman et al. [17] demonstraram a primeira separacao de classes de complexidade que nao relativiza. O resultado obtido por esses pesquisadores mostra que
podemos separar classes de complexidade atraves de diagonalizacao se utilizarmos na demonstracao algum resultado que nao relativiza. O argumento nao-relativizante utilizado
nessa prova tambem e baseado em metodos algebricos. Portanto, ainda que a tecnica de
diagonalizacao por si so possua muitas limitacoes, quando combinada com outros metodos
que nao relativizam, ela continua capaz de provar resultados interessantes em complexidade computacional.
possvel resolver o problema P vs NP atraves dessas novas tecnicas algebricas? Em
E
2008, Aaronson e Wigderson [5] mostraram que esses metodos tambem nao sao suficientes,
e que diversos resultados importantes, como o ja citado IP = PSPACE, possuem uma
106
propriedade essencial que os tornam compatveis com tais metodos. Por outro lado, e
possvel provar que o problema P vs NP e resistente ao uso dessas tecnicas.
Resumindo, e possvel superar a relativizacao. No entanto, assim como ocorre com
o metodo da diagonalizacao e simulacao, diversas barreiras foram descobertas para as
tecnicas mais recentes. Por um lado, a possibilidade de provar que determinados metodos nao sao capazes de resolver certos problemas e um aspecto fascinante da teoria de
complexidade computacional. Por outro, isso mostra que precisamos de novas ideias para
resolver os problemas em aberto mais importantes na area.
5.9
Refer
encias Adicionais
Diversos topicos discutidos neste captulo sao abordados nos artigos de Fortnow [38, 39]
e no livro de Du e Ko [33]. Consulte esses textos para mais detalhes.
O artigo de Joseph e Young [63] discute a possibilidade da independencia formal de
certas questoes em ciencia da computacao. O artigo de Ben-David e Halevi [9] aborda
a independencia do problema P vs NP. Alem desses textos, recomendamos fortemente a
leitura do artigo de Aaronson [2].
Diversos resultados adicionais envolvendo relativizacao positiva aparecem no artigo de
Book et al. [13]. Para saber mais sobre oraculos aleatorios, leia o artigo de Vollmer e
Wagner [108]. Por u
ltimo, um trabalho relativamente recente de Remmel et al. [83] discute
certas questoes relacionadas com os resultados de Kozen [69] envolvendo diagonalizacao.
Captulo 6
Conclus
ao
Em complexidade computacional existem mais perguntas intrigantes do que respostas.
Como provar que P 6= NP? Quais sao os limites da computacao eficiente? Qual a relacao
entre determinismo e nao-determinismo? A complexidade computacional nao e uma disciplina sobre computadores, mas sim sobre computacao. Infelizmente, nao sabemos muito
sobre esse conceito.
Vimos no incio desta dissertacao que, para mostrar que certos algoritmos nao existem,
precisamos de uma demonstracao matematica. No entanto, na maior parte do texto, o que
usamos realmente de matematica, alem de raciocnio logico? Essencialmente, construmos
novos algoritmos para provar que certos algoritmos nao existem, deixando de lado teorias
e teoremas matematicos mais avancados.
Discutimos os teoremas de hierarquia na secao 3.2. A prova desses teoremas utiliza
um argumento de diagonalizacao muito simples. Analisando a essencia desses resultados, notamos que eles estabelecem o fato fundamental de que nao e possvel acelerar a
computacao de maquinas de Turing universais. Pode parecer ridculo, mas dado nosso
conhecimento atual, sem diagonalizacao a principal questao em aberto da teoria de complexidade computacional seria: existe alguma linguagem que nao pode ser decidida em
tempo linear?
Felizmente, sabemos mais do que isso. Alem disso, olhando para certos universos
computacionais alternativos, fomos capazes de perceber que apenas simulacao e diagonalizacao nao sao suficientes para resolver diversos problemas importantes. Estimulados por
esse resultado, descobrimos novos metodos, assim como novas barreiras.
Todas essas limitacoes sugerem que o problema P vs NP e sutil demais para as tecnicas
bem provavel que seja preciso utilizar metodos muito mais avancados para
conhecidas. E
resolver esse problema. Vimos na secao 2.7 que abordagens mais recentes sao baseadas
muito difcil prever quando respostas definitivas serao encontradas. A
nessa intuicao. E
u
nica certeza e que muitas surpresas e resultados extraordinarios estao por vir.
107
Refer
encias Bibliogr
aficas
[1] S. Aaronson. The complexity zoo. Disponvel em http://qwiki.caltech.edu/wiki/
ComplexityZoo.
[2] S. Aaronson. Is P Versus NP Formally Independent?
81:109136, 2003.
[3] S. Aaronson. The prime facts: From Euclid to AKS, 2003. Disponvel em http:
//www.scottaaronson.com/writings/prime.pdf.
[4] S. Aaronson. Guest Column: NP-complete problems and physical reality. ACM
SIGACT News, 36(1):3052, 2005.
[5] S. Aaronson e A. Wigderson. Algebrization: A new barrier in complexity theory.
ACM Transactions on Computation Theory, 1(1):2, 2009.
[6] M. Agrawal, N. Kayal, e N. Saxena. PRIMES is in P. Annals of Mathematics,
paginas 781793, 2004.
[7] S. Arora e B. Barak. Computational Complexity: A Modern Approach. Cambridge
University Press, New York, NY, 2009.
[8] T. Baker, J. Gill, e R. Solovay. Relativizations of the P =? NP Question. Journal
of the ACM, 42:401420, 1975.
[9] S. Ben-David e S. Halevi. On the independence of P versus NP. Relatorio tecnico,
Relatorio Tecnico.
[10] C.H. Bennett e J. Gill. Relative to a Random Oracle A, PA 6= NPA 6= coNPA with
Probability 1. SIAM Journal on Computing, 10(1):96113, 1981.
[11] P. Berman. Relationship between density and deterministic complexity of NPcomplete languages. Fifth International Colloquium on Automata, Languages, and
Programming, paginas 6371, 1978.
109
110
REFERENCIAS
BIBLIOGRAFICAS
REFERENCIAS
BIBLIOGRAFICAS
111
[26] S.A. Cook. The complexity of theorem-proving procedures. Proceedings of the third
annual ACM symposium on Theory of computing, 1971.
[27] S.A. Cook. A hierarchy for nondeterministic time complexity. Journal of Computer
and System Sciences, 7(4):343353, 1973.
[28] Stephen Cook.
[29] T.H. Cormen, C.E. Leiserson, e R.L. Rivest. Introduction to algorithms. The MIT
press, 2001.
[30] S.C. Coutinho. Primalidade em tempo polinomial: uma introducao ao algoritmo
AKS. IMPA, 2003.
[31] Martin Davis. The Undecidable. Raven Press, Hewlett, NY, 1965.
[32] M. Dekhtyar. On the relativization of deterministic and nondeterministic complexity
classes. Mathematical Foundations of Computer Science, paginas 255259, 1976.
[33] D.Z. Du e K.I. Ko. Theory of computational complexity. Wiley New York, 2000.
[34] J. Edmonds. Paths, trees, and flowers.
17(3):449467, 1965.
[35] S. Fenner, L. Fortnow, e S.A. Kurtz. The isomorphism conjecture holds relative to
an oracle. Proceedings of the 33rd Annual Symposium on Foundations of Computer
Science, paginas 3039, 1992.
[36] M.J. Fischer e M.O. Rabin. Super-Exponential Complexity of Presburger Arithmetic, 1974.
[37] L. Fortnow. Two Proofs of Ladners Theorem.
[38] L. Fortnow. The role of relativization in complexity theory. Bulletin of the EATCS,
52:229243, 1994.
[39] L. Fortnow. Diagonalization. Current trends in theoretical computer science. World
Scientific Publishing Company, 2001.
[40] L. Fortnow. Beyond NP: the work and legacy of Larry Stockmeyer. Proceedings of
the thirty-seventh annual ACM symposium on Theory of computing, paginas 120
127. ACM, 2005.
112
REFERENCIAS
BIBLIOGRAFICAS
[41] L. Fortnow. The status of the P versus NP problem. Communications of the ACM,
52(9):7886, 2009.
[42] L. Fortnow e S. Homer. A short history of computational complexity. Bulletin of
the EATCS, 80:95133, 2003.
[43] L. Fortnow e M. Sipser. Are there interactive protocols for co-NP languages? Information processing letters, 28(5):249251, 1988.
[44] R.M. Friedberg. Two recursively enumerable sets of incomparable degrees of unsolvability. Proceedings of the National Academy of Sciences of the United States of
America, 43(2):236238, 1957.
[45] M.R. Garey e D.S. Johnson.
completeness, 1979.
REFERENCIAS
BIBLIOGRAFICAS
113
[55] F.C. Hennie. One-tape, off-line Turing machine computations. Inf. and Control,
8:553578, 1965.
[56] F.C. Hennie e R.E. Stearns. Two-tape simulation of multitape Turing machines.
Journal of the ACM, 13(4):533546, 1966.
[57] M. Hirvensalo. Quantum computing. Natural computing series. Springer Verlag,
2004.
[58] J. Hopcroft, W. Paul, e L. Valiant. On time versus space. Journal of the ACM,
24(2):332337, 1977.
[59] J. E. Hopcroft e J. K. Wong. Linear time algorithm for isomorphism of planar
graphs. STOC 74: Proceedings of the sixth annual ACM symposium on Theory of
computing, paginas 172184, New York, NY, USA, 1974. ACM.
[60] M. Hutter. The Fastest and Shortest Algorithm for All Well-Defined Problems.
International Journal of Foundations of Computer Science, 13(3):431443, 2002.
[61] N. Immerman. Descriptive complexity. Springer Verlag, 1999.
[62] R. Impagliazzo. Computational complexity since 1980. FSTTCS 2005: Foundations
of Software Technology and Theoretical Computer Science, paginas 1947.
[63] D. Joseph e P. Young. Independence results in computer science?
Computer and System Sciences, 23(2):205222, 1981.
Journal of
[64] R. Kannan. Circuit-size lower bounds and non-reducibility to sparse sets. Information and Control, 55(1-3):4056, 1982.
[65] R. Kannan. Towards separating nondeterminism from determinism. Theory of
Computing Systems, 17(1):2945, 1984.
[66] R.M. Karp. Reducibility among combinatorial problems. Complexity of Computer
Computations, paginas 85103, 1972.
[67] P. Kaye, R. Laflamme, e M. Mosca. An introduction to quantum computing. Oxford
University Press, USA, 2007.
[68] K.I. Ko. Relativized polynomial time hierarchies having exactly k levels. Proceedings
of the twentieth annual ACM symposium on Theory of computing, paginas 245253.
ACM, 1988.
114
REFERENCIAS
BIBLIOGRAFICAS
[70] S.A. Kurtz. On the random oracle hypothesis. Information and Control, 57(1):40
47, 1983.
[71] S.A. Kurtz, S.R. Mahaney, e J.S. Royer. The isomorphism conjecture fails relative
to a random oracle. Journal of the ACM, 42(2):420, 1995.
[72] S.A. Kurtz, M.J. Odonnell, e J.S. Royer. How to prove representation-independent
independence results. Information Processing Letters, 24(1):510, 1987.
[73] R.E. Ladner. On the structure of polynomial time reducibility. Journal of the ACM,
22(1):155171, 1975.
[74] L.A. Levin. Universal search problems. Problemy Peredachi Informatsii, 9(3):265
266, 1973.
[75] M. Li e P. Vitanyi. An introduction to Kolmogorov complexity and its applications.
Springer-Verlag New York Inc, 2008.
[76] R.J. Lipton e A. Viglas. On the complexity of SAT. 40th Annual Symposium on
Foundations of Computer Science, paginas 459464, 1999.
[77] W. Maass. Quadratic lower bounds for deterministic and nondeterministic one-tape
Turing machines. Proceedings of the sixteenth annual ACM symposium on Theory
of computing. ACM, 1984.
[78] S.R. Mahaney. Sparse complete sets for NP: Solution of a conjecture of Berman and
Hartmanis. Journal of Computer and System Sciences, 25(2):130143, 1982.
[79] A.R. Meyer e L.J. Stockmeyer. The equivalence problem for regular expressions
with squaring requires exponential space. IEEE Conference Record of 13th Annual
Symposium on Switching and Automata Theory, paginas 125129, 1972.
[80] A.R. Meyer e L.J. Stockmeyer. Word problems requiring exponential time. Proc.
5th ACM Symp. on the Theory of Computing, paginas 19, 1973.
[81] G.L. Miller. Riemanns hypothesis and tests for primality. Journal of computer and
system sciences, 13(3):300317, 1976.
[82] A.A. Muchnik. On the unsolvability of the problem of reducibility in the theory of
algorithms. Dokl. Akad. Nauk SSSR, NS, volume 108, 1956.
REFERENCIAS
BIBLIOGRAFICAS
115
116
REFERENCIAS
BIBLIOGRAFICAS
REFERENCIAS
BIBLIOGRAFICAS
117
[113] C. Wrathall. Complete sets and the polynomial-time hierarchy. Theoretical Computer Science, 3(1):2333, 1976.
[114] M. Yannakakis. Expressing combinatorial optimization problems by linear programs.
Journal of Computer and System Sciences, 43(3):441466, 1991.
[115] T. Yato e T. Seta. Complexity and completeness of finding another solution and
its application to puzzles. IEICE Transactions on Fundamentals of Electronics,
Communications and Computer Sciences, 86(5):10521060, 2003.
[116] S. Zak. A Turing machine time hierarchy. Theoretical Computer Science, 26(3):327
333, 1983.