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 V
qui vérifiera pour chaque entrée possible X
si elle X
est 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 k
telle que chaque arête G
a au moins un sommet dans l'ensemble de couvertures ?) Est dans NP:
notre entrée X
est un graphique G
et un nombre k
(cela provient de la définition du problème)
Prenons nos informations C
comme "n'importe quel sous-ensemble possible de sommets dans un graphe G
de taille k
"
Ensuite, nous pouvons écrire un algorithme V
qui, étant donné G
, k
et C
retournera si cet ensemble de sommets est une couverture de sommets pour G
ou non, en temps polynomial .
Alors pour chaque graphe G
, s'il existe un "sous-ensemble possible de sommets G
de taille k
" qui est une couverture de sommets, alors il G
y en a NP
.
Notez que nous n'avons pas besoin de trouver C
en temps polynomial. Si nous pouvions, le problème serait dans `P.
Notez que l'algorithme V
devrait 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 X
pour SAT
(ou quel que soit le problème NP-complet que vous utilisez), créez une entrée Y
pour votre problème, telle que X
dans SAT si et seulement si Y
est dans votre problème. La fonction f : X -> Y
doit s'exécuter en temps polynomial .
Dans l'exemple ci-dessus, l'entrée Y
serait le graphique G
et la taille de la couverture de vertex k
.
Pour une preuve complète , vous devrez prouver les deux:
c'est X
dans SAT
=> Y
dans votre problème
et Y
dans votre problème => X
in 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.