Je suppose que vous êtes à la recherche pour intuitive définitions les définitions techniques sont, ainsi, techniques et requièrent très peu de temps pour comprendre). Commençons par la définition de NP.
Problème de décision: Une question avec une réponse oui ou non.
P: Un problème de décision qui peuvent être résolus en temps polynomial. C'est, compte tenu d'une instance du problème, la réponse est oui ou non peut être décidé en temps polynomial.
Exemple: étant Donné un graphe connecté G
, peut de ses sommets être colorée à l'aide de deux couleurs, de sorte qu'aucune arête est monochromatique. Algorithme: commencer par l'arbitraire d'un sommet, de couleur rouge et l'ensemble de ses voisins, de bleu et de continuer. Arrêtez-vous lorsque vous exécutez notre de sommets ou vous êtes forcé de faire un bord ont à la fois de ses extrémités être de la même couleur.
NP: UN problème de décision où les instances du problème, pour lequel la réponse est oui ont les preuves qui peuvent être vérifiées en temps polynomial. Cela signifie que si quelqu'un nous donne un exemple du problème et un certificat (parfois appelé un témoin) à la réponse étant oui, nous pouvons vérifier qu'elle est correcte en temps polynomial.
Exemple: factorisation d'Entiers est NP. C'est le problème que, compte tenu des entiers n
et m
, est-il un entier f
avec 1 < f < m
tels que f
divise n
(f
est un petit facteur de n
)? C'est un problème de décision parce que les réponses sont oui ou non. Si quelqu'un nous tend une instance du problème (de sorte qu'ils nous les entiers n
et m
) et un entier f
avec 1 < f < m
et prétendent qu' f
est un facteur de n
(le certificat), nous pouvons vérifier la réponse en temps polynomial en effectuant la division de l' n / f
.
NP-complet: Un problème NP X
pour lesquels il est possible de réduire tout problème NP Y
de X
en temps polynomial. Intuitivement, cela signifie que nous ne pouvons résoudre Y
rapidement si nous savons comment résoudre X
rapidement. Précisément, Y
est réductible X
s'il existe un algorithme polynomial en temps f
pour transformer les instances y
de Y
de cas x = f(y)
de X
en temps polynomial avec la propriété que la réponse à la y
est oui si et seulement si la réponse à l' f(y)
est oui.
Exemple: 3-SAT. C'est le problème dans lequel il nous est donné une conjonction de 3-clause de disjonctions (c'est à dire, les déclarations de la forme
(x_v11 or x_v21 or x_v31) and
(x_v12 or x_v22 or x_v32) and
... and
(x_v1n or x_v2n or x_v3n)
où chaque x_vij
est une variable booléenne ou la négation d'une variable à partir d'une durée de liste prédéfinie (x_1, x_2, ... x_n)
. Il peut être montré que chaque NP problème peut être réduit à 3-SAT. La preuve, c'est technique et nécessite l'utilisation de la technique de définition de NP (basée sur la non-déterministe des machines de Turing). Ceci est connu en tant que Cuisinier du théorème.
Ce qui rend NP-complet problèmes important, c'est que si un déterministe polynomial en temps de l'algorithme permettant de résoudre l'un d'eux, tous les NP problème est résoluble en temps polynomial (un problème pour les gouverner tous).
NP-dur: Intuitivement, ce sont ces problèmes qui sont encore plus difficiles que le NP-complet problèmes. Notez que NP-dur les problèmes n'ont pas à être dans NP (ils n'ont pas à être des problèmes de décision). La définition précise ici, est-ce un problème X
est NP-difficile si il y a un problème NP-complet de problème, Y
tels que Y
est réductible X
en temps polynomial. Mais depuis toute NP-complets problème peut être réduit à tout autre NP-complet de problème en temps polynomial, toutes NP-complet problèmes peuvent être réduits à tout problème NP-difficile en temps polynomial. Alors si il y a une solution à un problème NP-difficile en temps polynomial, il y a une solution à tous les problèmes NP en temps polynomial.
Le problème de l'arrêt est le classique problème NP-difficile. C'est le problème que, étant donné un programme P
et d'entrée I
, il va les arrêter? C'est un problème de décision, mais il n'est pas dans NP. Il est clair que toute NP-complets problème peut être réduit à celui-ci.
P = NP: C'est la plus célèbre problème en informatique, et l'une des plus importantes questions en suspens dans les sciences mathématiques. En fait, le Clay Institute offre un million de dollars pour une solution au problème (Stephen Cook writeup sur le site web de l'Argile est assez bon). Il est clair que P est un sous-ensemble de NP. La question ouverte est de savoir si ou non NP problèmes ont déterministe polynomial en temps des solutions. Il est considéré qu'ils ne le font pas. Voici un remarquable article récent sur le dernier (et l'importance) de la P = NP problème: Le Statut de la P versus NP problème.
Le meilleur livre sur le sujet est d' Ordinateurs et Intraitable par Garey et Johnson. Mon préféré NP-complets problème est le dragueur de mines de problème.