420 likes | 565 Vues
Cours d’Algorithmique. N P - complétude. Les grandes lignes du cours. Trier et chercher, recherche textuelle Listes et arbres Le back-track Arbres équilibrés Récursivité et induction sur la structure Divide and conquer, algorithmes gloutons Minimax, alpha-beta Dérécursion NP-complétude
E N D
Cours d’Algorithmique N P-complétude. Cours d'algorithmique 11 / Intranet
Les grandes lignes du cours • Trier et chercher, recherche textuelle • Listes et arbres • Le back-track • Arbres équilibrés • Récursivité et induction sur la structure • Divide and conquer, algorithmes gloutons • Minimax, alpha-beta • Dérécursion • NP-complétude • Logique de Hoare • Programmation dynamique • Complexité et calculabilité Cours d'algorithmique 11 / Intranet
Le problème----------------------------------------------------------------- • Nous avons vu le « action selection problem » : • en back-track avec une complexité exponentielle, • en programmation dynamique avec une complexité quadratique, • comme algorithme glouton avec une complexité linéaire. • Nous avons vu la « satisfaction d’une formule logique » : • en back-track avec une complexité exponentielle, (équivalant au parcours de la table de vérité), • et puis … ? • Rien ! ! ! Personne n'a trouvé mieux ! ! ! Cours d'algorithmique 11 / Intranet
Le problème----------------------------------------------------------------- • La question : • Y aurait-il par hasard des problèmes dont la complexité intrinsèque est exponentielle ? • Pour un tel problème, tout algorithme pour le résoudre serait exponentiel en temps ! • La réponse : • Probablement OUI ! • Malheureusement ! ! ! • On ne sait rien de définitif ! ! ! / P = N P ou bien P = N P Cours d'algorithmique 11 / Intranet
Le problème----------------------------------------------------------------- • La question de la « N P – complétude » : / P = N P ou bien P = N P Cours d'algorithmique 11 / Intranet
Le problème----------------------------------------------------------------- • On connaît des centaines et des centaines de problèmes « N P – complets » : • Si P = N P (probable) : Tous ont une complexité exponentielle ! • Si P = N P (peu probable) : Tous ont une complexité polynômiale ! • C’est sans doute le problème informatique non résolu le plus important ! ! ! / Cours d'algorithmique 11 / Intranet
Le problème----------------------------------------------------------------- Les problèmes « N P – complets » sont aussi appelés : INTRACTABLES !!! Parce que : 2^10 = 1024 2^20 = 1048576 2^30 = 1073741824 2^50 = 1125899906842624 Evitez-les quand vous le pouvez ! Cours d'algorithmique 11 / Intranet
Le problème----------------------------------------------------------------- • Un problème « N P – complet » est, • de manière informelle, • mais correspondant à la pratique : • un problème de décision ( OUI – NON ) • qui se résout (pour l’heure) par back-track (ou équivalent en complexité). Cours d'algorithmique 11 / Intranet
Le problème----------------------------------------------------------------- Plus difficile : difficile • Un problème « N P – complet » est, • de manière informelle, • mais correspondant à la pratique : • un problème de décision ( OUI – NON ) • qui se résout (pour l’heure) par back-track (ou équivalent en complexité). d’optimisation ( le meilleur, … ) complet Cours d'algorithmique 11 / Intranet
Des exemples----------------------------------------------------------------- • « SAT » est « N P –complet » : • « n » variables logiques, • une formule logique construite sur ces variables à l’aide de et, ou et not. • La question ( toute simple ) : Est-il possible de donner des valeurs aux variables logiques de manière à rendre vraie la formule ? • La solution : Essayez tout ! Cours d'algorithmique 11 / Intranet
Des exemples----------------------------------------------------------------- • Attention : • Parfois c’est simple ! ! ! • a b . . . z a v ( . . . ) • Mais, dans le cas général (c’est-à-dire le plus souvent), c’est difficile ! ! ! v v v Cours d'algorithmique 11 / Intranet
Des exemples----------------------------------------------------------------- • Le « Voyageur de Commerce », en anglais « Traveling Salesman Problem » ( TSP ), est « N P –difficile » : • « n » villes, • un réseau routier entre ces villes avec les distances, • La question : Quel est le coût du circuit (point de départ = point d’arrivée) le moins cher qui visite chaque ville une et une seule fois ? • La solution : Essayez tout ! Cours d'algorithmique 11 / Intranet
N P – complétude ----------------------------------------------------------------- • La classe de problèmes « P » ! • Ce sont les problèmes qui acceptent un algorithme : • polynômial, • déterministe, • qui résout toutes les instances. La complexité est un polynôme en termes de la taille du problème. Il n’y a aucun élément de chance ou d’indication venant de l’extérieur. Aucune instance n’est trop difficile. La plupart des problèmes ! Cours d'algorithmique 11 / Intranet
N P – complétude ----------------------------------------------------------------- • La classe de problèmes « N P » ! • Ce sont les problèmes qui acceptent un algorithme : • polynômial, • non-déterministe, • qui résout toutes les instances. Il peut y a avoir des éléments de chance ou des indications venant de l’extérieur. Oracle ! Boule de cristal ! La Pythie ! Cours d'algorithmique 11 / Intranet
N P – complétude ----------------------------------------------------------------- • La classe de problèmes « NP » ! • Il est clair que : P N P • Mais ? P = N P ou P = N P U / Est-ce que l'oracle apporte un plus ? ? ? Cours d'algorithmique 11 / Intranet
N P – complétude ----------------------------------------------------------------- • La classe de problèmes « N P » ! ICI ! On voit ou est la solution ! Cours d'algorithmique 11 / Intranet
N P – complétude ----------------------------------------------------------------- Ou alors poser la question à l'oracle ! • La classe de problèmes « N P » ! Oracle ? E t m a i n t e n a n t ? ICI ! Cours d'algorithmique 11 / Intranet
N P – complétude ----------------------------------------------------------------- Ou alors poser la question à l'oracle ! • La classe de problèmes « N P » ! Oracle ? A gauche ! E t m a i n t e n a n t ? ICI ! Cours d'algorithmique 11 / Intranet
N P – complétude ----------------------------------------------------------------- Ou alors poser la question à l'oracle ! • La classe de problèmes « N P » ! Oracle ? A droite ! ICI ! L'oracle ne se trompe jamais ! Cours d'algorithmique 11 / Intranet
N P – complétude ----------------------------------------------------------------- • Nous remplaçons une exploration à l’aide du back-track • par un appel à l’oracle. • L’oracle répond au bout de . . . ? • La complexité de l’oracle est bien-sûr en O ( 1 ) . • Je sais réaliser un oracle en temps exponentiel ! • Il suffit de faire un back-track en cachette ! ! ! Cours d'algorithmique 11 / Intranet
N P – complétude ----------------------------------------------------------------- • Une autre façon de voir les choses : • Si P = N P • alors l’oracle, c’est-à-dire le choix peut toujours être calculé en temps polynômial ! Cours d'algorithmique 11 / Intranet
N P – complétude ----------------------------------------------------------------- • Autre formulation de la classe de problèmes « N P » ! • Ce sont les problèmes qui : • acceptent, pour chaque instance, un nombre borné de candidats à être la solution, • pour lesquels, la vérification qu’un candidat quelconque est solution appartient à « P ». L'oracle choisit une solution parmi tous les candidats ! ! ! En temps raisonnable : Vous vérifiez qu'il n'y a pas arnaque ! Cours d'algorithmique 11 / Intranet
N P – complétude ----------------------------------------------------------------- • Théorème : P N P U N P ? ? ? ? ? P ? ? P = N Pc’est-à-dire N P \ P = o | Cours d'algorithmique 11 / Intranet
N P – complétude ----------------------------------------------------------------- • Définissons la classe « N P C », c’est-à-dire les problèmes « N-P-complets » : Difficile. N P C N P P Facile. Ce seront les problèmes les plus difficiles de « N P » ! L’idée : Si eux sont dans « P », alors « P = N P » ! ! ! Cours d'algorithmique 11 / Intranet
N P – complétude ----------------------------------------------------------------- • Il nous faut une notion de traduction ! • Soit un problème P : D -> BOOL • Soit un problème P : D -> BOOL • P se réduit en P , noté P <= P , si et seulement si : • il existe f : D -> D • telle que pour tout x e D : P ( x ) = P ( f ( x ) ) 1 1 2 2 1 2 1 2 1 2 1 1 2 Cours d'algorithmique 11 / Intranet
N P – complétude ----------------------------------------------------------------- • L’idée derrière la traduction : P Calcul ! 1 x Vrai ou Faux Le même résultat ! Traduction ! P Calcul ! 2 f ( x ) Vrai ou Faux Cours d'algorithmique 11 / Intranet
N P – complétude ----------------------------------------------------------------- Vrai et ( Faux ounot ( Faux ) ) = Vrai • Un exemple : • Les booléens : Vrai Faux et ou not • Les entiers : 1 0 * max ( 1 - _ ) • Théorème : • F = Vrai si et seulement si f ( F ) = 1 f : 1 * ( 0 max ( 1 - 0 ) ) = 1 BOOL BOOL Cours d'algorithmique 11 / Intranet
N P – complétude ----------------------------------------------------------------- • Si P <= P et que A résout P : 1 2 2 2 P ( f ( x ) ) P ( x ) x x f ( x ) 2 1 A f 2 y P ( y ) 2 Cours d'algorithmique 11 / Intranet
N P – complétude ----------------------------------------------------------------- • Il nous faut une réduction en temps raisonnable ! • P se réduit polynômialement en P , noté P <= P , si et seulement si : • il existe f : D -> D avec f eP • telle que pour tout x e D : P ( x ) = P ( f ( x ) ) • <= est un pré-ordre : • réflexitivité, transitivité, OK. • Non anti-symétrique : P <= P et P <= P , mais P = P 1 2 1 2 P 1 2 1 1 2 P P P 1 2 2 1 / Cours d'algorithmique 11 / Intranet 1 2
N P – complétude ----------------------------------------------------------------- • Théorème : • Soient P et P avec P <= P : • Si P eP alors P eP . • Si P eP alors P eP . • Donc, P est au moins aussi difficile que P . • Preuve (première condition) : • Si P eP alors il existe A pour le résoudre de manière déterministe et en temps polynômial ! • Il suffit de composer A avec la fonction de traduction f . 1 2 1 2 P 2 1 / / 1 2 2 1 2 2 2 Cours d'algorithmique 11 / Intranet
N P – complétude ----------------------------------------------------------------- • Théorème : • Soient P et P avec P <= P : • Si P eP alors P eP . • Si P eP alors P eP . • Donc, P est au moins aussi difficile que P . • Preuve (seconde condition) : • Par absurde : Il n’est pas possible que P eP et que P eP . • Il existerait A dans P pour résoudre P et il suffirait de composer A avec la fonction de traduction f . . . 1 2 1 2 P 2 1 / / 1 2 2 1 / 1 2 2 2 2 Cours d'algorithmique 11 / Intranet
N P – complétude ----------------------------------------------------------------- • Définition : • La classe « N P C » est la classe des problèmes P tels que : • P eN P . • Pour tout Q eN P on a : Q <= P . • Tout le monde se réduit vers P . • P est donc le plus difficile ! ! ! • Si P , P’ eN P C , alors il sont « ex aequo » en difficulté : P <= P’ et P’ <= P . P P P Cours d'algorithmique 11 / Intranet
<= <= P P >= P N P – complétude ----------------------------------------------------------------- • Schématiquement : • Globalement, • il suffit de savoir résoudre un seul problème, P par exemple, • et de traduire tous les autres vers P . <= P N P C P P’ N P >= P A B C Cours d'algorithmique 11 / Intranet
N P – complétude ----------------------------------------------------------------- • Et si « N P C » était vide ? ? ? • C’est-à-dire, un tel problème universel n’existe pas ! ! ! • Théorème (Cook, 1971) : • SAT eN P C . • Il n’y a pas plus difficile (dans N P C) que la logique. • Principe de la preuve : • Tout problème dans « N P » peut être traduit en une formule logique. • Analogie : Tout texte peut être traduit en une formule alphabétique. Cours d'algorithmique 11 / Intranet
N P – complétude ----------------------------------------------------------------- • Conséquences : • S’il existe un seul problème PeN P C • pour lequel on trouve un algorithme en temps polynômial et déterministe, • alors P = N P ! • S’il existe un seul problème PeN P C • pour lequel on prouve qu’un algorithme en temps polynômial et déterministe ne peut pas exister, • alors P = N P ! Le problème universel est facile ! Personne n'a trouvé ! ! ! Personne n'a prouvé ! ! ! / Le problème universel est difficile ! Cours d'algorithmique 11 / Intranet
N P – complétude ----------------------------------------------------------------- • Concrètement : • Vous avez un problème qui vous résiste ! • Essayez de savoir s’il est N-P-complet ! • le Garey and Johnson, • ou Internet, • ou prouvez-le vous-même. • Comment faire ? • Prouvez que votre problème P est dans N P et • prenez un problème A de N P C et montrez que A <= P P Cours d'algorithmique 11 / Intranet
N P – complétude ----------------------------------------------------------------- • Concrètement : • Si, par malheur, il l’est . . . • Est-ce que j’ai vraiment besoin de ce résultat ? • Si oui . . . • Est-ce que mon instance est par chance suffisamment petite ? • Est-ce que je peux me contenter d’un résultat approché ? • L’idée derrière le résultat approché : • Il est peut-être pas loin d’être optimal ( par exemple à 5% de l’optimum ), mais il est dans « P » ( par exemple en n^2 ) . Cours d'algorithmique 11 / Intranet
N P – complétude ----------------------------------------------------------------- • Quelques problèmes de « N P C » ! • SAT • « n » variables logiques et une formule « F » construite sur ces variables à l’aide de et , ou ou not . • La question : F peut-elle prendre la valeur Vrai pour un choix adéquat des valeurs des variables ? • 3-SAT • « n » variables logiques et une formule « F » en forme normale conjonctive avec 3 littéraux par disjonction. Exemple : ( x v x v ù x ) ( x v ù x v ù x ) • Même question ! • 2-SAT eP v 1 3 5 3 2 4 Cours d'algorithmique 11 / Intranet
N P – complétude ----------------------------------------------------------------- • Quelques problèmes de « N P C » ! • Circuit-SAT • « n » variables logiques et un circuit logique construit à partir des circuits de base et , ou ou not . • La question : Le circuit peut-il rendre la valeur Vrai pour un choix adéquat des valeurs des variables ? • Exemple de réduction : • Admettons que 3-SAT soit connu pour appartenir à « N P C ». • Démontrons que Circuit-SAT appartient aussi à « N P C » ! Cours d'algorithmique 11 / Intranet
N P – complétude ----------------------------------------------------------------- • La réduction : • Variable 3-SAT -> variable Circuit-SAT. • ù x -> x • ( a v b v c ) -> a b c • ( a b . . . z ) -> a b . . . . . . z L'équivalence est évidente ! La réduction est dans P ! v v v . . . Cours d'algorithmique 11 / Intranet
N P – complétude ----------------------------------------------------------------- • Quelques problèmes de « N P C » ! • Subset-Sum • Un ensemble E de « n » entiers naturels et une constante s. • La question : Existe-il un sous-ensemble I de E tel que la somme des éléments de I soit égale à s ? • Set-Partition • Un ensemble E de « n » entiers naturels. • La question : Existe-il un sous-ensemble I de E tel que la somme des éléments de I soit égale à la somme des éléments de l’ensemble complémentaire ? Cours d'algorithmique 11 / Intranet
N P – complétude ----------------------------------------------------------------- • Quelques problèmes de « N P C » ! • Programmation entière • Une matrice entière M et un vecteur entier b . • La question : Existe-il un vecteur x tel que M * x <= b ? • Programmation entière en 0 - 1 • Une matrice entière M et un vecteur entier b . • La question : Existe-il un vecteur x avec des valeurs 0 ou 1 tel que M * x <= b ? • Et des milliers d’autres . . . Cours d'algorithmique 11 / Intranet