Você está na página 1de 11

Complexidade computacional

1 Problemas Computacionais

A teoria da complexidade computacional um ramo


da teoria da computao em cincia da computao terica e matemtica que se concentra em classicar problemas computacionais de acordo com sua diculdade inerente, e relacionar essas classes entre si. Neste contexto,
um problema computacional entendido como uma tarefa que , em princpio, passvel de ser resolvida por um
computador (o que basicamente signica que o problema
pode ser descrito por um conjunto de instrues matemticas). Informalmente, um problema computacional
consiste de instncias do problema e solues para essas
instncias do problema. Por exemplo, o teste de primalidade o problema de determinar se um dado nmero
primo ou no. As instncias deste problema so nmeros naturais, e a soluo para uma instncia sim ou no,
dependendo se o nmero primo ou no.
Um problema considerado como inerentemente difcil
se a sua soluo requer recursos signicativos, qualquer
que seja o algoritmo usado. A teoria formaliza esta intuio atravs da introduo de modelos matemticos de
computao para estudar estes problemas e quanticar os
recursos necessrios para resolv-los, tais como tempo e
armazenamento. Outras medidas de complexidade tambm so utilizadas, tais como a quantidade de comunicao (usada em complexidade de comunicao), o nmero de portas em um circuito (usado na complexidade
de circuito) e o nmero de processadores (usados em
computao paralela). Um dos papis da teoria da complexidade computacional determinar os limites prticos
do que os computadores podem e no podem fazer.

Um caminho timo para o cacheiro viajante passando pelas


15 maiores cidades da Alemanha. o menor caminho entre
as 43.589.145.600[nb 1] possibilidades de se visitar cada cidade
exatamente uma nica vez.

1.1 Instncias de Problema

Campos intimamente relacionados com a cincia da computao terica so a anlise de algoritmos e a teoria da
computabilidade. Uma distino chave entre a anlise
de algoritmos e teoria da complexidade computacional
que a primeira dedicada a analisar a quantidade de recursos necessrios para um determinado algoritmo resolver um problema, enquanto o segundo faz uma pergunta
mais geral sobre todos os possveis algoritmos que podem ser usados para resolver o mesmo problema. Mais
precisamente, ele tenta classicar os problemas que podem ou no podem ser resolvidos com os recursos devidamente restritos. Por sua vez, impondo restries sobre
os recursos disponveis o que distingue a complexidade
computacional da teoria da computabilidade: a segunda
pergunta que tipos de problemas podem, em princpio,
ser resolvidos atravs de algoritmos.

Um problema computacional pode ser visto como uma


coleo innita de instncias em conjunto com uma soluo para cada instncia. A sequncia de entrada para um
problema computacional referido como uma instncia
do problema, e no deve ser confundido com o problema
em si. Na teoria da complexidade computacional, um
problema se refere questo abstrata para ser resolvido.
Em contraste, uma instncia deste problema uma expresso concreta, que pode servir como entrada para um
problema de deciso. Por exemplo, considere o problema
de teste de primalidade. A instncia um nmero (por
exemplo, 10) e a soluo sim se o nmero primo
e no se for o contrrio (neste caso no). Alternativamente, a instncia uma entrada especial para o problema, e a soluo a sada correspondente entrada.
Para realar ainda mais a diferena entre um problema
e uma instncia, considere a seguinte instncia da verso
de deciso do problema do caixeiro viajante: Existe um
percurso de, no mximo, 2000 km de comprimento pas1

PROBLEMAS COMPUTACIONAIS

sando por todas as 15 maiores cidades da Alemanha? A


resposta a esta determinada instncia do problema de
pouca utilidade para a resoluo de outras instncias do
problema, como pedir uma ida e volta atravs de todos
os lugares de Milo cujo comprimento total no mximo
10 km. Por esta razo, a teoria da complexidade aborda
problemas computacionais e no instncias particulares
do problema.

trais na teoria da complexidade computacional. Um problema de deciso um tipo especial de problema computacional cuja resposta sim ou no, ou alternativamente
1 ou 0. Um problema de deciso pode ser visto como
uma linguagem formal, onde os membros da linguagem
so instncias cuja resposta sim, e os no membros da
linguagem so aquelas instncias cuja sada no. O objetivo decidir, com a ajuda de um algoritmo, se uma
dada sequncia de entrada um membro da linguagem
formal em considerao. Se o algoritmo decidir este pro1.2 Representando instncias de problema blema, ele retorna a resposta sim, diz-se que o algoritmo
aceita a sequncia de entrada, caso contrrio, diz-se que
Ao considerar problemas computacionais, uma instncia rejeita a entrada.
de problema uma cadeia sobre um alfabeto. NormalUm exemplo de um problema de deciso o seguinte. A
mente, o alfabeto considerado como sendo o alfabeto
entrada um grafo arbitrrio. O problema consiste em
binrio (ou seja, o conjunto {0,1}), e, assim, as cadeias
decidir se o dado grafo conexo ou no. A linguagem
so bitstrings. Como em um computador do mundo real,
formal associada a este problema de deciso ento o
objetos matemticos que no so bitstrings devem ser deconjunto de todos os grafos conexosobviamente, para
vidamente codicados. Por exemplo, nmeros inteiros
obter uma denio precisa dessa linguagem, preciso
podem ser representados em notao binria, e grafos podecidir como grafos so codicados como cadeias bindem ser codicados diretamente via suas matrizes de adrias.
jacncia, ou por codicao de suas listas de adjacncia
em binrio.
Apesar de algumas provas de complexidade-terica de teoremas regularmente assumir alguma escolha concreta de
codicao de entrada, tenta-se manter a discusso abstrata o suciente para ser independente da escolha da codicao. Isto pode ser conseguido assegurando que diferentes representaes possam ser transformadas em outra
de forma eciente.

1.4 Problemas de funo


Um problema de funo um problema computacional,
onde uma nica sada (de uma funo total) esperada
para cada entrada, mas a sada mais complexa do que a
de um problema de deciso, isto , no apenas sim ou
no. Exemplos notveis incluem o problema do caixeiro
viajante e o problema de fatorao de inteiros.
tentador pensar que a noo de problemas de funo
muito mais rica do que a noo de problemas de deciso.
No entanto, o caso realmente no esse, j que problemas
de funo podem ser reformulados como problemas de
deciso. Por exemplo, a multiplicao de dois nmeros
inteiros pode ser expressa como o conjunto (a, b, c) tal
qual a relao a b = c descreve. Decidir se uma dada
tripla membro deste conjunto corresponde a resolver o
problema da multiplicao de dois nmeros.

1.5 Medio do tamanho de uma instncia


Para medir a diculdade de resolver um problema computacional, pode-se desejar ver quanto tempo o melhor
algoritmo necessita para resolver o problema. No entanto, o tempo de execuo pode, em geral, depender
da instncia. Em particular, instncias maiores exigiro
Um problema de deciso tem apenas duas sadas possveis, sim mais tempo para resolver. Assim, o tempo necessrio
para resolver um problema (ou o espao necessrio, ou
ou no (ou alternativamente 1 ou 0) para qualquer entrada.
qualquer outra medida de complexidade) calculado em
funo do tamanho da instncia. Isso geralmente leva em
considerao o tamanho da entrada em bits. A Teoria
1.3 Problemas de deciso como linguagens da Complexidade est interessada em como os tempos
formais
de execuo de algoritmos crescem com um aumento no
tamanho da entrada. Por exemplo, no problema de descoProblemas de deciso so um dos objetos de estudo cen- brir se um grafo conectado, quanto tempo a mais leva

2.2

Outros modelos de mquinas

para resolver um problema para um grafo com 2n vr- nir as classes de complexidade, tais como mquinas de
tices comparado ao tempo levado para um grafo com n Turing determinsticas, mquinas de Turing probabilstivrtices?
cas, mquinas de Turing no-determinsticas, mquinas
Se o tamanho da entrada n, o tempo gasto pode ser de Turing qunticas, mquinas de Turing simtricas e
expresso como uma funo de n. J que o tempo gasto mquinas de Turing alternadas. Todas elas so igualem diferentes entradas de mesmo tamanho pode ser di- mente poderosas, em princpio, mas quando os recursos
ferente, o pior caso em complexidade de tempo T(n) (tais como tempo e espao) so limitados, algumas destas
denido como sendo o tempo mximo dentre todas as podem ser mais poderosas do que outras.
entradas de tamanho n. Se T(n) um polinmio em n,
ento o algoritmo dito ser um algoritmo de tempo polinomial. A tese de Cobham diz que um problema pode
ser resolvido com uma quantidade factvel de recursos se
ele admite um algoritmo de tempo polinomial.

Modelos de mquinas e medidas


de complexidade

2.1

Mquina de Turing

Uma mquina de Turing determinstica a mquina de


Turing do tipo mais bsico, que utiliza um conjunto xo
de regras para determinar suas aes futuras. Uma mquina de Turing probabilstica uma mquina de Turing determinstica com um suprimento extra de bits aleatrios. A capacidade de tomar decises probabilsticas
muitas vezes ajuda algoritmos a resolverem problemas
de forma mais eciente. Algoritmos que usam bits aleatrios so chamados algoritmos probabilsticos. A mquina de Turing no-determinstica uma mquina de
Turing determinstica com uma caracterstica adicional
de no-determinismo, que permite que uma mquina de
Turing tenha vrias possveis aes futuras a partir de um
determinado estado. Uma maneira de entender o nodeterminismo visualizar os ramos da mquina de Turing como os vrios caminhos computacionais possveis
a cada passo, e se ela resolve o problema em qualquer um
desses ramos, diz-se ter resolvido o problema. Evidentemente, este modelo no pretende ser um modelo sicamente realizvel, apenas uma mquina abstrata teoricamente interessante que d origem a classes de complexidade particularmente interessantes. Por exemplo, veja
algoritmo no-determinstico.

Uma representao artstica de uma mquina de Turing

2.2 Outros modelos de mquinas


Ver artigo principal: Mquina de Turing
Uma mquina de Turing um modelo matemtico de
uma mquina de computao em geral. um dispositivo
terico que manipula smbolos contidos em uma tira de
ta. Mquinas de Turing no pretendem ser uma tecnologia de computao na prtica, mas sim uma experincia
de pensamento que representa uma mquina de computao. Acredita-se que se um problema pode ser resolvido
por um algoritmo, ento existe uma mquina de Turing
que resolve o problema. Na verdade, esta a armao
da tese de Church-Turing. Alm disso, sabe-se que tudo
o que pode ser computado em outros modelos de computao conhecido por ns hoje, como uma mquina RAM,
Jogo da Vida de Conway, autmato celular ou qualquer
linguagem de programao pode ser computado em uma
mquina de Turing. Como as mquinas de Turing so fceis de analisar matematicamente, e acredita-se que sejam to poderosas quanto qualquer outro modelo de computao, a mquina de Turing o modelo mais comumente usado em teoria da complexidade.

Muitos modelos de mquinas diferentes do padro de


mquinas de Turing multi-tas tm sido propostos na literatura, por exemplo, mquinas de acesso aleatrio. Talvez surpreendentemente, cada um desses modelos pode
ser convertido para outro, sem fornecer qualquer poder
computacional extra. O consumo de tempo e memria
desses modelos alternativos pode variar.[1] O que todos
estes modelos tm em comum que as mquinas funcionam de forma determinstica.

No entanto, alguns problemas computacionais so mais


fceis de analisar em termos de recursos mais incomuns. Por exemplo, uma mquina de Turing nodeterminstica um modelo computacional em que
permitido ramicar-se para vericar muitas possibilidades diferentes de uma s vez. A mquina de Turing
no-determinstica tem muito pouco a ver com a forma
como ns queremos sicamente computar algoritmos,
mas a sua ramicao capta exatamente muitos dos modelos matemticos que queremos analisar, de modo que o
tempo no-determinstico um recurso muito importante
Muitos tipos de mquinas de Turing so usados para de- na anlise de problemas computacionais.

2.3

2 MODELOS DE MQUINAS E MEDIDAS DE COMPLEXIDADE

Medidas de complexidade

vez que algumas entradas de tamanho n podem ser mais


rpidas para resolver do que outras, denimos as seguinPara uma denio precisa do que signica resolver tes complexidades:
um problema utilizando uma determinada quantidade de
tempo e espao, um modelo computacional tal como a
Complexidade no melhor caso: Esta a compleximquina de Turing determinstica utilizado. O tempo
dade de resolver o problema para a melhor entrada
exigido por uma mquina de Turing determinstica M na
de tamanho n.
entrada x o nmero total de transies de estado, ou eta Complexidade no pior caso: Esta a complexidade
pas, que a mquina faz antes de parar e responder com
de resolver o problema para a pior entrada de tamaa sada (sim ou no). Diz-se que a mquina de Tunho n.
ring M opera dentro do tempo f(n), se o tempo exigido
por M em cada entrada de comprimento n no mximo
Complexidade no caso mdio: Esta a complexif(n). Um problema de deciso A pode ser resolvido em
dade de resolver o problema na mdia. Essa completempo f(n) se existe uma operao da mquina de Turing
xidade s denida com relao a uma distribuio
em tempo f(n) que resolve o problema. Como a teoria
de probabilidade sobre as entradas. Por exemplo, se
da complexidade est interessada em classicar probletodas as entradas do mesmo tamanho so considemas com base na sua diculdade, denem-se conjuntos
radas terem a mesma probabilidade de aparecer, a
de problemas com base em alguns critrios. Por exemplo,
complexidade do caso mdio pode ser denida com
o conjunto de problemas solucionveis no tempo f(n) em
relao distribuio uniforme sobre todas as enuma mquina de Turing determinstica ento indicado
tradas de tamanho n.
por DTIME(f(n)).
Denies anlogas podem ser feitas para os requisitos
de espao. Embora o tempo e o espao sejam os mais
conhecidos recursos de complexidade, qualquer medida
de complexidade pode ser vista como um recurso computacional. Medidas de complexidade so geralmente denidas pelos axiomas de complexidade de Blum. Outras
medidas de complexidade utilizadas na teoria da complexidade incluem a complexidade de comunicao, a
complexidade do circuito e a complexidade da rvore de
deciso.

2.4

Por exemplo, considere o algoritmo de ordenao


quicksort. Isso resolve o problema de ordenar uma lista
de inteiros que dada como entrada. O pior caso
quando a entrada j est ordenada ou est em ordem inversa, e o algoritmo leva tempo O(n2 ) para este caso. Se
assumirmos que todas as permutaes possveis da lista
de entrada so igualmente provveis, o tempo mdio necessrio para a ordenao O(n log n). O melhor caso
ocorre quando cada piv divide a lista pela metade, tambm precisando tempo O(n log n).

Melhor, pior e caso mdio de comple- 2.5 Limites superior e inferior da complexidade
xidade dos problemas

Visualizao do algoritmo quicksort que tem no caso mdio desempenho (n log n).

O melhor, o pior e o caso mdio de complexidade


referem-se a trs maneiras diferentes de medir a complexidade de tempo (ou qualquer outra medida de complexidade) de entradas diferentes do mesmo tamanho. Uma

Para classicar o tempo de computao (ou recursos semelhantes, como o consumo de espao), necessrio provar os limites superiores e inferiores sobre a quantidade
mnima de tempo exigida pelo algoritmo mais eciente
para resolver um determinado problema. A complexidade de um algoritmo geralmente entendida como a
sua complexidade de pior caso, a menos que seja especicado o contrrio. A anlise de um determinado algoritmo cai sob o campo de anlise de algoritmos. Para
mostrar um limite superior T(n) sobre a complexidade
de tempo de um problema, necessrio mostrar apenas
que h um determinado algoritmo com tempo de funcionamento, no mximo, T(n). No entanto, provar limites
inferiores muito mais difcil, uma vez que limites inferiores fazem uma declarao sobre todos os possveis
algoritmos que resolvem um determinado problema. A
frase todos os algoritmos possveis inclui no apenas os
algoritmos conhecidos hoje, mas qualquer algoritmo que
possa ser descoberto no futuro. Para mostrar um limite
inferior de T(n) para um problema requer mostrar que
nenhum algoritmo pode ter complexidade de tempo menor do que T(n).

3.2

Importantes classes de complexidade

Limites superiores so geralmente indicados usando a


notao O-grande, que desconsidera fatores constantes e
termos menores. Isso faz com que os limites independam
dos detalhes especcos do modelo computacional utilizado. Por exemplo, T(n) = 7n2 + 15n + 40, em notao
O-grande seria escrito da seguinte forma T(n) = O(n2 ).

que as complexidades do tempo em quaisquer dois modelos razoveis e gerais de computao so polinomialmente relacionados (Goldreich 2008, Chapter 1.2). Isto
forma a base para a classe de complexidade P, que o
conjunto de problemas de deciso solveis por uma mquina de Turing determinstica dentro do tempo polinoLimites inferiores so geralmente indicados usando a no- mial. O conjunto correspondente de problemas de funo
FP.
tao

Classes de complexidade

3.1

Denio de classes de complexidade

Uma classe de complexidade um conjunto de problemas de complexidade relacionados. As classes mais simples de complexidade so denidas pelos seguintes fatores:
O tipo de problema computacional: Os problemas
mais comumente utilizados so problemas de deciso. No entanto, classes de complexidade podem ser
denidas com base em problemas de funo, problemas de contagem, problemas de otimizao, problemas de promessa, etc.

3.2 Importantes classes de complexidade

EXPSPACE
?
=

EXPTIME
?
=

PSPACE
?
=

NP
?
=

?
=

NL

O modelo de computao: O modelo mais comum


de computao a mquina de Turing determinstica, mas muitas classes de complexidade so baseadas em mquinas de Turing no-determinsticas, Uma representao da relao entre as classes de complexidade
circuitos Booleanos, mquinas de Turing qunticas,
Muitas classes de complexidade importantes podem ser
circuitos montonos, etc.
denidas por limitando o tempo ou espao usado pelo al O recurso (ou recursos) que est sendo limitado e goritmo. Algumas importantes classes de complexidade
os limites: Essas duas propriedades so geralmente de problemas de deciso denidas desta maneira so as
declaradas em conjunto, tais como tempo polino- seguintes:
mial, espao logartmico, profundidade consAcontece que PSPACE = NPSPACE e EXPSPACE =
tante, etc.
NEXPSPACE pelo teorema de Savitch.
claro, algumas classes de complexidade tm denies
complexas que no se encaixam nesse quadro. Assim,
uma classe de complexidade tpica tem uma denio
como a seguinte:
O conjunto de problemas de deciso solveis
por uma mquina de Turing determinstica
dentro do tempo f(n). (Esta classe de complexidade conhecida como DTIME(f(n))).
Mas limitar o tempo de computao acima por alguma
funo concreta f(n) muitas vezes produz classes de complexidade que dependem do modelo da mquina escolhida. Por exemplo, a linguagem {xx | x uma sequncia
binria qualquer} pode ser resolvida em tempo linear em
uma mquina de Turing multi-tas, mas necessariamente
exige tempo quadrtico no modelo de mquinas de Turing single-ta. Se permitirmos variaes no tempo polinomial em execuo, a tese de Cobham-Edmonds arma

Outras classes de complexidade importantes incluem


BPP, ZPP e RP, que so denidas usando mquinas de
Turing probabilstica; AC e NC, que so denidas usando
circuitos booleanos e BQP e QMA, que so denidas
usando mquinas de Turing qunticas. #P uma importante classe complexidade de problemas de contagem
(que no so problemas de deciso). Classes como IP
e AM so denidas usando sistemas de prova interativa.
ALL a classe de todos os problemas de deciso.

3.3 Teoremas de hierarquia


Para as classes de complexidade denidas desta forma,
desejvel provar que relaxar os requisitos em funo
(digamos) do tempo de computao realmente dene um
conjunto maior de problemas. Em particular, embora
DTIME(n) esteja contido em DTIME(n2 ), seria interessante saber se a incluso estrita. Para requisitos de

tempo e de espao, a resposta a tais perguntas dada pelo


teorema de hierarquia para a complexidade de tempo e
pelo teorema de hierarquia para a complexidade de espao, respectivamente. Eles so chamados teoremas de
hierarquia porque induzem uma hierarquia adequada sobre as classes denidas, restringindo os respectivos recursos. Assim, existem pares de classes de complexidade tal
que uma est propriamente contida na outra. Depois de
ter deduzido assim as relaes de pertinncia estrita de
conjuntos, podemos continuar a fazer declaraes quantitativas sobre quanto mais tempo adicional ou espao
necessrio para aumentar o nmero de problemas que podem ser resolvidos.
Mais precisamente, o teorema de hierarquia de tempo
arma que:
(
)
(
)
DTIME f (n) DTIME f (n) log2 (f (n)) .
O teorema de hierarquia de espao arma que:
(
)
(
)
DSPACE f (n) DSPACE f (n) log(f (n)) .
Os teoremas de hierarquia de tempo e de espao formam
a base para a maioria dos resultados de separao de classes de complexidade. Por exemplo, o teorema da hierarquia de tempo nos diz que P est estritamente contida em
EXPTIME, e o teorema hierarquia do espao nos diz que
L est estritamente contida em PSPACE.

3.4

Reduo

Ver artigo principal: Reduo (complexidade)


Muitas classes de complexidade so denidas usando o
conceito de reduo. Uma reduo uma transformao
de um problema em outro problema. Ela captura a noo
informal de um problema que seja pelo menos to difcil
quanto outro problema. Por exemplo, se um problema X
pode ser resolvido usando um algoritmo para Y, X no
mais difcil do que Y, e dizemos que X se reduz a Y.
Existem muitos tipos diferentes de reduo, com base no
mtodo de reduo, como redues de Cook, redues
de Karp e redues Levin, e no limite da complexidade
das redues, como redues de tempo polinomial ou redues log-space.
A reduo mais comumente usada uma reduo em
tempo polinomial. Isso signica que o processo de reduo leva tempo polinomial. Por exemplo, o problema
do quadrado de um inteiro pode ser reduzido para o problema da multiplicao de dois nmeros inteiros. Isso
signica que um algoritmo para multiplicar dois inteiros
pode ser usado para o quadrado de um inteiro. De fato,
isso pode ser feito dando a mesma entrada para ambas as
entradas do algoritmo de multiplicao. Assim, vemos
que o problema do quadrado de um inteiro no mais
difcil do que o problema da multiplicao, j que o problema do quadrado de um inteiro pode ser reduzido ao
problema da multiplicao.

IMPORTANTES PROBLEMAS EM ABERTO

Isso motiva o conceito de um problema que ser difcil


para uma classe de complexidade. Um problema X difcil para uma classe de problemas C se todo problema em
C pode ser reduzido a X. Assim, nenhum problema em C
mais difcil do que X, uma vez que um algoritmo para X
nos permite resolver qualquer problema em C. claro que
a noo de problemas difceis depende do tipo de reduo
a ser utilizado. Para as classes de complexidade maiores
do que P, redues em tempo polinomial so comumente
usados. Em particular, o conjunto de problemas que so
difceis para NP o conjunto de problemas NP-difcil.
Se um problema X est em C e difcil para C, ento
diz-se que X completo para C. Isto signica que X o
problema mais difcil em C. (Uma vez que muitos problemas poderiam ser igualmente difceis, pode-se dizer
que X um dos os problemas mais difceis em C.) Assim, a classe de problemas NP-completo contm os problemas mais difceis em NP, nesse sentido eles so os
mais propensos a no estarem em P. Como o problema P
= NP no foi resolvido, ser capaz de reduzir um conhecido problema NP-completo, 2 , para outro problema,
1 , indicaria que no h nenhuma soluo conhecida em
tempo polinomial para 1 . Isso ocorre porque uma soluo em tempo polinomial para 1 renderia uma soluo
em tempo polinomial para 2 . Da mesma forma que todos os problemas NP podem ser reduzidos ao conjunto,
encontrar um problema NP-completo que pudesse ser resolvido em tempo polinomial signicaria que P = NP.[2]

4 Importantes
aberto

problemas

em

NP Problems
P Problems
NP Complete

Diagrama de classes de complexidade assumindo que P NP.


A existncia de problemas em NP fora tanto de P quanto de NPcompleto, neste caso, foi estabelecida por Ladner.[3]

4.1 O problema P versus NP


Ver artigo principal: P versus NP
A classe de complexidade P muitas vezes vista como
uma abstrao matemtica de modelagem dessas tare-

4.3

Separaes entre outras classes de complexidade

fas computacionais que admitem um algoritmo eciente.


Esta hiptese chamada de tese de Cobham-Edmonds.
A classe de complexidade NP, por outro lado, contm
muitos problemas que as pessoas gostariam de resolver
de forma eciente, mas para os quais nenhum algoritmo
eciente conhecido, como o problema da satisfatibilidade booleana, o problema do caminho hamiltoniano e
o problema da cobertura de vrtices. Como as mquinas
de Turing determinstica so mquinas de Turing nodeterminsticas especiais, fcil observar que cada problema em P tambm membro da classe NP.
A questo de saber se P igual a NP uma das questes mais importantes em aberto na cincia da computao terica por causa da gama de implicaes de uma
soluo.[2] Se a resposta for sim, para muitos problemas
importantes pode ser mostrado que h solues mais ecientes para eles. Estes incluem vrios tipos de problemas de programao inteira em investigao operacional,
muitos problemas na rea de logstica, previso da estrutura de protenas na biologia,[4] e capacidade de encontrar
provas formais de teoremas da matemtica pura.[5] O problema P versus NP um dos Problemas do Prmio Millenium (Millenium Prize Problems) proposto pelo Instituto
Clay de Matemtica (Clay Mathematics Institute). Existe
um prmio de um milho de dlares para resolver o
problema.[6]

7
inteiro. Formulado como um problema de deciso, o
problema para decidir se a entrada tem um fator menor
que k. Nenhum algoritmo de fatorao de inteiro eciente conhecido, e este fato a base de vrios sistemas
criptogrcos modernos, como o algoritmo RSA. O problema da fatorao de inteiros est em NP e em co-NP
(e at mesmo em UP e co-UP [9] ). Se o problema NPcompleto, a hierarquia de tempo polinomial colapsar
para seu primeiro nvel (ou seja, NP ser igual a co-NP).
O melhor algoritmo conhecido para fatorao de inteiros
o GNFS (general number eld sieve), que leva tempo
1/3
1/3
2/3
O(e(64/9) (n.log 2) (log (n.log 2)) ) para fatorar um inteiro de
n-bit. No entanto, o melhor algoritmo quntico conhecido para este problema, o algoritmo de Shor, executado em tempo polinomial. Infelizmente, este fato no
diz muito sobre onde est o problema com relao a classes de complexidade no-quntica.

4.3 Separaes entre outras classes de


complexidade

Muitas classes de complexidade conhecidas so suspeitas de no serem iguais, mas isso no foi provado. Por
exemplo, P NP PP PSPACE, mas possvel que
P = PSPACE. Se P no for igual a NP, ento P no ser
igual PSPACE tambm. Uma vez que existem muitas
classes de complexidade conhecidas entre P e PSPACE,
4.2 Problemas em NP que no se sabe se tais como RP, BPP, PP, BQP, MA, PH, etc, possvel
que todas estas classes de complexidade colapsem para
pertencem a P ou a NP-completo
uma nica classe. Provar que qualquer uma destas clasFoi mostrado por Ladner que, se P NP, ento exis- ses no so iguais seria um grande avano na teoria da
tem problemas em NP que no esto nem em P nem em complexidade.
NP-completo.[3] Tais problemas so chamados de pro- Na mesma linha, co-NP a classe que contm os probleblemas NP-intermedirio. O problema do isomorsmo mas do complemento (ou seja, problemas com as resposde grafos, o problema do logaritmo discreto e o problema tas sim / no invertidas) dos problemas NP. Acredita-se
de fatorao de inteiros so exemplos de problemas que [10] que NP no seja igual a co-NP, no entanto, ainda no
acredita-se que sejam NP-intermedirio. Eles so alguns foi comprovado. Tem sido mostrado que, se essas duas
dos muito poucos problemas NP que no se sabe se esto classes de complexidade no so iguais, ento P no
em P ou em NP-completo.
igual a NP.
O problema do isomorsmo de grafos o problema com- Da mesma forma, no se sabe se L (o conjunto de todos
putacional para determinar se dois grafos nitos so iso- os problemas que podem ser resolvidos no espao logamorfos. Um importante problema no resolvido na teo- rtmico) est contido estritamente em P ou igual a P.
ria da complexidade se o problema do isomorsmo de Novamente, existem muitas classes de complexidade engrafos est em P, NP-completo, ou NP-intermedirio. A tre elas, tais como NL e NC, e no se sabe se elas so
resposta no conhecida, mas acredita-se que o problema classes iguais ou distintas.
no seja, pelo menos, NP-completo.[7] Se o isomorsmo
de grafos for NP-completo, a hierarquia de tempo po- Suspeita-se que P e BPP sejam iguais. No entanto, um
linomial colapsa para seu segundo nvel.[8] Uma vez que problema em aberto, no momento, se BPP = NEXP.
acredita-se veemente que a hierarquia polinomial no colapse para nenhum nvel nito, acredita-se que o isomorsmo de grafos no seja NP-completo. O melhor algo- 5 Intratabilidade
ritmo para este problema, de acordo com Laszlo Babai
e Eugene Luks tem tempo de execuo 2O((n log(n))) para Problemas que podem ser resolvidos na teoria (por exemgrafos com n vrtices.
plo, dado um tempo innito), mas que na prtica levam
O problema da fatorao de inteiros o problema com- muito tempo para as suas solues sejam teis, so coputacional para determinar a fatorao prima de um dado nhecidos como problemas intratveis.[11] Na teoria da

7 HISTRIA

complexidade, os problemas que no apresentam solues em tempo polinomial so considerados intratveis


por mais pequenas que sejam suas entradas. Na verdade,
a tese de Cobham-Edmonds arma que apenas os problemas que podem ser resolvidos em tempo polinomial podem ser computados de maneira factvel por algum dispositivo computacional. Problemas que so conhecidos por
serem intratveis neste sentido incluem aqueles que so
EXPTIME-difcil. Se NP no o mesmo que P, ento
os problemas NP-completo so tambm intratveis neste
sentido. Para ver porque algoritmos de tempo exponencial podem ser impraticveis, considere um programa que
faz 2n operaes antes de parar. Para n pequeno, digamos 100, e assumindo, por exemplo, que o computador
faz 1012 operaes por segundo, o programa seria executado por cerca de 4 1010 anos, que aproximadamente
a idade do universo. Mesmo com um computador muito
mais rpido, o programa s seria til para casos muito pequenos e, nesse sentido, a intratabilidade de um problema
um tanto independente do progresso tecnolgico. No
entanto, um algoritmo de tempo polinomial no sempre prtico. Se seu tempo de execuo , digamos n15 ,
no razovel consider-lo eciente e ainda intil, salvo
em casos de pequeno porte.

7 Histria

Antes de a pesquisa propriamente dita explicitamente dedicada complexidade dos problemas algortmicos comear, os numerosos fundamentos foram estabelecidos
por vrios pesquisadores. O mais inuente entre estes foi
a denio das mquinas de Turing por Alan Turing em
1936, que acabou por ser uma noo muito robusta e exvel de computador.
Fortnow & Homer (2003) datam o incio dos estudos sistemticos em complexidade computacional com o importante artigo On the Computational Complexity of Algorithms de Juris Hartmanis e Richard Stearns (1965),
que estabeleceu as denies de complexidade de tempo
e de espao e provou os teoremas de hierarquia.

De acordo com Fortnow & Homer (2003), trabalhos anteriores que estudaram problemas solucionveis por mquinas de Turing com recursos especcos limitados inclui a denio de John Myhill de autmatos linearmente
limitados (Myhill 1960), o estudo de Raymond Smullyan
sobre conjuntos rudimentares (1961), assim como o artigo de Hisao Yamada [15] sobre computao em tempo
O que intratabilidade signica na prtica est aberto em real (1962). Um pouco mais cedo, Boris Trakhtenbrot
debate. Dizer que um problema no est em P no im- (1956), um pioneiro no campo da URSS, estudou outra
plica que todos os grandes casos de problemas so dif- medida especca de complexidade.[16] Como lembra ele:
ceis ou at mesmo que a maioria deles so. Por exemplo,
o problema da deciso na Aritmtica de Presburger tem
demonstrado no estar em P, ainda foram escritos algoritmos que resolvem o problema em tempos razoveis na
maioria dos casos. Da mesma forma, os algoritmos podem resolver o problema da mochila NP-completo em
uma ampla faixa de tamanhos em menos que o tempo
quadrtico e resolvedores de SAT rotineiramente lidam
com grandes instncias do problema de satisfatibilidade
booleana NP-completo.

Teoria da complexidade contnua

A teoria da complexidade contnua pode se referir teoria da complexidade dos problemas que envolvem funes contnuas que so aproximadas por discretizaes,
como estudado em anlise numrica. Uma abordagem
para a teoria da complexidade da anlise numrica [12]
a complexidade baseada em informao (IBC).
A teoria da complexidade contnua tambm pode se referir teoria da complexidade do uso da computao analgica, que utiliza sistemas dinmicos contnuos e equaes
diferenciais.[13] A teoria de controle pode ser considerada
uma forma de computao e equaes diferenciais so
usadas na modelagem de sistemas de tempo contnuo e
hbridos de tempo discreto-contnuo.[14]

Em 1967, Manuel Blum desenvolveu uma teoria da


complexidade axiomtica com base em seus axiomas
e provou um resultado importante, o ento chamado,
teorema da acelerao de Blum (speed-up theorem). O
campo realmente comeou a orescer quando o pesquisador norte-americano Stephen Cook e, trabalhando independentemente, Leonid Levin na URSS, provaram que
existem importantes problemas praticveis que so NPcompletos. Em 1972, Richard Karp partiu desta ideia
e deu um salto frente com seu artigo histrico, Reducibility Among Combinatorial Problems, no qual ele
mostrou que 21 diferentes problemas de combinatria e
problemas tericos de grafos, famosos por sua intratabilidade computacional, so NP-completos.[17]

10.1

Bibliograa

Ver tambm

[6] Jae, Arthur M. (2006), The Millennium Grand Challenge in Mathematics, Notices of the AMS 53 (6), http://
www.ams.org/notices/200606/fea-jaffe.pdf, visitado em
2006-10-18.
[7] Arvind, Vikraman; Kurur, Piyush P. (2006), Graph isomorphism is in SPP, Information and Computation 204
(5): 835852, doi:10.1016/j.ic.2006.02.002.
[8] Uwe Schning, Graph isomorphism is in the low hierarchy, Proceedings of the 4th Annual Symposium on Theoretical Aspects of Computer Science, 1987, 114124;
also: Journal of Computer and System Sciences, vol. 37
(1988), 312323
[9] Lance Fortnow. Computational Complexity Blog: Complexity Class of the Week: Factoring.
September 13, 2002.
http://weblog.fortnow.com/2002/09/
complexity-class-of-week-factoring.html
[10] Boaz Baraks course on Computational Complexity
Lecture 2

Problemas em aberto da cincia da computao


Categoria:Teoria da computao
Anexo:Lista de termos relacionados aos algoritmos
e estruturas de dados

Notas

[1] Escolha uma cidade, e pegue todas as ordenaes possveis das outras 14 cidades. Depois divida por dois, porque
no importa em qual direo pelo tempo elas vm uma
aps a outra: 14 / 2 = 43.589.145.600.

10

Referncias

[1] Veja Arora & Barak 2009, Chapter 1: The computational


model and why it doesn't matter
[2] Veja Sipser 2006, Chapter 7: Time complexity
[3] Ladner, Richard E. (1975), On the structure of polynomial time reducibility (PDF), Journal of the ACM
(JACM) 22 (1): 151171, doi:10.1145/321864.321877,
http://delivery.acm.org/10.1145/330000/321877/
p155-ladner.pdf?key1=321877&key2=7146531911&
coll=&dl=ACM&CFID=15151515&CFTOKEN=
6184618.
[4] Berger, Bonnie A.; Leighton, T (1998), Protein folding in the hydrophobic-hydrophilic (HP) model is NPcomplete, Journal of Computational Biology 5 (1): p27
40, doi:10.1089/cmb.1998.5.27, PMID 9541869.
[5] Cook,
Stephen (April 2000),
The P versus NP Problem, Clay Mathematics Institute,
http://www.claymath.org/millennium/P_vs_NP/
visitado
em
Official_Problem_Description.pdf,
2006-10-18.

[11] Hopcroft, J.E., Motwani, R. and Ullman, J.D. (2007)


Introduction to Automata Theory, Languages, and Computation, Addison Wesley, Boston/San Francisco/New
York (page 368)
[12] Complexity Theory and Numerical Analysis, Steve Smale,
Acta Numerica, 1997 - Cambridge Univ Press
[13] A Survey on Continuous Time Computations, Olivier
Bournez, Manuel Campagnolo, New Computational Paradigms. Changing Conceptions of What is Computable. (Cooper, S.B. and L{\"o}we, B. and Sorbi, A., Eds.).
New York, Springer-Verlag, pages 383-423. 2008
[14] Computational Techniques for the Verication of Hybrid
Systems, Claire J. Tomlin, Ian Mitchell, Alexandre M.
Bayen, Meeko Oishi, Proceedings of the IEEE, Vol. 91,
No. 7, July 2003.
[15] Yamada, Hisao. (1962-12-01). "Real-Time Computation and Recursive Functions Not Real-Time Computable". IRE Transactions on Electronic Computers EC-11
(6): 753-760. DOI:10.1109/TEC.1962.5219459. ISSN
0367-9950.
[16] Trakhtenbrot, B.A.: Signalizing functions and tabular
operators. Uchionnye Zapiski Penzenskogo Pedinstituta
(Transactions of the Penza Pedagogoical Institute) 4, 75
87 (1956) (in Russian)
[17] Richard M. Karp (1972), Reducibility Among Combinatorial Problems, in R. E. Miller and J. W. Thatcher
(editors), Complexity of Computer Computations, New
York: Plenum, pp. 85103, http://www.cs.berkeley.edu/
~{}luca/cs172/karp.pdf

10.1 Bibliograa
Arora, Sanjeev; Barak, Boaz (2009), Computational
Complexity: A Modern Approach, Cambridge, ISBN
978-0-521-42426-4, http://www.cs.princeton.edu/
theory/complexity/

10

11 LIGAES EXTERNAS

Downey, Rod;
Fellows, Michael (1999),
Parameterized complexity, Berlin, New York:
Springer-Verlag,
http://www.springer.com/sgw/
cda/frontpage/0,11855,5-0-22-1519914-0,00.
html?referer=www.springer.de%2Fcgi-bin%
2Fsearch_book.pl%3Fisbn%3D0-387-94883-X
Du, Ding-Zhu; Ko, Ker-I (2000), Theory of Computational Complexity, John Wiley & Sons, ISBN 9780-471-34506-0
Goldreich, Oded (2008), Computational Complexity: A Conceptual Perspective, Cambridge University Press, http://www.wisdom.weizmann.ac.il/
~{}oded/cc-book.html
van Leeuwen, Jan, ed. (1990), Handbook of theoretical computer science (vol. A): algorithms and
complexity, MIT Press, ISBN 978-0-444-88071-0
Papadimitriou, Christos (1994), Computational
Complexity (1st ed.), Addison Wesley, ISBN
0201530821
Sipser, Michael (2006), Introduction to the Theory
of Computation (2nd ed.), USA: Thomson Course
Technology, ISBN 0534950973
Predenio:Garey-Johnson

10.2

Surveys

Khalil, Hatem; Ulery, Dana (1976), A Review of Current Studies on Complexity of Algorithms for Partial Dierential Equations, ACM
'76 Proceedings of the 1976 Annual Conference,
pp.
197, doi:10.1145/800191.805573, http://
portal.acm.org/citation.cfm?id=800191.805573
Cook, Stephen (1983), An overview of computational complexity, Commun. ACM (ACM) 26
(6): 400408, doi:10.1145/358141.358144, ISSN
0001-0782
Fortnow, Lance; Homer, Steven (2003), A Short
History of Computational Complexity, Bulletin of
the EATCS 80: 95133, http://people.cs.uchicago.
edu/~{}fortnow/papers/history.pdf
Mertens, Stephan (2002), Computational Complexity for Physicists, Computing in Science and
Engg.
(Piscataway, NJ, USA: IEEE Educational Activities Department) 4 (3): 3147,
doi:10.1109/5992.998639, ISSN 1521-9615

11

Ligaes externas

The Complexity Zoo

11

12
12.1

Fontes, contribuidores e licenas de texto e imagem


Texto

Complexidade computacional Fonte: https://pt.wikipedia.org/wiki/Complexidade_computacional?oldid=46764801 Contribuidores:


Robbot, LeonardoG, Mschlindwein, RobotQuistnix, Bons, Elloabguedes, Helder Ribeiro, Profvalente, Salgueiro, Robertopinho, He7d3r,
Clecio, GoEThe, Rei-bot, JAnDbot, Bot-Schafter, SieBot, Humbertobrandao, DragonBot, PixelBot, Dilsonlira, SilvonenBot, Brunonar,
!Silent, SpBot, Numbo3-bot, LaaknorBot, Nallimbot, Ptbotgourou, Xqbot, RibotBOT, EmausBot, PedR, MerlIwBot, Zoldyick, Bya97,
Dexbot, Addbot e Annimo: 15

12.2

Imagens

Ficheiro:Complexity_classes.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/b/bc/Complexity_classes.svg Licena: Public domain Contribuidores: Sem fonte automaticamente legvel. Presume-se que seja obra prpria, baseando-se nas informaes sobre
direito autoral. Artista original: Sem fonte automaticamente legvel. Presume-se que a autoria seja de Booyabazooka, baseando-se nas
informaes sobre direito autoral.
Ficheiro:Complexity_subsets_pspace.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/6/6e/Complexity_subsets_pspace.
svg Licena: Public domain Contribuidores: Own work by uploader, intended to replace bitmap image illustrating same thing Artista original:
Hand drawn in Inkscape Qef
Ficheiro:Decisao.png Fonte: https://upload.wikimedia.org/wikipedia/commons/7/78/Decisao.png Licena: CC BY-SA 3.0 Contribuidores: Obra do prprio Artista original: AidaFernandaUFPE
Ficheiro:Magnifying_glass_01.svg Fonte: https://upload.wikimedia.org/wikipedia/commons/3/3a/Magnifying_glass_01.svg Licena:
CC0 Contribuidores: ? Artista original: ?
Ficheiro:Maquina.png Fonte: https://upload.wikimedia.org/wikipedia/commons/3/3d/Maquina.png Licena: Public domain Contribuidores: en.wikipedia Artista original: Schadel (http://turing.izt.uam.mx)
Ficheiro:Sorting_quicksort_anim.gif Fonte: https://upload.wikimedia.org/wikipedia/commons/6/6a/Sorting_quicksort_anim.gif Licena: CC-BY-SA-3.0 Contribuidores: originally upload on the English Wikipedia Artista original: Wikipedia:en:User:RolandH
Ficheiro:TSP_Deutschland_3.png Fonte: https://upload.wikimedia.org/wikipedia/commons/c/c4/TSP_Deutschland_3.png Licena:
Public domain Contribuidores: https://www.cia.gov/cia/publications/factbook/maps/gm-map.gif Artista original: Este cheiro foi inicialmente carregado por Kapitn Nemo em Wikipdia em alemo
Ficheiro:Theoretical_computer_science.png Fonte: https://upload.wikimedia.org/wikipedia/commons/e/ea/Theoretical_computer_
science.png Licena: GFDL Contribuidores: Derivative work based on this image by German Wikipedia user Paeng Artista original:
User:RobinK

12.3

Licena

Creative Commons Attribution-Share Alike 3.0

Você também pode gostar