Respostas:
Para mostrar que um problema é NP completo, você precisa:
Em outras palavras, com algumas informações C, você pode criar um algoritmo de tempo polinomial Vque verificará para cada entrada possível Xse Xestá em seu domínio ou não.
Prove que o problema de coberturas de vértices (isto é, para algum gráfico G, ele tem um conjunto de cobertura de vértices de tamanho ktal que cada aresta em Gtem pelo menos um vértice no conjunto de cobertura ?) Está em NP:
nossa entrada Xé algum gráfico Ge algum número k(isto é da definição do problema)
Considere nossas informações Ccomo "qualquer subconjunto possível de vértices no gráfico Gde tamanho k"
Então, podemos escrever um algoritmo Vque, dado G, ke C, retornará se aquele conjunto de vértices é uma cobertura de vértice para Gou não, em tempo polinomial .
Então, para cada gráfico G, se existe algum "possível subconjunto de vértices em Gde tamanho k" que é uma cobertura de vértice, então Gé em NP.
Observe que não precisamos encontrar Cem tempo polinomial. Se pudéssemos, o problema seria em `P.
Observe que o algoritmo Vdeve funcionar para todos G , para alguns C. Para cada entrada deve haver informações que possam nos ajudar a verificar se a entrada está no domínio do problema ou não. Ou seja, não deve haver uma entrada onde a informação não existe.
Isso envolve a obtenção de um problema NP-completo conhecido como SAT , o conjunto de expressões booleanas na forma:
(A ou B ou C) e (D ou E ou F) e ...
onde a expressão é satisfazível , ou seja, existe alguma configuração para esses booleanos, o que torna a expressão verdadeira .
Em seguida, reduza o problema NP-completo ao seu problema em tempo polinomial .
Isto é, dado alguma entrada Xpara SAT(ou qualquer problema NP-completo que você está usando), crie alguma entrada Ypara o seu problema, de modo que Xesteja no SAT se e somente se Yestiver no seu problema. A função f : X -> Ydeve ser executada em tempo polinomial .
No exemplo acima, a entrada Yseria o gráfico Ge o tamanho da cobertura do vértice k.
Para uma prova completa , você teria que provar ambos:
isso Xestá em SAT=> Yno seu problema
e Yno seu problema => Xem SAT.
A resposta de marcog tem um link com vários outros problemas NP-completos que você poderia reduzir ao seu problema.
Nota de rodapé: Na etapa 2 ( Prove que é NP-difícil ), reduzir outro problema NP-difícil (não necessariamente NP-completo) para o problema atual, uma vez que problemas NP-completos são um subconjunto de problemas NP-difíceis (que são também no NP).
Você precisa reduzir um problema NP-Completo ao seu problema. Se a redução pode ser feita em tempo polinomial, então você provou que seu problema é NP-completo, se o problema já estiver em NP, porque:
Não é mais fácil do que o problema NP-completo, pois pode ser reduzido a ele em tempo polinomial, o que torna o problema NP-Difícil.
Veja o final de http://www.ics.uci.edu/~eppstein/161/960312.html para mais.
Para provar que um problema L é NP-completo, precisamos seguir os seguintes passos:
Primeiro, você mostra que está em NP em tudo.
Então você encontra outro problema que você já sabe que é NP completo e mostra como você reduz polinomialmente o problema NP Difícil ao seu problema.