5954006
8. Problemas NP-Completos
• Em geral,
Não!!!
Exemplos
– Torre de Hanói: O(2n)
– Achar todos os caminhos no Problema do Caixeiro Viajante: O(n!)
Problemas Não-Polinomiais
B
6km
7km
A 8km 9km D
C
5km
6km
i escolhe( a[ ] , l , r )
se ( a[i] = x )
retorna sucesso
senão
retorna insucesso
fim se
Introdução à Computação II – 5954006 5
8.1. Introdução
• Problemas de Decisão
Para o estudo teórico da complexidade de algoritmos é
conveniente considerar problemas cujo resultado da
computação seja “sim” ou “não”
Entre outros aspectos, facilitam o uso de mecanismos da teoria de
linguagem formal
Problemas de otimização, em que cada solução possível é
associada a um valor de qualidade e em que desejamos
encontrar a solução ótima, podem ser representados como
problemas de decisão
Exemplo: Versão do Problema do Caixeiro Viajante cuja resposta é
“sim” ou “não”
– Dados: um conjunto de cidades C = { c1 , c2 , ... , cn }, uma distância
d(ci , cj) para cada par de cidades ci , cj C , e uma constante k
– Questão: existe uma rota para todas as cidades em C cujo
comprimento total seja menor ou igual a k ?
• Problemas Concretos
Problemas cujo conjunto de instâncias é um conjunto
de cadeias binárias
Objetos compostos, como por exemplo grafos, pares
ordenados e funções, podem ser codificados como cadeias
binárias
• Formalmente
0 1
Exemplo: 0 1 4 2 3 0
4
3 2
• Referências
T. H. CORMEN; C. E. LEISERSON; C. STEIN; R.
L. RIVEST; (2002). “Algoritmos: Teoria e Prática”,
Editora Campus
N. ZIVIANI (2004). “Projeto de Algoritmos”,
Thomson.