Problemas NP-Completos - LAC

Propaganda
Problemas NP-completo
Nondeterministic polynomial time
Tempo polinomial
entrada de tamanho n
pior caso de tempo de execução O(nk)
Será que todos os problemas podem ser
resolvidos em tempo polinomial - NÃO
“Problema de Parada”de Turing - problema de
determinar se um certo programa termina para
uma dada entrada
CAP-223
Problemas NP-completo (cont.)
Tais problemas não podem ser resolvidos por
qualquer computador não importa o tempo dado
Por outro lado, existem problemas que podem
ser resolvidos mas não em O(nk)
Problemas que podem ser resolvidos em tempo
polinomial são considerados TRATÁVEIS
Problemas que necessitam de tempo super
polinomial são considerados INTRATÁVEIS ou
DIFÍCEIS
CAP-223
Problemas NP-completo (cont.)
Problemas NP-Completo
Estado (status) não é conhecido
* nenhum algoritmo em tempo polinomial
foi descoberto
* ninguém conseguiu provar que não há
algoritmo em tempo polinomial para
qualquer um dos problemas desta classe
* muitos destes problemas parecem ser
semelhantes a aqueles que tem
algoritmo em tempo polinomial
CAP-223
Problemas NP-completo (cont.)
* Caminho mais curto x Caminho mais longo
mais curto:
O(VE)
mais longo:
NP-completo
* Tour de Euler x Ciclo Hamiltoniano
Euler: grafo conectado e direcionado
ciclo percorrendo cada aresta uma
única vez mesmo passando por um
vértice mais de uma vez
O(E) - grafo possui tour de Euler?
Hamilton: ciclo simples com cada vértice
NP-completo
CAP-223
Problemas NP-completo (cont.)
* 2-CNF satisfiability x 3-CNF satisfiability
Conjunctive Normal Form
Fórmula booleana está em k-CNF se ela
é formada por ANDs de cláusulas OR de
exatamente k variáveis ou suas negações
e.g. (x1 v ¬x2) ^ (¬x1 v x3) ^ (¬x2 v ¬x3)
está em 2-CNF
Para afirmar que 2-CNF é SATISFIABLE
(resulta em 1), há algoritmo em tempo
polinomial.
O mesmo para 3-CNF é NP-completo
CAP-223
Problemas NP-completo (cont.)
Caixeiro Viajante: existe um ciclo que percorra
todos os vértices do grafo com um custo  B?
Coloração de Grafos: pode um grafo ser
adequadamente colorido com n cores?
Mochila: existe uma combinação de itens que
dê um lucro  L, respeitando o limite de peso?
CAP-223
Problemas NP-completo (cont.)
•Frustração para projetistas de algoritmos
•não conseguem achar algoritmos
eficientes
•Frustração para teóricos
•não conseguem achar nenhuma razão
por que estes problemas são difíceis
•Muita pesquisa feita para desenvolver
mecanismos pelos quais novos problemas
possam ser classificados como “tão difíceis
como” problemas já conhecidos
CAP-223
Problemas NP-completo (cont.)
Classe P: problemas são resolvidos em tempo
polinomial
Classe NP:
soluções podem ser “verificadas” em
tempo polinomial;
Se, de alguma forma, pudesse fornecer um
“certificado” de solução, então poderia
verificar que o certificado está correto em
tempo polinomial em termos de tamanho
da entrada
CAP-223
Problemas NP-completo (cont.)
Ciclo Hamiltoniano - dado G(V, E), o certificado
seria seqüência (v1, v2, ..., vn). Então seria
possível verificar, em tempo polinomial, que
(vi, vi+1)  E para i = 1, 2, ... N-1 e (vn, v1)  E
3-CNF - atribuir valores a variáveis e verificar,
em tempo polinomial, que com estes valores a
fórmula é satisfeita
Qualquer problema P também está em NP
P  NP
CAP-223
Problemas NP-completo (cont.)
Um bom projetista de algoritmos deve
compreender os rudimentos da teoria de
NP-completo.
Se estabelecer que um problema é
NP-completo, já está dando uma evidência que
o problema é INTRATÁVEL.
O próximo passo seria desenvolver algoritmos
de aproximação ou resolver um caso especial
“tratável”do que procurar por um algoritmo
rápido para resolver exatamente o problema.
CAP-223
Problemas NP-completo (cont.)
Técnicas usadas para mostrar que um problema
é NP-completo
Afirmar quão difícil o problema é.
Não é questão de provar que há um algoritmo
eficiente. Mas mostrar que NENHUM algoritmo
eficiente existe.
CAP-223
Problemas NP-completo (cont.)
Problemas de Otimização: cada solução viável
possui um valor associado. Determinar solução
viável com o melhor valor.
Problemas de Decisão: respostas simples (0/1)
Relacionar problemas de decisão com os de
otimização
Grafo G com vértices u e v para determinar
caminho entre u e v com o menor número de
vértices [P1]. Será que há um caminho entre
os vértices consistindo no máximo k
arestas [P2]???
CAP-223
Problemas NP-completo (cont.)
Caixeiro Viajante: existe um ciclo que percorra
todos os vértices do grafo com um custo  B?
Coloração de Grafos: pode um grafo ser
adequadamente colorido com n cores?
Mochila: existe uma combinação de itens que
dê um lucro  L, respeitando o limite de peso?
CAP-223
Problemas NP-completo (cont.)
Lado positivo deste relacionamento:
tenta mostrar que problema de Otimização
é “difícil”
problema de Decisão é “mais fácil” ou pelo
menos “não é difícil”
No exemplo, pode-se resolver P2 resolvendo
P1 e compara o número de arestas com k
Se problema de Otimização for fácil o seu
problema de Decisão relacionado é também
fácil
CAP-223
Problemas NP-completo (cont.)
Relevância a NP-Completo:
se mostrar evidências que um problema de
Decisão é difícil, também mostra-se que o
seu problema de Otimização relacionado
também é difícil
CAP-223
Problemas NP-completo (cont.)
Quando a solução NÃO É
VERIFICÁVEL em tempo
polinomial  NP-Hard
CAP-223
Download