Réponses:
Pour montrer qu'un problème est NP terminé, vous devez:
En d'autres termes, compte tenu de certaines informations C, vous pouvez créer un algorithme de temps polynomial Vqui vérifiera pour chaque entrée possible Xsi elle Xest dans votre domaine ou non.
Prouvez que le problème des couvertures de sommets (c'est-à-dire, pour un graphe G, a- t-il un ensemble de couvertures de sommets de taille ktelle que chaque arête Ga au moins un sommet dans l'ensemble de couvertures ?) Est dans NP:
notre entrée Xest un graphique Get un nombre k(cela provient de la définition du problème)
Prenons nos informations Ccomme "n'importe quel sous-ensemble possible de sommets dans un graphe Gde taille k"
Ensuite, nous pouvons écrire un algorithme Vqui, étant donné G, ket Cretournera si cet ensemble de sommets est une couverture de sommets pour Gou non, en temps polynomial .
Alors pour chaque graphe G, s'il existe un "sous-ensemble possible de sommets Gde taille k" qui est une couverture de sommets, alors il Gy en a NP.
Notez que nous n'avons pas besoin de trouver Cen temps polynomial. Si nous pouvions, le problème serait dans `P.
Notez que l'algorithme Vdevrait fonctionner pour tous G , pour certains C. Pour chaque entrée, il devrait exister des informations qui pourraient nous aider à vérifier si l'entrée est dans le domaine du problème ou non. Autrement dit, il ne devrait pas y avoir d'entrée où l'information n'existe pas.
Cela implique d'obtenir un problème NP-complet connu comme SAT , l'ensemble des expressions booléennes sous la forme:
(A ou B ou C) et (D ou E ou F) et ...
là où l'expression est satisfiable , c'est qu'il existe un paramètre pour ces booléens, ce qui rend l'expression vraie .
Réduisez ensuite le problème NP-complet à votre problème en temps polynomial .
Autrement dit, étant donné une entrée Xpour SAT(ou quel que soit le problème NP-complet que vous utilisez), créez une entrée Ypour votre problème, telle que Xdans SAT si et seulement si Yest dans votre problème. La fonction f : X -> Ydoit s'exécuter en temps polynomial .
Dans l'exemple ci-dessus, l'entrée Yserait le graphique Get la taille de la couverture de vertex k.
Pour une preuve complète , vous devrez prouver les deux:
c'est Xdans SAT=> Ydans votre problème
et Ydans votre problème => Xin SAT.
La réponse de marcog a un lien avec plusieurs autres problèmes NP-complets que vous pourriez réduire à votre problème.
Note de bas de page: À l'étape 2 ( prouver qu'il est NP-difficile ), la réduction d'un autre problème NP-difficile (pas nécessairement NP-complet) au problème actuel fera l'affaire, puisque les problèmes NP-complet sont un sous-ensemble de problèmes NP-difficiles (qui sont également en NP).
Vous devez réduire un problème NP-Complete au problème que vous rencontrez. Si la réduction peut être faite en temps polynomial, vous avez prouvé que votre problème est NP-complet, si le problème est déjà en NP, car:
Ce n'est pas plus facile que le problème NP-complet, puisqu'il peut y être réduit en temps polynomial ce qui rend le problème NP-difficile.
Voir la fin de http://www.ics.uci.edu/~eppstein/161/960312.html pour en savoir plus.
Afin de prouver qu'un problème L est NP-complet, nous devons suivre les étapes suivantes:
Premièrement, vous montrez que cela réside dans le NP.
Ensuite, vous trouvez un autre problème dont vous savez déjà qu'il est NP complet et montrez comment vous réduisez polynomialement le problème NP Hard à votre problème.