TIPE : Quelques définitions à placer dans le TIPE : NP : De façon équivalente, c'est la classe des problèmes qui admettent un algorithme polynomial capable de tester la validité d'une solution du problème, mais pour lequel il n’existe pas forcément d’algorithme polynomial qui permettent de trouver une solution. Alors que P : on connaît un algorithme qui permet de trouver une solution en temps polynomial. http://fr.wikipedia.org/wiki/NP_complet#Classe_NP_et_classe_CoNP_.28Compl.C3.A9mentaire_de_NP.29 http://fr.wikipedia.org/wiki/21_probl%C3%A8mes_NP-complets_de_Karp NP-complet : On dit qu'un problème est NP-complet si il est dans NP, et il est NP-difficile Un problème est NP-difficile si ce problème est au moins aussi difficile que tous les problèmes dans NP. Formellement on définit une notion de réduction : soient ∏ et ∏' deux problèmes ; une réduction de ∏' à ∏ est un algorithme (ou une machine) d'une complexité appartenant à P qui transforme le problème ∏' en le problème ∏. Ainsi, si l'on a un algorithme pour résoudre ∏, on sait aussi résoudre ∏' , mais de plus, si la complexité de ∏ est au moins celle de la classe NP, on peut dire que ∏ est donc au moins aussi difficile à résoudre que ∏' . ∏ est alors NP-difficile si pour tout problème ∏' de NP, ∏' se réduit à ∏. Ainsi, si on sait résoudre un problème NP-complet en temps polynomial, on peut résoudre (grâce à des réductions à partir de ce problème) tous les problèmes NP en un temps polynomial. OK ! Problème à traiter : Montrer que le problème des n reines est équivalent au problème de couverture exacte. Idée de touche personnelle (non encore réalisée) : faire un algorithme (certes ultraclassique, mais mieux que rien …) en Maple ou en Caml qui résoudrait le problème des n reines. But Montrer que sa complexité n’est pas polynomiale. On représente la case ligne i colonne i par LiCi/k. On note k=1 s’il y a une reine, 0 sinon. Montrons que n reines <-> EXACT COVER : Couverture exacte : Étant donné un univers U d'éléments et une collection d'ensembles, une couverture exacte est une collection de sous-ensembles de dans U est aussi un élément dans exactement un des ensembles de tel que tout élément . En d'autres termes, une couverture exacte est une sous-collection de U : les ensembles dans sont disjoints et leur union est U. de qui est une partition Étant donné un univers U d'éléments et une collection d'ensembles, le problème de la couverture exacte consiste en trouver une couverture exacte ou bien de déterminer qu'il n'en existe pas. La matrice dans l'exemple 3 ci-dessus peut être réinterprété pour représenter la relation binaire "est contenu dans" entre l'ensemble X = {1, 2, 3, 4, 5, 6} de 6 éléments et la collection Y = {A, B, C, D, E, F, G} de 7 ensembles : A = {1, 2} B = {5, 6} C = {4, 5} D = {1, 2, 3} E = {3, 4} F = {4, 5} G = {1, 3, 5, 6} La même représentation matricielle comme dans l'exemple 3 s'applique ici, mais elle est étiquetée différemment : A B C D E F G 1 1 0 0 1 0 0 1 2 1 0 0 1 0 0 0 3 0 0 0 1 1 0 1 4 0 0 1 0 1 1 0 5 0 1 1 0 0 1 1 6 0 1 0 0 0 0 1 Comme dans l'exemple 3, une solution consiste à sélectionner les 2e, 4e et 6e lignes de la matrice : A B C D E F G 2 1 0 0 1 0 0 0 4 0 0 1 0 1 1 0 6 0 1 0 0 0 0 1 Mais à la différence de l'exemple 3, l'interprétation ici montre que la solution est l'ensemble des éléments X* = {2, 4, 6} tel que chaque ensemble dans Y contient exactement un élément de X* : A = {1, 2} B = {5, 6} C = {4, 5} D = {1, 2, 3} E = {3, 4} F = {4, 5} G = {1, 3, 5, 6} En d'autre termes, la solution est un ensemble intersectant exact. Vraiment, les problèmes de la couverture exacte et les problèmes d'ensemble intersectant exact sont duaux l'un de l'autre, c.a.d. essentiellement les mêmes. On définit des contraintes : 1) Une dame par Ligne : {LkC1/a,LkC2/b,LkC3/c,LkC4/d,LkC5/e,LkC6/f,LkC7/g,LkC8/h}, où un des réels (a,b,c,d,e,f,g,h) est égal à 1 et les autres à 0, et où k appartient à l’ensemble {1,2,3,4,5,6,7,8}. 2) Une dame par Colonne : {L1Ck/a,L2Ck/b,L3Ck/c,L4Ck/d,L5Ck/e,L6Ck/f,L7Ck/g,L8Ck/h}, où un des réels (a,b,c,d,e,f,g,h) est égal à 1 et les autres à 0, et où k appartient à l’ensemble {1,2,3,4,5,6,7,8} 3) Une dame sur la Diagonale principale : {L1C1/a,L2C2/b,L3C3/c,L4C4/d,L5C5/e,L6C6/f,L7C7/g,L1C8/h}, où un des réels (a,b,c,d,e,f,g,h) est égal à 1 et les autres à 0. 4) Une dame sur la Diagonale secondaire : {L8C1/a,L7C2/b,L6C3/c,L5C4/d,L4C5/e,L3C6/f,L2C7/g,L1C8/h}, où un des réels (a,b,c,d,e,f,g,h) est égal à 1 et les autres à 0. A partir de là, on retombe sur un problème de couverture exacte : Premièrement, la réduction : complexité en n^2 pour 1), n^2 pour 2), n pour 3 et n pour 4. Deuxièmement, on a bien réduit au problème de couverture exacte : trouver une solution au problème des huits reines consiste à trouver un ensemble de points vérifiant une contrainte 1), une contrainte 2), une contrainte 3) et une contrainte 4). Donc OK EXACT COVER <- Problème des huits reines.