Séminaire Florin Périer Alain Gély LIMOS

Slides:



Advertisements
Présentations similaires
Tris.
Advertisements

Algorithmes et structures de données avancées Cours 6 Patrick Reuter
Algorithmes et structures de données avancés
Algorithmes et structures de données
Structures de données et complexité
Introduction à l’Algorithmique
Calculs de complexité d'algorithmes
Cours d'algorithmique 11 / Intranet 1 9 janvier 2006 Cours dAlgorithmique N P - complétude.
Séminaire Biblio LISC - 3/04/02 Complexité, information Daprès JP Delahaye (1999)
Logique et Raisonnement Scientifique
Logique et raisonnement scientifique
Logique et Raisonnement Scientifique A. Lecomte Gödel et lincomplétude.
Cours dinformatique théorique INF f5 Alain Lecomte novembre 2005.
INTRODUCTION.
Section VIII Modularité Partie II
Chapitre II.Rappels mathématiques et complexité
L’ordinateur Aspect théorique
Les bases de l’Algorithmique
Conception et analyse des algorithmes
Démarche de résolution de problèmes
Les algorithmes: complexité et notation asymptotique
Chapitre 2 Réductions: exemples et méthodes
1.2 COMPOSANTES DES VECTEURS
I.A. Session 2009/2010 E.P.S.I. Bordeaux – C.S.I.I – 2 ème Année – Cours n°3.
Algorithmique et Programmation
Fonction exponentielle: enchaînement de théorèmes
Chapitre 2 Réductions: exemples et méthodes
Mesurer l’efficacité des algorithmes
Chapitre 3 Machines de Turing.
IFT Complexité et NP-complétude
IFT Chapitre 1 Classes de complexité fondamentales:
IFT Au delà de NP: hiérarchie polynomiale, EXP, NEXP.
Algorithmes d ’approximation
Partie II Sémantique.
Introduction au calcul quantique
Programmation non procédurale Le projet ECOLE 2000
ASI 3 Méthodes numériques pour l’ingénieur
Indécidabilité.
8INF8061 Conception et analyse des algorithmes Comment comparer deux problèmes?
Analyse des Algorithmes
IFT Complexité et NP-complétude Chapitre 0 Rappels.
ASI 3 Méthodes numériques pour l’ingénieur
Conception et analyse des algorithmes
Pour en finir avec l’infini
IFT Complexité et NP-complétude
RAPPEL Qu’est ce qu’une structure de contrôle itérative ?
D.E ZEGOUR Ecole Supérieure d’Informatique
O-notation 1. Introduction 2. O-notation 3. Opérations 3.1 Somme 3.2 Produit 4. Règles générales 5. Exemple 6.Analyse des algorithmes récursifs 6.1 Dilatation.
INTRODUCTION.
D.E ZEGOUR Ecole Supérieure d’Informatique
Les machines de Turing Lionel Blavy Sébastien Giraud Fabien Tricoire
Cours LFI-2 (Master Académique)
Programmation procédurale preuves D. Preuves Preuves sur les R-algorithmes. Règle de l'appel (Hoare). Exemple Preuves sur les B-algorithmes (Floyd) Automatisation.
Complexité des Problèmes Combinatoires Module IAD/RP/RO/Complexité Philippe Chrétienne.
Algorithmes Branch & Bound
D.E ZEGOUR Ecole Supérieure d’Informatique. Problèmes de décision Concepts de base Expressions régulières Notation particulière pour exprimer certaines.
Les Machines RAM.
Université Pierre et Marie Curie Laboratoire d’Informatique de Paris VI Département ASIM Analyse et résultats sur le dimensionnement des mémoires pour.
DU commerce éléctronique, mars Logique et fondements de l’informatique Université Paris II Michel de Rougemont
2008/ Plan du cours 1.Introduction –Contenu du cours 2.Logique mathématique –Calcul propositionnel –Calcul des prédicats –Logique floue et aide à.
Problème de double digestion
D.E ZEGOUR Ecole Supérieure d’Informatique
Logique et fondements de l’informatique
Algorithmique et Complexité
ANALYSE Révisions.
Cours d’initiation en Informatique
L ’opérationnalisation des objectifs
Chap. 3 Récursion et induction. Les définitions par récurrence consistent à construire des objets finis, à partir d'autres, selon certaines règles. Les.
ALGORITHME ET PROGRAMMATION RÉVISION Informatique et Sciences du Numérique.
Complexité des Problèmes Combinatoires Module IAD/RP/RO/Complexité Philippe Chrétienne.
Transcription de la présentation:

Séminaire Florin Périer Alain Gély LIMOS Alain Gély (gely@isima.fr) - 2004

P = NP WANTED ?

La complexité en informatique

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é)

Evaluation d’un algorithme Taille n Opérations élémentaires Entrées Résultat Algorithme Ressources Temps Espace

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.) Exemple : codage d ’un graphe v1 v2 v3 v4

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}

Notation O - exemples

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(n2) O(1) O(n) 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

Problèmes & Classes de complexités

Alan Matheson Turing & La machine de Turing 1912 - 1954 Inventeur de la Machine de Turing

Machine de Turing Déterministe Controleur d'états finis Controleur d'états finis Tête de lecture / écriture 1 -1 -0 1 2 3 i-1 i i+1  = {0,1,b}

Un nombre N est-il un multiple de 4 ? Classes de Complexité Problème de décision Un problème de décision est un problème pour lequel la réponse est dans l ’ensemble { OUI - NON } Exemples Un nombre N est-il un multiple de 4 ? 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 & langage accepté par une machine de Turing Tête de lecture / écriture Controleur d'états finis  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

P

La classe P P = {L : il existe un programme M en temps polynomial sur une machine de Turing Deterministe pour lequel LM=L} Un problème est dans P s ’il existe un algorithme en temps polynomial pour le résoudre

La classe co-P P = 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) P = co-P

NP

Machine de Turing Non Déterministe Guessing module Tête d’écriture Controleur d'états finis Tête de lecture / écriture 1 -1 -0 1 2 3 i-1 i i+1

La classe NP NP = {L : il existe un programme M en temps polynomial sur une machine de Turing Non Deterministe pour lequel LM=L} 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.

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 40 10 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 ?

P et NP NP P=NP ? P 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 et NP p(n) || ||p(n) Machine de Turing Déterministe Donald devra prendre tous les papiers de la boite avant de trouver le bon p(n) || ||p(n) Gontran trouvera immédiatement le bon papier Espace des solutions (exponentiel) Machine de Turing Déterministe Machine de Turing non Déterministe

Transformation polynomiale Une transformation polynomiale d’un langage L1  1* vers un langage L2  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 x1* xL1 ssi f(x)  L2 L2 L1 Problème 1 Problème 2 f NON OUI

Transformation polynomiale On note L1 << L2 s ’il existe une transformation polynomiale de L1 vers L2 A quoi ça sert ? Si L1 << L2 alors L2  P implique que L1  P Si le problème 2 est facile, le problème 1 est facile Si L1 << L2 alors L1  P implique que L2  P Si le problème 1 est difficile, le problème 2 est difficile Si L1<< L2 et L1<< L2 on dit que L1 et L2 sont polynomialement équivalent

P, NP, NP-Complet   NP-Complet ssi   NP  1NP, 1 <<  NP NPI 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.

Le théorème de Cook (5) M , , b, Q, q0, qY, qN et  p(n) 2) L  NP, L << SAT Retour au niveau des langages : LSAT=[SAT,e] Il faut montrer L << LSAT pour tous les langages de NP Pbm Il y a une énorme diversité de langages dans NP… Faire une transformation pour chacun d ’entre eux est une tache titanesque ! M , , b, Q, q0, qY, qN et  p(n) Solution à chaque langage correspond un machine de Turing, boite noire : Une machine de Turing générique

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 SAT 1

Utilisation d ’un nombre limité de variables 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 Utilisation d ’un nombre limité de variables 1

Mise en place des variables booléennes 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) Q[i,k] Au temps i, M est dans l ’état qk H[i,k] Au temps i, la tête L/R est sur la case j S[i,j,k] Au temps i, la case j contient le symbole sk

Affectations de variables & acceptation du langage 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. Clauses à rajouter

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

Le théorème de Cook (11) Clauses à rajouter { 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 { 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] }

Le théorème de Cook (12) Clauses à rajouter { 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 (13) Conclusions fL Longueur[fL] = O(p(n)4) Problème de NP SAT fL Longueur[fL] = O(p(n)4) Machine de Turing M / langage L L[SAT,e]

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 ?

Bibliographie Garey & Johnson « Computers and Intractability - A guide to the Theory of NP-completeness » Jean-François Rey « Calculabilité, Complexité et approximation » Stephen Cook « The P vs NP problem » Le zoo de la complexité - http://www.complexityzoo.com Clay mathematic Institute - http://www.claymath.org

P = NP WANTED 1.000.000 $ égal ou distinct ?