Graphes : complexité et NP-complétude

Documents pareils
La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

Cours de Master Recherche

Objectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2)

Organigramme / Algorigramme Dossier élève 1 SI

Introduction à la théorie des graphes. Solutions des exercices

Limites finies en un point

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

Exercices - Polynômes : corrigé. Opérations sur les polynômes

Chapitre 5 : Flot maximal dans un graphe

Continuité et dérivabilité d une fonction

Calculabilité Cours 3 : Problèmes non-calculables.

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Exemples de problèmes et d applications. INF6953 Exemples de problèmes 1

Chapitre 6. Fonction réelle d une variable réelle

Cours Optimisation Partie Optimisation Combinatoire. Année scolaire Gérard Verfaillie ONERA/DCSD/CD, Toulouse

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Nombres premiers. Comment reconnaître un nombre premier? Mais...

Eléments de Théorie des Graphes et Programmation Linéaire

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

Rappels sur les suites - Algorithme

TP N 57. Déploiement et renouvellement d une constellation de satellites

Cours d Informatique

Université Paris-Dauphine DUMI2E 1ère année, Applications

Chapitre 7. Récurrences

Objets Combinatoires élementaires

Informatique Générale

Quelques algorithmes simples dont l analyse n est pas si simple

Comparaison de fonctions Développements limités. Chapitre 10

I. Polynômes de Tchebychev

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Feuille TD n 1 Exercices d algorithmique éléments de correction

Plus courts chemins, programmation dynamique

Programmation linéaire

Optimisation for Cloud Computing and Big Data

TSTI 2D CH X : Exemples de lois à densité 1

Développements limités. Notion de développement limité

CCI Génie Logiciel UFR - IMA. Objectifs du cours d'aujourd'hui. Génie Logiciel Validation par le test. Qu est-ce que tester un programme?

Section «Maturité fédérale» EXAMENS D'ADMISSION Session de février 2014 RÉCAPITULATIFS DES MATIÈRES EXAMINÉES. Formation visée

Géométrie des nombres et cryptanalyse de NTRU

La Licence Mathématiques et Economie-MASS Université de Sciences Sociales de Toulouse 1

MIS 102 Initiation à l Informatique

Développer, factoriser pour résoudre

Communications collectives et ordonnancement en régime permanent pour plates-formes hétérogènes

Exercices Alternatifs. Quelqu un aurait-il vu passer un polynôme?

Exercices Alternatifs. Quelqu un aurait-il vu passer un polynôme?

Corrigé des TD 1 à 5

Probabilités sur un univers fini

Définitions. Numéro à préciser. (Durée : )

I Stabilité, Commandabilité et Observabilité Introduction Un exemple emprunté à la robotique Le plan Problème...

Chp. 4. Minimisation d une fonction d une variable

Condition inf-sup pour l Elément Fini de Taylor-Hood È ¾ -iso-è ½

Ordonnancement. N: nains de jardin. X: peinture extérieure. E: électricité T: toit. M: murs. F: fondations CHAPTER 1

Baccalauréat ES Antilles Guyane 12 septembre 2014 Corrigé

aux différences est appelé équation aux différences d ordre n en forme normale.

Algorithmique et Programmation, IMA

Cryptographie et fonctions à sens unique

6. Les différents types de démonstrations

Le théorème de Perron-Frobenius, les chaines de Markov et un célèbre moteur de recherche

Fondements de l informatique Logique, modèles, et calculs

1 Recherche en table par balayage

LE PROBLEME DU PLUS COURT CHEMIN

Cours des Méthodes de Résolution Exactes Heuristiques et Métaheuristiques

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Sommaire. Couverture de zone de surveillance dans les réseaux de capteurs. De quoi parle-t-on ici (1/2)? Objectif. De quoi parle-t-on ici (2/2)?

Chapitre 2. Eléments pour comprendre un énoncé

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Probabilités sur un univers fini

Algorithmes de recherche

Algorithme. Table des matières

TP1 Méthodes de Monte Carlo et techniques de réduction de variance, application au pricing d options


Quelques tests de primalité

Dérivées d ordres supérieurs. Application à l étude d extrema.

Simulation de variables aléatoires

alg - Classes, instances, objets [oo] Exercices résolus

CRYPTOGRAPHIE. Signature électronique. E. Bresson. SGDN/DCSSI Laboratoire de cryptographie

Le partage de clés cryptographiques : Théorie et Pratique

Algorithmique et programmation : les bases (VBA) Corrigé

Bac Blanc Terminale ES - Février 2011 Épreuve de Mathématiques (durée 3 heures)

Résolution de systèmes linéaires par des méthodes directes

Algorithmes de Transmission et de Recherche de l Information dans les Réseaux de Communication. Philippe Robert INRIA Paris-Rocquencourt

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

Algorithmes récursifs

Continuité d une fonction de plusieurs variables

Contexte. Pour cela, elles doivent être très compliquées, c est-à-dire elles doivent être très différentes des fonctions simples,

Chapitre 3. Quelques fonctions usuelles. 1 Fonctions logarithme et exponentielle. 1.1 La fonction logarithme

Introduction à l étude des Corps Finis

Approche Contract First

SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique

Année 2014/ er septembre Version de Anca Muscholl, issue du poly de Marc Zeitoun. 1/143

Sujet 1 : Diagnostique du Syndrome de l apnée du sommeil par des techniques d analyse discriminante.

Théorie des Graphes Cours 3: Forêts et Arbres II / Modélisation

Comment démontrer des formules sans effort? exposé de maîtrise

LE CONTRAT DE COPRODUCTION

Resolution limit in community detection

Gestion du parc informatique matériel et logiciel de l Ensicaen. Rapport de projet. Spécialité Informatique 2 e année. SAKHI Taoufik SIFAOUI Mohammed

Machines virtuelles Cours 1 : Introduction

Qualité du logiciel: Méthodes de test

Trouver un vecteur le plus court dans un réseau euclidien

Transcription:

Master I - Le Havre

Plan

Complexité en temps La fonction de complexité d un algorithme fait correspondre pour une taille donnée le nombre maximum d instructions qui lui est nécessaire pour résoudre une instance quelconque de cette taille. La notation qui est généralement utilisée pour indiquer la complexité d un algorithme est la notation en O() (notation en grand O ).

Notation en O() Plan On dira d une fonction f (n) qu elle est en O(g(n)) s il existe une constante c > 0 telle que f (n) c g(n) pour toutes les valeurs de n 0. Par extension et abus de langage, on dira généralement d un algorithme qu il est en O(n 2 ) ou en O( n log n ). on parlera plus simplement de la complexité d un algorithme plutôt que de la fonction de complexité en temps d un algorithme.

Algorithmes polynomiaux exponentiels On distingue deux types principaux d algorithmes, les algorithmes polynomiaux (polynomial time algorithms) et ceux qui ne le sont pas : les algorithmes exponentiels (exponential time algorithms).

Algorithmes polynomiaux Les algorithmes polynomiaux sont tels que leur fonction de complexité est en O(P(n)) où P(n) est un polynôme fonction de n et dont le degré est constant et indépendant de n, la taille des instances. Lorsqu il est possible de concevoir un algorithme polynomial pour résoudre un problème donné, on dira de ce dernier qu il peut être résolu de manière efficace.

Algorithmes polynomiaux les schémas d encodage sont considérés comme équivalents. quel que soit le schéma d encodage choisi, et à la condition que celui-ci soit raisonnable (taille de l alphabet des symboles supérieure à un) alors : Tout algorithme permettant de résoudre en un temps polynomial toutes les instances d un problème donné, restera de complexité polynomiale quel que soit le schéma d encodage choisi.

: principe de calcul Déterminer la complexité algorithmique c est "compter" le nombre d instructions qui seront exécutées ; Pour une instruction élémentaire le coût est considéré unitaire. Deux expressions sont supposées équivalentes du point de vue du coût car proportionnelles. Exemples : a 1 T [a] N[b]/W [z] sin(x) (((a = 6)OU(n B))ET (a = faux))

: principe de calcul Pour une instruction conditionnelle, en l absence d informations complémentaires, on choisit le nombre maximum d instructions auquel s ajoute l évaluation de l expression booléenne. Exemples : Si condition Alors instruction 1 Sinon instruction 2 instruction 3 instruction 4 instruction 5 instruction 6 instruction 7 FinSi Pour ce cas de figure, on choisit de compter 7 instructions (l évaluation de la condition et les instructions de 2 à 7).

: principe de calcul Pour une instruction itérative, en l absence d informations complémentaires, on multiplie le nombre d instructions internes à la boucle au nombre de fois que cette boucle sera exécutée. Exemple : Pour i 1 à n Faire instruction 1 instruction 2 instruction 3 FinPour Pour ce cas de figure, on compte 3 n instructions.

: principe de calcul Pour i 1 à n Faire instruction 1 Si i est pair Alors instruction 2 Sinon instruction 3 instruction 4 instruction 5 FinSi FinPour Pour ce cas de figure, on pourrait compter 4 n instructions, mais d autres informations sont disponibles sur la condition donc la complexité sera de n + 1+3 2 n

: principe de calcul Pour une instruction itérative conditionnelle, il faut évaluer le cas au pire. Exemple : TantQue condition Faire instruction 1 instruction 2 instruction 3 FinTantQue Pour ce cas de figure, il convient d évaluer le nombre de tours de boucle maximum qui pourrait être effectué avant la sortie de la boucle. Cette évaluation peut s avérer parfois difficile à réaliser.

: exercice Un exemple de boucle TantQue : a k TantQue a n Faire a a k FinTantQue Quelle est la complexité de la boucle en fonction de n la taille des données?

: graphe régulier Soit le graphe G = (S, A), on veut vérifier que ce graphe est régulier, c est-à-dire que tous les sommets ont le même degré. Soit S l ensemble des sommets régulier vrai s retirer_sommet(s) /* s un sommet quelconque du graphe */ d degré(s) TantQue S ET régulier Faire s retirer_sommet(s) Si degré(s) d Alors régulier faux FinSi FinTantQue Si régulier Alors Le graphe est régulier Sinon Le graphe n est pas régulier FinSi

: graphe régulier 3 instructions + complexité de la boucle TantQue + condition + instruction conditionnelle 3 + C(boucle) + 1 + 1 = 5 + C(boucle). Analyse de la boucle : TantQue S ET régulier Faire s retirer_sommet(s) Si degré(s) d Alors régulier faux FinSi FinTantQue

: graphe régulier Chaque sommet n est examiné qu une seule fois, donc la boucle sera parcourue, dans le pire des cas que n 1 fois (un premier sommet a été retiré de l ensemble S au départ). Donc, la condition S ET régulier est évaluée n fois n évaluations de conditions. Dans le pire des cas (en termes de complexité), le graphe est régulier pour les n 2 premiers sommets examinés et le dernier sommet présente un degré différent. 2 (n 2) pour le retrait des sommets de S et pour l évaluation de la condition degré(s) d. Enfin, pour le dernier sommet, il faut rajouter une instruction 3. au final C(algo) = 5 + n + 2(n 2) + 3 = 4 + 3n =O(n)

: connexité Intitulé du problème de décision : Détermination de la connexité d un graphe. Description des paramètres : un graphe G = (S, A), ( S = n, A = m). Question : étant donné un sommet s S, alors, s S, s s, existe-t-il un chemin de s à s?

Connexité : principe de l algorithme sommet non atteint sommet atteint et non traité sommet traité étape 1 étape 2 étape 3 étape 4 étape 5

Connexité : principe de l algorithme sommet non atteint sommet atteint et non traité sommet traité étape 6 étape 7 étape 8 étape 9 Non connexe

Connexité : algorithme Soit L ensemble des sommets déjà atteints mais non traités (non visités) Soit V ensemble des sommets visités L {s} /* s un sommet quelconque du graphe */ V TantQue L Faire s tirage arbitraire d un élément de L V V S {s} N voisins(s) Pour chaque élément e de N Faire Si e / V ET e / L Alors L L S {e} FinSi FinPour FinTantQue Si V = S Alors Le graphe est connexe Sinon Le graphe n est pas connexe FinSi

Connexité : analyse de la complexité En dehors de structures itératives : 3 instructions + évaluation d une condition. C(algo) = 4 + C(TantQue) TantQue L Faire s tirage arbitraire d un élément de L V V S {s} N voisins(s) Pour chaque élément e de N Faire Si e / V ET e / L Alors L L S {e} FinSi FinPour FinTantQue

Connexité : analyse de la complexité Difficulté du comptage du nombre d instructions. Une boucle TantQue se termine lorsque la condition n est plus vérifiée. La condition d arrêt est L, or à chaque tour de boucle, cette liste est modifiée à deux endroits : s tirage aléatoire d un élément de L. Un élément est systématiquement retiré de la liste L et ajouté à une autre liste (V ). L L {e} : on ajoute un élément à L! Mais cet élément est ajouté seulement s il n est pas déjà présent dans V. chaque sommet passe dans L une et une seule fois.

Connexité : analyse de la complexité Ainsi, dans le pire des cas, la boucle TantQue sera parcourue n fois. A chaque tour de boucle TantQue, 3 instructions seront exécutées 3 n. Quid de la bouche Pour? Si le graphe était k-régulier, le nombre total de tour de boucle Pour serait de n k. Si le degré maximum est borné par une valeur indépendante de n complexité C(algo) = 4 + 3n + kn = 3 + (3 + k)n = O(n)

Connexité : analyse de la complexité Mais dans le cas général, le graphe n est pas régulier. Donc, il faut identifier ce que représente le n k. Cette valeur représente la somme du nombre de voisins de tous les sommets la somme des degrés des sommets le double du nombre d arêtes : 2 m Ainsi, la complexité algorithmique de cet algorithme est de : C(algo) = 4 + 3n + 2m = 4 + n + 2(n + m) = O(n + m)

: énumeration de mots Soit un ensemble de symboles S de cardinalité k, on souhaite énumérer l ensemble des mots de longueur L formés à partir des symboles de S.

: énumération de mots programme principal T tableau de longueur L qui contient le mot courant S liste de k symboles position 1 EnumerationDesMots(position) fonction EnumerationDesMots(position) Si position L Alors symbole S.premierSymbole() TantQue il reste des symboles non considérés pour cette position Faire T [position] symbole EnumerationDesMots(position+1) /* appel récursif */ symbole S.suivant() FinTantQue Sinon afficher le tableau FinSi

: énumeration de mots Exercice Montrez que la complexité de l algorithme est en O(k L )

: énumération de mots Motivation Pourquoi s intéresser à l énumération de mots? parce que le principe de l énumération est à la base d algorithmes de résolution de nombreux problèmes de théorie des graphes : coloration couverture minimale etc.

Ouverture vers le monde de la NP-complétude La distinction entre algorithmes polynomiaux et algorithmes exponentiels est essentiel à la notion de NP-complétude. En effet, la manière dont les problèmes sont classés est directement liée à la possibilité de les résoudre à l aide d algorithmes de complexité polynomiale ou exponentielle. On distinguera ainsi les problèmes pour lesquels il existe des algorithmes efficaces permettant de les résoudre et des problèmes pour lesquels il est peu probable que de tels algorithmes existent.

Déterminisme Définitions conception philosophique selon laquelle il existe des rapports de cause à effet entre les phénomènes physiques [Larousse 2006]. On appelle algorithme déterministe un algorithme dont les résultas qu il produit peuvent être déduits des spécifications de l algorithme lui-même. Deux exécutions d un algorithme déterministe sur des entrées identiques donneront les mêmes sorties.

Classe P Plan Définition La classe P regroupe tous les problèmes qui peuvent être résolus par un algorithme déterministe de complexité polynomiale Π P? construire un algorithme déterministe qui résolve Π en temps polynomial

Classe P : exemples problème du plus court chemin (Dijkstra) problème de la détermination de l arbre de recouvrement de poids minimum (Prim, Kruskal) certains problèmes de flots (Ford-Fulkerson)

Intuition de NP Vertex Cover Intitulé du problème : Vertex Cover (VC). Description des paramètres : un graphe G = (S, A), un entier positif K S Question : Soit S un sous-ensemble des sommets de S de telle sorte que toute arête de A ait au moins l un de ses deux sommets incidents qui appartienne à S. Existe-t-il un tel sous-ensemble dont la cardinalité est inférieure ou égale à K?

Intuition de NP supposons qu un oracle réponde oui à cette question et nous fournisse en supplément le sous-ensemble S, le temps nécessaire pour vérifier que S répond effectivement à la question est polynomial en fonction de la taille de l instance, il est donc possible de construire un algorithme déterministe de complexité polynomiale qui puisse vérifier la validité de la solution proposée.

Intuition de NP Algorithme non déterministe l algorithme composé de l oracle et de la méthode déterministe de vérification constitue un algorithme non déterministe.

Classe NP Plan Définition La classe NP regroupe tous les problèmes qui peuvent être résolus par un algorithme non-déterministe de complexité polynomiale

Conséquence P NP

Classe NP : exemples problème du voyageur de commerce vertex cover le problème de la clique le problème du plus court chemin (Dijkstra) principale référence : l ouvrage de Garey et Johnson [?]

P NP Plan Vue du NP-monde NP Conjecture P NP P

Symétrie des problèmes soit Π un problème de décision : soit I, Q est-elle vraie pour I? et son problème complémentaire : soit I, Q est-elle fausse pour I? si Π P alors Π P par contre, si Π NP et Π / P alors on ne peut rien dire de Π

Difficulté des problèmes Les problèmes appartenant à NP sont de deux catégories : les problèmes appartenant à la classe P sont "faciles", tandis que les problèmes dits NP-complets sont les plus difficiles que l on puisse trouver dans NP.

3-SAT Plan Enoncé Intitulé du problème : 3-Satisfaisabilité (3-SAT). Description des paramètres : une collection C = {c 1, c 2,..., c n } de clauses, sur un ensemble fini U de variables booléennes (littéraux), telles que c i = 3, i 1 i n. Question : existe-t-il une configuration des variables de U telle que toutes les clauses de C soient vraies?

3-SAT Plan Instance U = {u 1, u 2, u 3, u 4 } C = {{u 1 ū 2 ū 4 }, {ū 1 u 3 u 4 }, {ū 1 ū 2 u 3 }} la réponse est "oui" (u 1 = u 2 = u 3 = u 4 vrai)

Difficulté de 3-SAT chaque variable a deux choix possibles VVVV VVVF VVFV VVFF VFVV VFVF VFFV VFFF FVVV FVVF FVFV FVFF FFVV FFVF FFFV FFFF n littéraux : 2 n possibilités.

Théorème de Cook (1971) ce problème a été prouvé NP-complet par Cook c est le premier problème qui a été prouvé NP-Complet preuve longue et fastidieuse : machine de Turing indéterministe aujourd hui autre méthode : la transformation polynomiale d un problème en un autre problème connu pour être NP-complet.

Preuve de NP-complétude Principe en 4 étapes : 1 montrer que le problème π NP, c est-à-dire qu un algorithme non déterministe proposant une solution peut-être vérifiée en temps polynomial, 2 choisir un problème π NP connu pour être NP-Complet 3 construire une transformation f de π en π, c est-à-dire proposer un codage des entrées et des sorties de telle sorte qu une solution à toute instance de π constitue une réponse à π et réciproquement 4 montrer que f est une transformation polynomiale

NP-complet NP-difficile pour les problèmes de décision, nous parlerons de problèmes NP-complets pour les problèmes de recherche, nous parlerons de problèmes NP-difficiles.

Méthodologie générale de résolution d un problème 1 Modélisation du problème. 2 Analyse de la difficulté du problème. 3 Choix d une méthode de résolution. 4 Implémentation.