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