Je suppose que vous recherchez des définitions intuitives, car les définitions techniques nécessitent un certain temps pour être comprises. Tout d'abord, rappelons-nous un concept préliminaire nécessaire pour comprendre ces définitions.
- Problème de décision : Un problème avec une réponse oui ou non .
Maintenant, définissons ces classes de complexité .
P
P est une classe de complexité qui représente l'ensemble de tous les problèmes de décision qui peuvent être résolus en temps polynomial .
Autrement dit, étant donné une instance du problème, la réponse oui ou non peut être décidée en temps polynomial.
Exemple
Étant donné un graphe connecté G
, ses sommets peuvent-ils être colorés à l'aide de deux couleurs afin qu'aucune arête ne soit monochromatique?
Algorithme: commencez par un sommet arbitraire, colorez-le en rouge et tous ses voisins en bleu et continuez. Arrêtez-vous lorsque vous manquez de sommets ou que vous êtes obligé de créer une arête dont les deux extrémités sont de la même couleur.
NP
NP est une classe de complexité qui représente l'ensemble de tous les problèmes de décision pour lesquels les instances où la réponse est «oui» ont des preuves qui peuvent être vérifiées en temps polynomial.
Cela signifie que si quelqu'un nous donne une instance du problème et un certificat (parfois appelé témoin) pour que la réponse soit oui, nous pouvons vérifier qu'il est correct en temps polynomial.
Exemple
La factorisation entière est en NP. C'est le problème que, étant donné les nombres entiers n
etm
, y a-t-il un entier f
avec 1 < f < m
, qui f
divise n
( f
est un petit facteur de n
)?
Il s'agit d'un problème de décision car les réponses sont oui ou non. Si quelqu'un nous remet une instance du problème (alors il nous remet des entiers n
et m
) et un entier f
avec1 < f < m
, et prétendent que f
c'est un facteur de n
(le certificat), nous pouvons vérifier la réponse en temps polynomial en effectuant la division n / f
.
NP-Complete
NP-complet est une classe de complexité qui représente l'ensemble de tous les problèmes X
de NP pour lesquels il est possible de réduire tout autre problème NP Y
à X
temps polynomiale.
Intuitivement, cela signifie que nous 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 de temps f
pour transformer des instances y
de Y
en instancesx = f(y)
de X
temps polynomial, avec la propriété que la réponse à y
est oui, si et seulement si la réponse àf(y)
est oui.
Exemple
3-SAT
. C'est le problème dans lequel on nous donne une conjonction (ET) de disjonctions à 3 clauses (OU), des 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ù chacun x_vij
est une variable booléenne ou la négation d'une variable d'une liste prédéfinie finie (x_1, x_2, ... x_n)
.
On peut montrer que chaque problème NP peut être réduit à 3-SAT . La preuve en est technique et nécessite l'utilisation de la définition technique de NP ( basée sur des machines de Turing non déterministes ). Ceci est connu comme le théorème de Cook .
Ce qui rend les problèmes NP-complets importants, c'est que si un algorithme de temps polynomial déterministe peut être trouvé pour résoudre l'un d'entre eux, chaque problème NP est résoluble en temps polynomial (un problème pour les gouverner tous).
NP-dur
Intuitivement, ce sont les problèmes qui sont au moins aussi difficiles que les problèmes NP-complets . Notez que les problèmes NP-difficiles ne doivent pas être dans NP , et ils ne doivent pas être des problèmes de décision .
La définition précise ici est qu'un problème X
est NP-difficile, s'il y a un problème NP-complet Y
, tel qu'il Y
est réductible X
en temps polynomial .
Mais comme tout problème NP-complet peut être réduit à tout autre problème NP-complet en temps polynomial, tous les problèmes NP-complet peuvent être réduits à tout problème NP-dur en temps polynomial. Ensuite, s'il existe une solution à un problème NP-dur en temps polynomial, il y a une solution à tous les problèmes NP en temps polynomial.
Exemple
Le problème d'arrêt est un problème NP-difficile. C'est le problème qui, compte tenu d'un programme P
et d'une entrée I
, va-t-il s'arrêter? C'est un problème de décision mais ce n'est pas dans NP. Il est clair que tout problème NP-complet peut être réduit à celui-ci. Comme autre exemple, tout problème NP-complet est NP-difficile.
Mon problème NP-complet préféré est le problème du démineur .
P = NP
Celui-ci est le problème le plus connu en informatique et l'une des questions en suspens les plus importantes en sciences mathématiques. En fait, le Clay Institute offre un million de dollars pour une solution au problème (la publication de Stephen Cook sur le site Web de Clay est assez bonne).
Il est clair que P est un sous-ensemble de NP. La question ouverte est de savoir si les problèmes NP ont ou non des solutions temporelles polynomiales déterministes. On pense généralement que non. Voici un article récent exceptionnel sur le dernier (et l'importance) du problème P = NP: Le statut du problème P versus NP .
Le meilleur livre sur le sujet est Computers and Intractability de Garey et Johnson.
I
sur lesn
variables, essayez toutes2^n
les affectations possibles aux variables et arrêtez si l'on satisfait la proposition et sinon entrez dans une boucle infinie. Nous voyons que cet algorithme s'arrête si et seulement siI
est satisfiable. Ainsi, si nous avions un algorithme de temps polynomial pour résoudre le problème d'arrêt, nous pourrions résoudre SAT en temps polynomial. Par conséquent, le problème d'arrêt est NP-difficile.