520 likes | 626 Views
Séminaire Florin Périer Alain Gély LIMOS. Alain Gély ( gely@isima.fr ) - 2004 . WANTED. P = NP. ?. La complexité en informatique. Quelques problèmes. Un nombre N est-il divisible par 4 ?. Soit une série de nombre, trier ces nombres.
E N D
Séminaire Florin PérierAlain GélyLIMOS Alain Gély (gely@isima.fr) - 2004
WANTED P = NP ?
Quelques problèmes • Un nombre N est-il divisible par 4 ? • Soit une série de nombre, trier ces nombres • Soit le problème classique de la tour de Hanoi, afficher la liste des mouvements nécessaires pour le résoudre. • Un voyageur de commerce désire faire sa tournée, existe-t-il une tournée de moins de 50 km ?
David Hilbert& son problème n°10 • 1862 - 1943 • Liste des 23 problèmes de Hilbert (1900) • Problème numéro 10 : « Trouver un algorithme déterminant si une équation diophantienne à des solutions »
Alonzo Church & le -calcul • 1903 - 1995 • Résultat sur la calculabilité • Développement du lambda-calcul • 1936 : Démontre l’existence d ’un problème indécidable • Thèse de Church
Kurt Godël • 1906 - 1978 • Théorème d ’Incomplétude « pour tout système formel S contenant le langage de l'arithmétique, il existe une proposition G indémontrable dans S »
La complexité en informatique (Et aussi un peu de calculabilité / décidabilité)
Taille n Temps Ressources Espace Evaluation d’un algorithme Opérations élémentaires Entrées Résultat Algorithme
Exemple : codage d ’un graphe v1 v2 v3 v4 Le codage des données Utilisation d ’un codage raisonnable • Pour un problème I, on demande 2 caractéristiques à un codage raisonnable : • Il doit être concis, sans informations inutiles • Les nombres doivent être représentés dans une base différente autre que la base 1 (binaire, octal, décimal, etc.)
Comportement asymptotique des fonctions Notation O : O(g(n)) = {f(n) : il existe des constantes positives c et n0 tel que 0 f(n) c.g(n) pour tout n n0} f Notation : (g(n)) = {f(n) : il existe des constantes positives c et n0 tel que 0 c.g(n) f(n) pour tout n n0} Notation : (g(n)) = {f(n) : il existe des constantes positives c1 et c2, et n0 tel que 0 c1.g(n) f(n) c2.g(n) pour tout n n0}
O(n2) O(n) Exemple de complexité - Tri Entrée : T, un tableau de n nombres Sortie : T, le tableau trié Pour j allant de 2 à longueur(T) faire X T[j] i j-1 Tant que i>0 et A[i]>X faire A[i+1] A[i] A[i+1] X O(1) O(1) O(1) O(1)
Donald Knuth • 1938 - • The art of computer programming
Evolution du temps d'exécution en fonction de la complexité
Augmentation de la puissance des machines Taille d ’un problème traitable en une heure
Complexité polynomiale et exponentielle De manière informelle, un problème disposant d ’un algorithme polynomial pour le résoudre est un problème facile Polynomial Exponentiel Facile Difficile
Alan Matheson Turing& La machine de Turing • 1912 - 1954 • Inventeur de la Machine de Turing
Controleur d'états finis Controleur d'états finis Tête de lecture / écriture 1 0 1 -1 -0 1 2 3 i-1 i i+1 Machine de Turing Déterministe = {0,1,b}
Un nombre N est-il un multiple de 4 ? Un problème de décision est un problème pour lequel la réponse est dans l ’ensemble { OUI - NON } Un voyageur de commerce désire faire sa tournée, existe-t-il une tournée de moins de 50 km ? Classes de Complexité Problème de décision Exemples
Tête de lecture / écriture Controleur d'états finis Classes de Complexité Problème de décision & langage accepté par une machine de Turing l ’ensemble des symboles pouvant être écrit par l ’utilisateur sur le ruban *l ’ensemble des mots du langage sur l ’alphabet LM = { x * : M accepte x } Résoudre le problème revient à savoir si x LM
Un problème est dans P s ’il existe un algorithme en temps polynomial pour le résoudre La classe P P = {L : il existe un programme M en temps polynomial sur une machine de Turing Deterministe pour lequel LM=L}
P = co-P La classe co-P La classe co-P est le complémentaire de P • Pour un problème donné de P, • on montre facilement qu ’il est dans co-P : • On échange les réponses OUI et NON • Pour un problème de co-P, • on montre facilement qu ’il est dans P (idem)
Tête de lecture / écriture Guessing module Tête d’écriture Controleur d'états finis 1 0 1 -1 -0 1 2 3 i-1 i i+1 Machine de Turing Non Déterministe
Il existe un algorithme non déterministe en temps polynomial permettant de résoudre L. Il existe un algorithme déterministe en temps polynomial permettant de vérifier une solution de L. La classe NP NP = {L : il existe un programme M en temps polynomial sur une machine de Turing Non Deterministe pour lequel LM=L}
Exemple de problème de NP Le voyageur de commerce • Un voyageur de commerce désire faire sa tournée, existe-t-il une tournée de moins de 50 km ? 10 b a-b-e-c-d-a 50km a 10 10 40 20 10 d 10 10 c 12 10 e
NP et co-NP ? Problème du circuit hamiltonien Un graphe est-il hamiltonien ? Un graphe n’est-il pas hamiltonien ? Ce problème NP Ce problème co-NP Est-ce que ce problème NP ?
NP P=NP ? P P et NP Résultat le plus général : Si NP, alors il existe un polynôme p tel que peut être résolu par un algorithme déterministe avec une complexité de O(2p(n))
||p(n) p(n) || Espace des solutions (exponentiel) P et NP Donald devra prendre tous les papiers de la boite avant de trouver le bon Gontran trouvera immédiatement le bon papier Machine de Turing Déterministe Machine de Turing non Déterministe
Une transformation polynomiale • d’un langage L1 1* vers un langageL2 2* est une fonction • f:1* 2* qui vérifie les deux conditions : • il existe une machine de Turing Déterministe qui calcule f en temps polynomial • Pour tout x1* xL1ssi f(x) L2 f L1 L2 f Problème 2 Problème 1 OUI OUI NON NON Transformation polynomiale
Si L1 << L2 alors L2 P implique que L1 P Si L1 << L2 alors L1 P implique que L2 P Si L1<< L2 et L1<< L2 on dit que L1 et L2 sont polynomialement équivalent Transformation polynomiale On note L1 << L2 s ’il existe une transformation polynomiale de L1 vers L2 A quoi ça sert ? Si le problème 2 est facile, le problème 1 est facile Si le problème 1 est difficile, le problème 2 est difficile
NPI P, NP, NP-Complet • NP-Complet ssi • NP • 1NP, 1 << NP NPC P Si P <> NP
Stephen Cook« SAT est NPC » • Théorème de Cook : « SAT est NPC » (1971) • Reçoit le Turing Award en 1982 pour ce papier
Le théorème de Cook (1) « SAT NPC » (Cook71) • U = {u1,u2,…,um} un ensemble de variables booléennes. • Pour u U, • le litteral u est vrai si t(u)=T • le litteral u est vrai si t(u)=F • Une clause est un ensemble de littéraux, ex : {u1,u2,u3} • Une clause est satisfaite si au moins un de ses littéraux est vrai • Une collection de clause est satisfaite s ’il existe une affectation de variables permettant de satisfaire simultanément, chacune des clause de la collection.
Le théorème de Cook (2) Exemples • C = { (u1,u2) , (u1,u2)} est satisfiable • t(u1) = Vrai, t(u2) = Vrai. • C = { (u1,u2) , (u1,u2), (u1) } n ’est pas satisfiable
Le théorème de Cook (3) « SAT NPC » (Cook71) • SATISFIABILITY • INSTANCE : • Un ensemble U de variables booléenne • Une collection C de clauses définies sur U • QUESTION : • Existe-t-il une assignation de variables satisfaisant C ?
Le théorème de Cook (4) 1) SAT NP • Un algorithme non déterministe a seulement besoin de deviner une assignation satisfaisant C. • La vérification de cette assignation est clairement polynomiale. • La première condition pour appartenir à NPC est vérifiée.
Pbm Il y a une énorme diversité de langages dans NP… Faire une transformation pour chacun d ’entre eux est une tache titanesque ! Solution à chaque langage correspond un machine de Turing, boite noire : Une machine de Turing générique Le théorème de Cook (5) 2) L NP, L << SAT Retour au niveau des langages : LSAT=[SAT,e] Il faut montrer L << LSAT pour tous les langages de NP M , , b, Q, q0, qY, qN et p(n)
SAT 1 Le théorème de Cook (6) fL va être décrite en fonction de , , b, Q, q0, qY, qN, et p fL L LSAT
Utilisation d ’un nombre limité de variables 1 Le théorème de Cook (7) • Remarque n°1 • A chaque instant, on peut caractériser le système par : • contenu des cases • Position de la tête de lecture/écriture • Etat Courant Idée directrice montrer comment un ensemble de clauses peut être utilisé pour vérifier si une entrée x est acceptée par M Remarque n°2 il n ’y a pas plus de p(n)+1 instants distincts
Q[i,k] Au temps i, M est dans l ’état qk Au temps i, la tête L/R est sur la case j H[i,k] Au temps i, la case j contient le symbole sk S[i,j,k] Le théorème de Cook (8) Mise en place des variables booléennes • fL va construire un ensemble de variable U tel que • label des éléments de Q : q0, q1=qY, q2=qN, q3, …, qr(avec r=|Q|-1) • label des éléments de : s0=b, s1, s2, …, sv(avec v=||-1)
Clauses à rajouter Le théorème de Cook (9) Affectations de variables & acceptation du langage Clairement, à un langage L accepté par M correspond une affectation des variables précédentes. Mais, à une affectation arbitraire des variables ne correspond pas forcément une exécution de M.
Le théorème de Cook (10) Clauses à rajouter À chaque instant • La machine de Turing ne peut avoir qu’un seul état • La tête de L/E ne peut lire qu’un symbole • Une case du ruban ne peut contenir qu’un symbole Au début • M est dans sa configuration initiale A la fin • l’état de M est qY D’un instant i à l’instant i+1 • l’état de la machine dépend du précédent
{ Q[i,0], Q[i,1], … , Q[i,r] },0 i p(n) • { Q[i,j], Q[i,j’] }0 i p(n), 0 j j’ r • { H[i,-p(n)], H[i,-p(n)+1], … , H[i,p(n)+1] },0 i p(n) • { H[i,j], H[i,j’] }0 i p(n), -p(n) j j’ p(n)+1 • { S[i,j,0], Q[i,j,1], … , S[i,j,v] },0 i p(n), -p(n) j p(n)+1 • { S[i,j,k], Q[i,j,k’] }0 i p(n), -p(n) j p(n)+1, 0 k < k’ v Le théorème de Cook (11) Clauses à rajouter • { Q[0,0] }, { H[0,1] }, {S[0,0,0]} • { S[0,1,k1] }, { S[0,2,k2] }, … , { S[0,n,kn] } • { S[0,n+1,0] }, { S[0,n+2,0] }, … , { S[0,p(n)+1,0] }, • { Q[p(n),1] }
{ H[i,j], Q[i,k], S[i,j,l], H[i+1,j+] } • { Q[i,j], Q[i,k], S[i,j,l], Q[i+1,k’] } • { H[i,j], Q[i,k], S[i,j,l], S[i+1,j,l’]} • pour tout quadruplé (i,j,k,l) • 0 i < p(n), -p(n) j p(n)+1, 0 k r, 0 l v Le théorème de Cook (12) Clauses à rajouter
Problème de NP SAT Machine de Turing M / langage L L[SAT,e] Le théorème de Cook (13) Conclusions fL Longueur[fL] = O(p(n)4)
Conclusions • On vient de montrer qu ’il existe au moins un problème NPC • On ne sait toujours pas si NP - P est peuplé ! • Performances à priori des algorithmes • Complexité spatiale • Complexité temporelle • Problèmes de décisions • Classes de complexités P et NP • P = NP ?