P. 1
cours_complexite

cours_complexite

|Views: 390|Likes:
Publié parFares Mezrag

More info:

Published by: Fares Mezrag on Aug 12, 2011
Droits d'auteur :Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

12/10/2012

pdf

text

original

Sections

  • Complexité et algorithmique
  • Informatique ?
  • Algorithmique ?
  • Algorithme d'Euclide
  • Algorithmes de tri
  • Colorer un graphe
  • Problèmes
  • Problèmes de décision
  • Fonctionnement des ordinateurs
  • Nombres entiers
  • Codage des nombres flottants
  • Ordinateur vs Calculatrice
  • Modèles de calcul
  • Exercice 1
  • Solution de l'exercice 1
  • Exercice 2
  • Solution de l'exercice 2
  • Exercice 3
  • Solution de l'exercice 3
  • Exemple de programme
  • RAM / Machine de Turing
  • Problèmes et algorithmes
  • Décidabilité
  • Problème de l'arrêt
  • Semi-décidabilité
  • Introduction à la complexité
  • Rappel : Notation Landau
  • Exercice 4
  • Exercice 5
  • Calcul du PGCD
  • 2SAT
  • Algorithme naïf
  • Composantes fortement connexes en temps linéaire
  • Devoir 1
  • Tri par sélection et tri à bulles
  • Tri par dénombrement
  • Tri par base
  • Devoir 2
  • Classe NP Exemples
  • Réduction
  • Les classes P et NP sont fermées par réduction polynomiale
  • NP-complétude
  • Théorème de Cook-Levin (1971)
  • Théorème de Cook-Levin
  • Réduction et NP-complétude
  • 3SAT est NP-complet
  • Algorithmes d'approximation
  • Facteur 2 pour Vertex Cover

Complexité et algorithmique

Modèle de calcul, algorithmes, décidabilité Classe P « Méthodes de résolution » :

Diviser pour régner Algorithmes de Tri Algorithmes gloutons Programmation dynamique

Classe NP (Définition, NP-complétude et réductions) « Méthodes de résolution » :

Algorithmes d'approximation Heuristiques

Introduction

B. Estellon - Complexite - Master MINT - U2

Informatique ?

L'informatique désigne l'automatisation du traitement de l'information par un système. Questions :
● ● ● ● ●

Qu'est-ce que le calcul ? Que peut-on calculer ? Comment calculer efficacement ? Comment décrire un algorithme de calcul ? Comment représenter un certain objet pour pouvoir le traiter ?
B. Estellon - Complexite - Master MINT - U2

B. L'implémentation d'un algorithme consiste à automatiser son utilisation à l'aide d'une machine. Estellon .Complexite . ● Un algorithme est un énoncé dans un langage bien défini d'une suite d'opérations.Algorithmique ? ● Un algorithme est une représentation de la résolution par calcul d'un problème pour : ● ● l'exposer à une autre personne.Master MINT .U2 ● . le résoudre avec un ordinateur.

return PGCD(a.Algorithme d'Euclide ● Permet de calculer le PGCD de deux entiers. int b) { r := a % b. a et b deux entiers non nuls et a > b int PGCD(int a. Estellon . a:=b. b:=r. if (r==0) return b.Master MINT .U2 . } Calculer r = a mod b a devient b b devient r Non r=0? Oui Résultat = b B.b).Complexite .

B. Estellon . j++) if ( t[j] < t[min] ) min=j..Algorithmes de tri ● Ordonner des nombres entiers. tri par tas.} } } } ● Nous verrons d'autres algorithmes plus efficaces : tri rapide. min.Master MINT . t[min] = x. i++) { min = i . t[i] = t[min]. tri fusion.U2 .. if (min != i) { x = t[i].1 . for (i = 0. j < MAX . void selection(int t[MAX]) { int i. for ( j = i+1 . i<MAX . x. j.Complexite .

Colorer un graphe ● Colorer les sommets d'un graphe avec k couleurs de sorte qu'aucun sommet du graphe n'ait la même couleur que ses voisins. ● Algorithme : tester les kn colorations ! Méthode efficace ? Envisageable en pratique ? B.Master MINT . Estellon .U2 .Complexite .

on associe le tableau d'entiers triés.Complexite . Problème du calcul du PGCD : ● ● A chaque couple {a. B. on associe le PGCD de a et b.Master MINT .b}.U2 ● Problème du tri : ● ● Problème de coloration de graphe : ● . A chaque tableau d'entiers non triés.Problèmes ● Un problème est une relation binaire sur un ensemble d'instances et un ensemble de solutions. on associe la réponse « oui » si le graphe G peut être coloré avec k couleur et « non » sinon. Estellon . A chaque graphe G et chaque entier k.

Master MINT .Problèmes de décision ● Un problème de décision est un problème où chaque instance a pour solution soit « oui » soit « non ». B.U2 .Complexite . Estellon . on associe la réponse « oui » si le graphe G peut être coloré avec k couleur et « non » sinon. Problème de coloration de graphe : ● ● A chaque graphe G et chaque entier k.

Fonctionnement des ordinateurs B.U2 .Master MINT . Estellon .Complexite .

B. on regroupe souvent les bits par 8 : ● 8 bits forment un octet.Complexite . 0 1 0 1 1 0 1 0 ● En informatique. on code l'information avec des 0 et des 1. Estellon . Une mémoire peut être vue comme une longue ligne de 0 et de 1. 0 1 1 0 1 1 0 0 1 0 0 1 1 0 0 1 ● ● Une unité de mémoire (une « case » du tableau) est appelé bit.Codage de l'information ● Pour des raisons physiques.U2 .Master MINT .

Des programmes informatiques... rationnels.Master MINT . Des caractères. Estellon . Des adresses mémoires. Des images..Complexite . on peut représenter : – – – – – – Des nombres entiers.. Du son.U2 . B. du texte.Codage de l'information ● Avec des 0 et des 1.

ou de -2n/2 à 2n/2-1 Sur 8 bits. on peut coder 2n valeurs différentes : .de 0 à 255 si tous positifs .ou de -128 à 127 B. on peut coder 256 valeurs différentes : .Complexite . Estellon .U2 .Master MINT .Nombres entiers ● On utilise la base 2 (au lieu de la base décimale) 27 26 25 24 23 22 21 20 1 0 1 1 0 0 1 0 = 1 x 27 + 0 x 26 + 1 x 25 + 1 x 24 + 0 x 23 + 0 x 22 + 1 x 21 + 0 x 20 = 178 (en base 10) 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 =0 1 =1 0 =2 1 =3 0 =4 1 =5 0 =6 1 =7 Sur n bits.de 0 à 2n-1 si tous positifs .

U2 .1023 B.Master MINT . Un nombre à virgule flottante possède : ● ● ● ● Un signe s Une mantisse m Un exposant e (-1) x m x 2 s e-x ● Norme IEEE 754 : Encodage Simple précision Double précision 32 bits 64 bits Signe 1 bits 1 bits Exposant 8 bits 11 bits Mantisse 23 bits 52 bits Valeur du nombre s x m x 2e .Codage des nombres flottants ● Nombres à virgule flottante = approximation des réels.127 s x m x 2e . Estellon .Complexite .

U2 .Master MINT .Codage des images ● ● ● Une image est composée de pixels chaque pixel a une couleur Couleur = une quantité de rouge. Estellon . de bleu. de vert Une quantité = un nombre (codé en binaire) 0 0 0 0 0 1 1 0 1 0 1 1 0 1 0 ● 0 14 14 Un pixel B.Complexite .

Master MINT .U2 . Estellon . si on code chaque pixel sur 2 octets.Codage des images Le code d'une image est la succession des codes des pixels de l'image 0 3 6 1 4 7 2 5 8 0 1 2 3 4 5 6 7 8 + longueur d'une ligne ● Avec ce codage.Complexite . une image de 300x300 pixels prend 180000 octets B.

U2 . ● Ordinateur : ● ● ● B. une opération La calculatrice effectue l'opération sur les données En sortie : le résultat de l'opération En entrée : des données.Ordinateur vs Calculatrice ● Calculatrice : ● ● ● En entrée : des données.Master MINT . Estellon . un programme L'ordinateur exécute le programme sur les données En sortie : les données transformées par le prog.Complexite .

un programme peut être décrit par une suite de bits Les programmes sont des données exécutables par un ordinateur B.Programme ● ● Un programme est une suite d'instructions Chaque processeur a un jeu d'instructions qui représente l'ensemble des opérations élémentaires qu'il peut réaliser Un code (binaire) compréhensible par le processeur est associé à chaque instruction De cette manière. Estellon .U2 ● ● ● .Complexite .Master MINT .

U2 .Master MINT .Complexite .Programme ● Exemple de programme : ● ● ● ● ● Entrée : valeur de la cellule 50 0 : Mettre la valeur 0 dans la cellule numéro 40 1 : Diviser par 2 la valeur de la cellule numéro 50 2 : Ajouter 1 à la valeur de la cellule numéro 40 3 : Si la valeur de la cellule numéro 50 est > 0 Retourner l'instruction numéro 1 Sortie : valeur de la cellule 40 0 0 40 40 DIV 125 2 2 50 50 ADD 140 1 1 40 40 JGZ 145 50 50 1 1 ● MOV 120 B. Estellon .

U2 .Complexite .Master MINT . Estellon .Programme MOV 120 0 0 40 40 DIV 125 2 2 50 50 ADD 140 1 1 40 40 JGZ 145 50 50 1 1 ● L'ordinateur répète indéfiniment : ● ● ● ● ● Charger la prochaine instruction à exécuter Charger les données nécessaires en mémoire Effectuer l'opération Ranger le résultat du calcul Se déplacer sur la prochaine instruction à exécuter B.

Modèles de calcul B.Complexite .Master MINT .U2 . Estellon .

Master MINT . B.Complexite .Machine de Turing ● ● Définit par Alan Turing (1936) Modélise le fonctionnement des appareils mécaniques de calcul. Estellon .U2 . Donne une définition précise au concept d'algorithme : ● ● Thèse de Church-Turing : « tout traitement réalisable mécaniquement pour être accompli par une machine de Turing » ● Fournit un modèle théorique pour étudier la complexité des problèmes.

Master MINT . Chaque case contient un symbole parmi un alphabet fini. Une tête de lecture/écriture qui peut lire et écrire des symboles sur le ruban et se déplacer vers la gauche ou vers la droite.Machine de Turing ● Elle est constituée de : ● Un ruban infini à droite et à gauche.Complexite .U2 ● ● ● . Une table d'actions. B. Estellon . Un registre d'état qui mémorise l'état courant de la machine. Le nombre d'états est fini et il existe un état de départ.

U2 . sinon elle s'arrête.Complexite . ● ● B. la machine l'applique.Machine de Turing ● La table d'action associe une action à chaque couple (état. Une action indique à la machine quel caractère écrire sur le ruban et comment déplacer la tête de lecture/écrire. caractère lu).Master MINT . Tant qu'il existe une action à appliquer. Estellon .

écrit Direction État 0 0 1 0 1 0 1 0 0 D G D 1 1 0 0 0/0/D 1 1/0/G .Complexite ...U2 .. 0/1/D État Car...Machine de Turing . Estellon .. 0 1 1 0 1 1 1 0 1 0 1 1 1 . lu Car.. B.Master MINT .. 0 1 1 0 1 1 0 0 1 0 1 1 1 .

Estellon . B.Master MINT .Exercice 1 ● Écrire une machine de Turing qui effectue le complément d'un nombre binaire.U2 . – Exemple : #01101001# Exemple : #10010110# ● Sortie : le complément binaire du nombre : – On supposera que le nombre contient au moins un digit.Complexite . à la fin. sur le # qui précède le résultat. ● Entrée : un nombre écrit en binaire (entouré de #). la tête de lecture est positionnée sur le premier # et doit se trouver. Au début.

Complexite .Solution de l'exercice 1 0/1/d 0/0/g #/#/d 0 1 #/#/g 2 1/0/d ● 1/1/g Quel est le nombre d'actions effectuées par la machine de Turing en fonction de la longueur d'écriture du nombre ? de la valeur du nombre ? B.Master MINT . Estellon .U2 .

Estellon . – Exemple : #11101101# = 183 Exemple : #00011101# = 184 ● Sortie : le nombre plus 1. à la fin.Complexite . Au début. la tête de lecture est positionnée sur le premier # et doit se trouver. B.Master MINT . ● Entrée : un nombre écrit en binaire. sur le # qui précède le résultat. – On supposera que le nombre contient au moins un digit.Exercice 2 ● Écrire une machine de Turing qui ajoute 1 à un nombre binaire écrit avec les bits de poids faibles à gauche.U2 .

Estellon .U2 .Solution de l'exercice 2 1/0/d #/1/g 0 #/#/d 1 0/1/g 2 0/0/g 1/1/g ● Quel est le nombre d'actions effectuées par la machine de Turing en fonction de la longueur d'écriture du nombre ? de la valeur du nombre ? B.Complexite .Master MINT .

– Mêmes consignes que dans les exercices précédents. Exemple : #110# ● Sortie : le nombre de 1.U2 . On supposera que la partie non visible du ruban est initialisée avec des #. B.Exercice 3 ● Écrire une machine de Turing qui compte le nombre de 1 dans un chiffre binaire : ● Entrée : un nombre écrit en binaire. Estellon .Complexite . – Exemple : #11101101#.Master MINT .

Complexite .U2 .Master MINT .Solution de l'exercice 3 #/#/d 0/#/d 0/0/d 1/0/d #/1/g 0 #/#/d 1 1/#/d 2 #/#/d 3 0/1/g 2 #/#/g 2 0/0/g 0/0/g 1/1/d ● 1/1/g 1/1/g Quel est le nombre d'actions effectuées par la machine de Turing en fonction de la longueur d'écriture du nombre ? de la valeur du nombre ? B. Estellon .

Les entrées et les sorties sont faites à travers une bandes d'entrée et une bande de sortie. Estellon . Elles sont constituées d'un programme formé d'une suite d'instructions et d'une suite infinie de registres.Master MINT . Les données manipulées par ces machines sont des entiers qui peuvent être arbitrairement grands.U2 ● .Complexite . – L'accumulateur. ● ● Registres spéciaux : – ● Compteur ordinal (prochaine instruction).Modèle RAM ● Les RAM sont des machines abstraites qui « ressemblent » aux ordinateurs actuels. B.

Complexite . – ● ● Addition des registres. Instructions d'entrées/sorties : – – Lire et écrire sur les bandes. multiplication.Modèle RAM ● Les instructions se divisent en 4 catégories : ● Manipulations de registres : Adresse direct.U2 . Ruptures de séquences : – ● Sauts conditionnels et inconditionnels. Opérations arithmétiques. etc. stop. Estellon .Master MINT . etc. B. indirect des registres.

Complexite . B.Master MINT . Estellon .U2 .Modèle RAM ● Exécution d'un programme : ● ● On commence à l'instruction 0 Tant que l'instruction STOP n'est pas rencontrée : – – On exécute l'instruction courante On passe à l'instruction suivante ● Le temps d'exécution du programme dépend du nombre d'instructions exécutées.

} } return s.U2 . else { n=n-1.Que fait l'algorithme précédent ? . } Questions : . Estellon .Quel est son temps d'exécution en fonction de la longueur d'écriture de n ? en fonction de n ? B. while (n>0) { if (n%2==0) n=n/2.Complexite .Master MINT .Exemple de programme 0 : R1 = lire 1 : R2 = 0 2 : gotoif(R1<=0) 10 3 : R3 = R1%2 4 : gotoif(R3!=0) 7 5 : R1=R1/2 6 : goto 9 7 : R1 = R1-1 8 : R2 = R2+1 9 : goto 2 10 : ecrire R2 11 : stop public static int truc(int n) { int s = 0. s++.

Attention : Le nombre d'actions réalisées par la machine de Turing et le nombre d'instructions exécutées par la RAM ne sont pas forcement identiques. Il est possible de simuler toute RAM avec une machine de Turing !!! Exercice : écrire une machine de Turing qui ajoute deux nombres représentés en binaire. B.Master MINT . Estellon .U2 ● ● ● .RAM / Machine de Turing ● Équivalence entre RAM et Machine de Turing : ● Il est facile d'écrire un programme RAM qui simule une machine de Turing.Complexite .

Problèmes et algorithmes ● Un problème est une relation binaire sur un ensemble d'instances et un ensemble de solutions. Estellon . Les instances et les solutions sont des informations qui doivent être codées pour être traitées automatiquement par un algorithme.Complexite . Un algorithme résout un problème s'il donne la solution de chaque instance du problème en un temps fini.Master MINT .U2 . ● ● Instance Algorithme Solution B.

Décidabilité B.Master MINT .Complexite .U2 . Estellon .

Un problème de décision est décidable s'il existe un algo qui pour toute instance I : ● ● Se termine en un nombre fini d'étapes. Estellon . ● ● ● Question : peut-on décider tous les problèmes de décision ? B. Répond « non » si la solution de I est « non ».Complexite . Répond « oui » si la solution de I est « oui ».Master MINT .U2 .Décidabilité ● Un problème de décision est un problème où chaque instance a pour solution soit « oui » soit « non ».

B. Donc.Master MINT .U2 ● ● Problème de l'arrêt : ● ● .Problème de l'arrêt ● Remarque : ● La table d'actions d'une machine de Turing (ou un programme informatique) est représentable par une suite de 0 et de 1. Solution : « oui » si A s'arrête après un nombre fini d'étapes lorsqu'on l'exécute sur l'instance I.Complexite . Estellon . « non » sinon. un algorithme peut être donné en entrée d'un autre algorithme. Instance : un algorithme A et une instance I.

Semi-décidabilité

Un problème de décision est semi-décidable s'il existe un algo qui, pour toute instance I dont la solution est « oui », se termine en un nombre fini d'étapes en répondant « oui ». Remarque : le problème de l'arrêt est semidécidable car il suffit de simuler l'exécution de l'algorithme A sur l'instance I et de répondre « oui » dès qu'il s'arrête.
B. Estellon - Complexite - Master MINT - U2

Le problème de l'arrêt est indécidable

Démonstration par l'absurde : Supposons qu'un algorithme H(A,i) existe pour décider le problème de l'arrêt. Par définition, H(A,i) est un algorithme prend en entrée un algorithme A et une instance i et retourne en un nombre fini d'étapes :
– –

« oui » si l'algorithme A s'arrête lorsqu'on l'exécute sur l'instance i. « non » si l'algorithme A ne s'arrête pas.

B. Estellon - Complexite - Master MINT - U2

Le problème de l'arrêt est indécidable

Nous définissons maintenant l'algorithme T(A) qui prend en entrée un algorithme A :
T(A) : 1. exécuter H(A,A) 2. si H(A,A) retourne « oui » alors {...} tant que (vrai)

Cas 1 : T(T) s'arrête

H(T, T) retourne « oui » et T(T) boucle => Contrad. H(T,T) retourne « non » et T(T) s'arrête => Contrad.
B. Estellon - Complexite - Master MINT - U2

Cas 2 : T(T) boucle indéfiniment

Conclusion : H n'existe pas

Introduction à la complexité B.Master MINT .U2 . Estellon .Complexite .

nous allons considérer uniquement les problèmes pour lesquels il existe un algorithme.U2 . à l'espace mémoire utilisé par les algorithmes. Dans ce cours.Master MINT . nous allons nous intéresser : ● ● ● ● au temps d'exécution des algorithmes. La complexité algorithmique s'intéresse aux ressources nécessaires pour mettre en œuvre un algorithme.Complexite . B.Introduction ● Par la suite. Estellon .

U2 . A est ● une fonction f : N->N où f(n) est le nombre maximum d'étapes de calcul de A sur toutes les entrées de taille n. Estellon .Master MINT . La complexité en temps d'un algo. ● ● On dit que A s'exécute en temps f(n). B.Complexite .Complexité en temps ● ● Soit A un algorithme qui résout un problème P. Idem pour la complexité en espace.

g : N->R+. Estellon .Master MINT .Rappel : Notation Landau ● Soit deux fonctions f.Complexite . on dit que ● f(x) = O(g(x)) (quand x tend vers +∞) s'il existe deux nombres réels c et x0 tels que pour tout x ≥ x0. : 3x4+2x3+x+4 = O(x4) B.U2 . il suffit de garder le terme de plus grand ordre et supprimer son coeff. f(x) ≤ c∙g(x) ● Pour les polynômes.

l'algorithme retourne une solution admissible après O(T(n)) étapes. DRAM(T(n)) pour le modèle RAM. Estellon .Complexité en temps ● Un algorithme A résout un problème P en temps O(T(n)) si.Master MINT .Complexite . B.U2 . L'ensemble des problèmes de décision pour lesquels il existe un algorithme qui s'exécute en temps O(T(n)) est noté : ● ● ● DTIME(T(n)) pour les machines de Turing. pour tout n et pour toute instance de taille n.

U2 .Complexité en temps Notation O(1) O(log(n)) O(n) O(nlog(n)) O(n2) O(n3) O(np) O(2n) O(n!) Type de complexité constante logarithmique linéaire quasi-linéaire quadratique cubique polynomiale exponentielle factorielle Pour n = 100 avec 10^8 ops/sec Temps constant 10-7 secondes 10-6 secondes 10-5 secondes 10-4 secondes 10-2 secondes 11 jours si p = 7 1014 années 10142 années B. Estellon .Complexite .Master MINT .

Estellon . while (n>=0) { if (n%2==0) n=n/2. else { n=n-1.Complexite .Master MINT . } ● Exprimer le temps d'exécution du programme précédent en fonction de la longueur d'écriture de n puis en fonction de n.Exercice 1 public static int truc(int n) { int s = 0. } } return s. B. s++.U2 .

y a x b Résultat B.U2 . Estellon . y et z.Complexite .Exercice 2 ● Écrire une fonction Java qui calcule le produit de deux matrices. int b[][]) ● Exprimer le temps d'exécution de votre programme en z fonction de x.Master MINT . int[][] prodMat(int a[][].

Complexite . Estellon .Exercice 3 ● Écrire un algorithme qui prend en entrée un tableau de n entiers compris entre 0 et n-1 et qui vérifie que tous les éléments sont distincts.Master MINT . B. 0 1 2 4 3 5 7 6 8 « oui » 0 1 5 4 3 5 4 6 8 « non » ● Exprimer le temps d'exécution de votre algorithme en fonction de n.U2 .

Complexite . ● B.U2 ..Exercice 4 ● Calculer la somme des n premiers entiers positifs (1+2+3+4+.+n). Estellon .. Exprimer le temps d'exécution de votre programme en fonction de n.Master MINT .

Master MINT . ● B. Donner un algorithme en O(2nbObjets · nbObjets · nbPropriétés).Exercice 5 ● Trouver le plus grand nombre d'objets qui partagent au moins k propriétés.U2 . Estellon . Objets Propriétés ● Donner un algorithme en O(2nbPropriétés · nbObjets · nbPropriétés).Complexite .

Classe P B.Complexite .U2 . Estellon .Master MINT .

La classe P capte les problèmes « faciles » à résoudre. en O(n10) est souvent inefficace en pratique).U2 ● ● . pour lesquels il existe un algorithme « efficace » (même si un algo. Estellon . B. P = Uk≥0DTIME(nk). La classe P contient l'ensemble des problèmes polynomiaux. c'est-à-dire. c'est-à-dire.Complexite .Master MINT .Classe P ● Un problème se résout en temps polynomial (ou est polynomial) s'il existe un algorithme permettant de le résoudre en temps O(nk) pour une certaine constante k.

Estellon .Complexite . polynomial qui appelle un nombre polynomial de fois un algo.Master MINT .U2 . polynomial est polynomial. ● B.Classe P ● La classe P est intéressante car elle est : ● Robuste : La classe P définit en utilisant le modèle RAM est identique à celle définit en utilisant les machines de Turing : Uk≥0DRAM(nk)=Uk≥0DTIME(nk) Stable par composition : un algo.

U2 . pour toutes les instances du problème. Estellon . une solution admissible. Montrer que l'algorithme est polynomial.Master MINT . montrer qu'il retourne.Classe P ● Pour montrer qu'un problème appartient à P : ● ● Proposer un algorithme polynomial. c'est-à-dire.Complexite . ● B. Montrer que l'algorithme est correct.

Complexite . } else if (a > b) { return pgcd((a-b)/2. } B.U2 .Calcul du PGCD ● Montrer que l'algorithme suivant est un algorithme polynomial pour résoudre le problème du PGCD : int pgcd (int a . } else if (a%2==1 && b%2==0) { return pgcd(a. int b) { if (a == 0 || b == 0) { return a + b . b). a) . b/2). b). } else return pgcd ((b-a)/2.Master MINT . b/2). } else if (a%2==0 && b%2==0) { return 2 * pgcd (a/2. } else if (a%2==0 && b%2==1) { return pgcd(a/2. Estellon .

∨ak où les ai sont des littéraux.U2 . « non » sinon. x2. x3.Master MINT .. .. . ● Entrée : – – Un ensemble de variables booléennes x1..Complexite . Un ensemble de clauses a1∨a2∨a3∨. xn. B.. c'est-à-dire.SAT ● Le problème SAT est un problème de décision. ai = xj ou xj ● Sortie : – – « oui » s'il existe une affectation des variables booléennes qui satisfait toutes les clauses. Estellon .

Complexite .SAT ● Exemples : x1∨x2∨x3∨x4 ● x ∨x ∨x 1 2 3 ● x ∨x ∨x 1 2 3 ● x ∨x ∨x 1 2 3 ● x ∨x ∨x 1 2 3 ● x ∨x ∨x 1 2 3 ● x ∨x ∨x 1 2 3 ● x ∨x ∨x 1 2 3 ● x1∨x2∨x3 ● x ∨x ∨x 1 2 3 ● x ∨x ∨x 1 2 3 ● x ∨x ∨x 1 2 3 ● x ∨x ∨x 1 2 3 ● x ∨x ∨x 1 2 3 ● x ∨x ∨x 1 2 3 ● x ∨x ∨x 1 2 3 ● « oui » « non » B.U2 .Master MINT . Estellon .

B. on ajoute une arête de a1 vers a2 et une de a2 vers a1. Pour chaque clause a1∨a2. les deux implications a1⇒a2 et a2⇒a1 doivent être vérifiées.2SAT ● Le problème kSAT est le problème SAT où toutes les clauses sont de tailles k Théorème : Le problème 2SAT est polynomial. Estellon . Pour vérifier une clause a1∨a2.Master MINT . On construit un graphe orienté G de 2n sommets : ● ● ● ● Pour chaque xi.U2 ● .Complexite . on crée un sommet xi et xi.

les sommets xi et xi sont dans deux composantes fortement connexes différentes de G. ● B. l'instance de 2SAT est satisfaisable si et seulement si. Estellon . pour une variable xi. il existe un chemin de xi vers xi et un de xi vers xi. Donc.Complexite .Master MINT . alors l'instance est insatisfaisable. pour tout i.2SAT ● Si dans le graphe.U2 .

e. Fixons xi à 0 lorsque f(xi) f(xi) et xi à 1 sinon. B.U2 ● . i.Complexite .2SAT calcul de l'affectation admissible ● On numérote les CFC (ordre topologique). v CFC(a). Estellon .. CFC(0) CFC(1) CFC(2) CFC(3) ● Soit f la fonction définie par f(v):=a où a est le numéro de la CFC qui contient v.Master MINT .

Master MINT .Complexite .2SAT calcul de l'affectation admissible ● Preuve de l'admissibilité de la solution : ● Raisonnons par l'absurde et supposons qu'il existe une clause x∨y non satisfaite. B. Estellon . ● ● ● ● ● Donc f(x) < f(x) et f(y) < f(y). La clause implique f(x) ≤ f(y) et f(y) ≤ f(x). Conclusion. contradiction. Donc f(x) < f(x). On obtient f(x) < f(x) ≤ f(y) < f(y) ≤ f(x).U2 . toutes les clauses sont satisfaites par l'affectation.

Estellon .2SAT ● Remarque : Le graphe G a une taille polynomial en la taille de l'instance de 2SAT et peut être construit en temps polynomial. ● B.U2 .Master MINT .Complexite . Nous venons de réduire le problème 2SAT à un problème de recherche des composantes fortement connexes d'un graphe.

B.Algorithme naïf ● Il est facile de vérifier (en temps linéaire) que deux sommets x et y se trouvent dans une même composante fortement connexe : ● Il suffit de vérifier qu'il existe un chemin de x vers y et un chemin de y vers x en utilisant deux parcours en profondeur (un à partir de x et un autre à partir de y).Master MINT . Estellon . ● On obtient un algorithme quadratique pour le problème 2SAT.U2 .Complexite .

Estellon .Complexite .Master MINT .Composantes fortement connexes en temps linéaire ● Algorithme de Tarjan (1972) 11 0 0 88 21 61 7 1 4 2 52 B.U2 3 1 8 9 10 8 11 8 .

Master MINT .U2 => les sommets du chemin rouge sont dans les deux composantes. Estellon . => impossible par construction B.Algorithme de Tarjan ● Les composantes fortement connexes (CFC) forment des sous-arbres de l'arbre issu du parcours en profondeur.Complexite . .

Estellon .Complexite . 11 0 0 88 21 61 71 4 2 52 B.Master MINT .Algorithme de Tarjan ● Un sommet v est racine d'une CFC s'il n'existe pas de chemin de v vers un sommet qui se trouve entre lui et la racine.U2 3 1 9 8 8 10 8 11 .

U2 . 11 0 0 88 22 62 72 24 52 3 2 9 8 8 11 10 8 B.Algorithme de Tarjan ● Problème des arrêtes transverses. Estellon .Complexite .Master MINT .

Master MINT . on crée une CFC avec les descendants de v et on supprime ces sommets de l'arbre. Estellon . si v est la racine d'une CFC. z Supposons que u soit traité après w. Comme le sommet w n'a pas été supprimé. u v w B.Algorithme de Tarjan ● A la fin de l'analyse du sous-arbre de racine v.Complexite .U2 . Donc. il doit exister un chemin de w vers un sommet z. on peut détecter le chemin de u à z (qui passe par w) en regardant l'information calculée pour w.

U2 .Complexite . Estellon . B.Master MINT . Implémenter l'algorithme de Tarjan.Devoir 1 ● Réaliser un programme Java qui prend en entrée une instance de 2SAT est qui affiche : ● ● « oui » si elle est satisfaisable. ● ● ● ● Implémenter l'algorithme naïf (quadratique). Analyser sa complexité. « non » sinon. Comparer l'efficacité des deux algorithmes.

Estellon . 2 2 2 2 5 5 5 5 8 8 8 8 10 10 10 10 13 13 13 13 18 18 18 18 20 20 20 20 25 25 25 25 30 30 30 30 32 32 32 32 45 45 45 45 102 102 102 102 B.Master MINT .U2 .Diviser pour régner ● Recherche d'un entier dans un tableau trié.Complexite .

Master MINT .U2 . n n/2 n/2 O(log n) n/4 n/4 n/4 n/4 1 1 1 1 Complexité : O(log n) B. Estellon .Diviser pour régner ● Recherche d'un entier dans un tableau trié.Complexite .

i + 1). j++) { int min = j. } } swap(T.Tri par sélection et tri à bulles static void triParSelection(int T[]) { for (int j = 0.1. permut = true.Master MINT . j. i < T. j < T.length .Complexite . min).length . } } } while (permut). } } static void triBulle(int T[]) { boolean permut. do { permut = false. i < T. Estellon . i++) { if (T[i] > T[i + 1]) { swap(T. i++) { if (T[i] < T[min]) { min = i. } B.length.1. for (int i = 0. for (int i = j + 1.U2 . i.

Estellon ... 5 9 4 8 10 20 22 35 40 48 10 11 12 25 38 42 50 60 Complexité : linéaire B.Master MINT .Tri Fusion ● Fusion de deux listes triées : on compare les deux éléments qui se trouvent au dessus.Complexite .U2 .

Estellon .Master MINT .Complexite .U2 .Tri Fusion O(n) O(log n) O(n) O(n) Complexité : O(n log n) B.

Estellon .Master MINT .U2 .Complexite .Tri par tas Un tas : 8 11 6 6 7 5 2 Un tas dans un tableau : 11 8 6 6 7 5 2 B.

Tri par tas ● Entasser un élément : le faire descendre à une place correcte (en supposant que les éléments situés en dessous forment deux tas).Master MINT .U2 . 2 9 Complexité : O(log n) 2 3 9 6 1 2 3 5 2 B. Estellon .Complexite .

O(n log n) B.Master MINT . O(1) Entasser le premier élément.U2 ● ● Extraire le maximum du tas en O(log n): ● ● ● ● Trier par tas : ● . Estellon .Tri par tas ● Construire le tas à partir d'un tableau (non trié) : ● On entasse chaque élément du premier élément qui possède un fils en remontant jusqu'à la racine. O(1) Diminuer la taille du tas de 1. O(log n) Extraire n fois le maximum. Échanger le dernier élément avec le premier. Complexité : O(n).Complexite .

Complexite .Master MINT .U2 .Tri rapide ● Partition en temps linéaire Pivot = 8 8 8 8 2 2 2 18 5 5 7 7 7 5 5 5 3 3 3 10 10 3 12 12 12 4 4 4 3 3 10 9 9 9 5 18 18 8 2 5 7 5 3 3 4 12 10 9 18 B. Estellon .

Tri rapide ● QuickSort : ● ● ● Choisir un pivot Partitionner autour de ce pivot Trier les deux parties avec la même méthode 8 2 5 7 5 3 3 4 12 10 9 18 Complexité : O(n2) Efficace en pratique B.Master MINT . Estellon .Complexite .U2 .

Remarque : pour produire tous les ordres possibles.Complexite .U2 .Borne inférieure ● Un algorithme de tri (basé sur la comparaisons des éléments) effectue au moins n∙log(n) comparaisons dans le pire des cas. il faut que l'arbre de décision (ou chaque nœud correspond à une comparaison) ait n! feuilles. ● B. Estellon .Master MINT .

Complexite .Master MINT . Estellon .Borne inférieure Ω(log k) = Ω(log n!) = Ω(n log n) K = n! Formule de Stirling : B.U2 .

On initialise à 0 un tableau D de n cases. Quelle est la complexité du tri par dénombrement ? B. 3.Tri par dénombrement ● Pour trier une tableau T d'entiers compris entre 0 et n-1 : 1. 2. On reconstruit le tableau T trié en utilisant D.Master MINT . On parcourt T de façon à obtenir dans la case i du tableau D le nombre d'occurrences de i dans T.U2 .Complexite . Estellon . ● Exercices : ● ● écrire le programme Java qui implémente ce tri.

170 45 75 90 2 24 802 66 170 090 002 802 024 045 075 066 002 802 024 045 066 170 045 090 002 024 045 066 075 090 170 802 2 24 45 66 75 90 170 802 B.Tri par base ● Pour trier un tableau T d'entiers : 1. Estellon . On trie la liste des éléments suivant chaque chiffre en conservant l'ordre des éléments ayant le même chiffre (stabilité). On considère chacun des chiffres des nombres du moins significatif ou plus significatif. 2.Master MINT .U2 Complexité ? .Complexite .

U2 . Le tri fusion. Le tri rapide. Estellon . ● Comparer leur efficacité en pratique.Complexite . Le tri par tas. Le tri par base.Master MINT .Devoir 2 ● Programmer en Java : ● ● ● ● ● Le tri par sélection. B.

Algorithme glouton : tâches ● Considérons un ensemble de tâches : temps Problème : trouver un ensemble de tâches de cardinalité maximale qui ne s'intersectent pas.U2 . B.Complexite . Estellon .Master MINT .

U2 . temps B. Supprimer les tâches qui intersectent T.Master MINT .Algorithme glouton : tâches ● Algorithme glouton : ● ● Trier les tâches dans l'ordre croissant des dates de fin. Estellon . Tant qu'il existe des tâches : – – Ajouter la tâches T qui a la plus petite date de fin.Complexite .

B. Problème : rendre une somme S avec un nombre minimum de pièces. on prend le nombre maximum de pièces possibles.U2 . Pour chaque valeur (dans cette ordre).Master MINT . 2 et 1. 5.Algorithme glouton : pièces de monnaie ● On dispose de pièces en nombre illimité de valeurs 10. Algorithme : ● ● ● ● On trie les tas de pièces par ordre croissant de valeur.Complexite . Estellon .

On a au plus 2 pièces de 2.Complexite . glouton).U2 ● . B. Estellon .Algorithme glouton : pièces de monnaie ● Dans une solution optimale : ● ● ● ● On a au plus 1 pièce de 5. On a au plus 1 pièce de 1.Master MINT . On a au plus 3 pièces qui ne sont pas des pièces de 10 pour un total inférieur ou égal à 9 car 1 x 5 + 1 x 1 + 1 + 2 x 2 = 1 x 10 ● Donc une solution optimale contient un nombre de pièces de 10 maximum (= à l'algo. Il suffit de vérifier que l'algorithme glouton est optimale lorsque S ≤ 9.

● La solution optimale : – B.Algorithme glouton : pièces de monnaie ● L'algorithme glouton est-il optimal si on a des pièces de valeurs 6.Master MINT . 2 pièces de 2. Estellon . pour S = 8 : ● ● L'algorithme glouton : – – 1 pièce de 6. 2 pièces de 4.U2 . 4 et 1 ? Non.Complexite .

n)..U2 ● ● Problème intermédiaire : ● ● ..Pièces de monnaie : programmation dynamique ● Notation : ● Soit {v1.i) le nombre minimum de pièces de valeurs {v1. B. .. v2.. Estellon . vi} nécessaires pour rendre la somme K Nous voulons calculer p(S.Complexite . . vn} l'ensemble des valeurs disponibles triées dans l'ordre croissant.Master MINT . v2.. Soit p(K. v1=1 pour qu'il existe toujours une solution..

.Complexite .. Estellon .i-1) Si K ≥ vi alors p(K.Master MINT .S} Si K < vi alors p(K....i) = min{p(K. p(K-vi..1)=K pour tout K inclus dans {1.U2 .n} p(K.i) = 0 pour tout i inclus dans {1.i)+1} B..i) = p(K..i-1).Pièces de monnaie : programmation dynamique ● Les formules suivantes sont vérifiées : p(0.

Pièces de monnaie : programmation dynamique n p 0 1 2 3 S 4 5 6 7 8 9 1 0 1 2 3 4 5 6 7 8 9 4 0 1 2 3 1 2 3 4 2 3 4 6 0 1 2 3 1 2 1 2 2 3 2 Complexité : O(n x S) Algorithme pseudo-polynomial 10 10 B.Master MINT .U2 .Complexite . Estellon .

U2 .Master MINT .Complexite . Estellon .Pièces de monnaie : programmation dynamique n p 0 1 2 3 S 4 5 6 7 8 9 1 0 1 2 3 4 5 6 7 8 9 4 0 1 2 3 1 2 3 4 2 3 4 6 0 1 2 3 1 2 1 2 2 3 2 Construction d'une solution : en temps O(n + S) 10 10 B.

Estellon .Complexite .U2 .Master MINT .Classe NP B.

Complexite . s'il existe. Un problème de décision appartient à NP si ● ● il existe un algorithme vérifieur (déterministe) A. l'algorithme A permet de vérifier que le certificat est valide ou non en un temps polynomial en la taille de I.Master MINT . La classe P est incluse dans la classe NP. B.U2 ● ● Remarque : ● .Classe NP ● ● NP signifie Polynomial non-déterministe. Estellon . pour chaque instance I dont la réponse est « oui ». un certificat C(I) de taille polynomiale.

Estellon . ● ● Problème SAT : ● Certificat : un assignement admissible. Certificat : une coloration admissible.Classe NP Exemples ● Problème de coloration de graphe : ● A chaque graphe G et chaque entier k.Complexite . B.Master MINT .U2 . la réponse est « oui » si le graphe G peut être coloré avec k couleur et « non » sinon.

lu) est associées une ou plusieurs transitions possibles. car.Master MINT . Estellon . 1/0/g 1/1/g 3 1/0/d B.Complexite .Classe NP ● Pourquoi « Non-déterministe polynomial » ? ● Une machine de Turing non-déterministe est définie par une relation de transition : à chaque couple (état.U2 .

non non oui non non non non non non non non non « oui » B.U2 « non » .Complexite .Master MINT . Estellon .Classe NP ● La réponse est « oui » si et seulement si au moins une branche d'exécution aboutit sur une réponse positive.

non oui non non non non B.Master MINT .Complexite .Classe NP ● Temps d'exécution : nombre de transitions de la plus longueur branche d'exécution. Estellon .U2 .

Les deux définitions sont équivalentes car : ● ● Pour les instances positives. B. l'algorithme vérifieur déterministe peut être transformé en un algorithme non-déterministe qui « teste » tous les certificats possibles.U2 ● .Master MINT . Estellon . Ce chemin peut être codé sous la forme d'une suite de bits de taille polynomiale. Inversement.Classe NP ● Un problème de décision appartient à NP s'il existe une machine de Turing non-déterministe polynomiale qui le résout.Complexite . ce qui forme un certificat. on peut fournir à la machine de Turing non-déterministe le chemin à suivre pour la rendre déterministe.

Master MINT . La classe co-NP contient les problèmes pour lesquels il existe un algorithme polynomial et non-déterministe qui retourne : ● ● ● « non » si au moins une branche retourne « non ».Complexite .Classe co-NP ● Remarque : la définition de NP repose sur une dissymétrie entre le « oui » et le « non ». Estellon . B.U2 . ● La classe co-NP contient les problèmes pour lesquels il existe un certificat pour les instances négatives vérifiables en temps polynomial. « oui » si toutes les branches retournent « oui ».

NP P co-NP B.Master MINT .U2 . Estellon .Classe co-NP ● Remarque : La classe P est incluse dans NP et co-NP.Complexite .

Réduction ● Un problème de décision A se réduit en temps polynomial à un problème de décision B si : ● Il existe une machine de Turing déterministe M qui transforme en temps polynomial toute instance I de A en une instance M(I) de B. ● ● Remarque : La longueur d'écriture de M(I) est polynomial en la longueur d'écriture de I.Master MINT . la solution de I pour A est identique à la solution de M(I) pour B.U2 . Estellon . B.Complexite . Pour tout I.

Complexite . Remarque : Les classes P et NP sont fermées par réduction polynomiale.U2 ● .Master MINT . B. Estellon .Les classes P et NP sont fermées par réduction polynomiale ● Une classe de complexité C est fermée par réduction si le fait de réduire un problème A à un problème B de C implique que A appartient à la classe C.

NP-complétude ● Un problème A est NP-difficile si tous les problèmes de la classe NP se réduisent polynomialement à A.Master MINT . ce qui semble peu probable. ● Remarque : si un problème NP-complet appartient à P alors P=NP. A est NP-difficile. Un problème A est NP-complet si : ● ● ● A appartient à la classe NP.U2 ● . Question ouverte : P est-il différent de NP ? B.Complexite . Estellon .

Théorème de Cook-Levin (1971)
● ●

Le problème SAT est NP-complet. En d'autres termes, tout problème de décision décidable par une machine de Turing nondéterministe polynomiale peut être réduit en temps polynomial au problème SAT. Idée de la preuve : On construit en temps polynomial un ensemble de clauses satisfaisables si et seulement si il existe une branche de l'exécution de la MT nondéterministe qui s'arrête sur « oui ».
B. Estellon - Complexite - Master MINT - U2

Théorème de Cook-Levin

Idée de la preuve :

Les variables :
– – –

E(i,e) = vrai ssi l'état de la MT à l'instant i est e. P(i,j) = vrai ssi la position de la MT à l'instant i est j. L(i,j,c) = vrai ssi, à l'instant i, la case j contient c. On se trouve dans un et un seul état. Il n'y a qu'un et un seul caractère dans chaque case. On applique une transition entre l'instant i et i+1. On code la configuration initiale et finale.

Les clauses :
– – – –

Remarque : le nombre d'étapes est polynomial.
B. Estellon - Complexite - Master MINT - U2

Réduction et NP-complétude

Si un problème NP-difficile A se réduit polynomialement à un problème B alors B est NP-difficile. Preuve : tous les problèmes de NP se réduisent en temps polynomial à A et A se réduit en temps polynomial à B donc tous les problèmes de NP se réduisent en temps polynomial à B
Rappel : la composition de deux algorithmes polynomiaux produit un algorithme polynomial
B. Estellon - Complexite - Master MINT - U2

Réduisons en temps polynomial SAT à 3SAT en remplaçant chaque clause a1∨a2∨a3∨..∨ak par : – – – – – (a1∨a2∨z1) (z1∨a3∨z2) (z2∨a4∨z3) .3SAT est NP-complet ● ● Le problème 3SAT appartient à NP.Complexite .. Estellon .. (zk-3∨ak.U2 .1∨zk) k-2 clauses B..Master MINT .

Master MINT .Vertex Cover est NP-Complet ● Une couverture par les sommets d'un graphe G est un sous-ensemble C de sommets de G tel que.U2 .b) de G. existe-t-il une couverture par les sommets de G de taille k ? ● B. pour chaque arrête (a.Complexite . Estellon . Problème Vertex Cover : Etant donné un graphe G et un entier k. le sommet a ou le sommet b appartient à C.

Complexite .U2 .Vertex Cover est NP-Complet ● Réduction de 3SAT à Vertex Cover. a x x Gadget variable b c Gadget clause B. Estellon .Master MINT .

Complexite . Estellon . x x y x k=nombre de variables + 2 * nombre de clauses y z z y z B.U2 .Master MINT .Vertex Cover est NP-Complet ● Compléter le graphe en ajoutant une arête entre chaque littéral d'un gadget clause et sa copie dans le gadget variable.

Complexite .Master MINT . une clique est un sousensemble de sommets deux à deux voisins. ● Problème Clique : Étant donné un graphe G et un entier k. Estellon . existe-t-il une clique de taille k ? B.U2 .Clique est NP-complet ● Dans un graphe.

● B. Remarque : un graphe G=(V.Master MINT . Estellon .E) possède une couverture par les sommets de taille k si et seulement si son complémentaire contient une clique de taille |V|-k.Clique est NP-complet ● Réduction de Vertex Cover à Clique.U2 .Complexite .

Master MINT .U2 .Complexite . Estellon .Cycle Hamiltonien est NP-complet ● Un cycle hamiltonien d'un graphe G est un cycle qui passe une et une seule fois par tous les sommets de G. Problème du Cycle Hamiltonien : Étant donné un graphe G. le graphe G possède-t-il un cycle hamiltonien ? ● B.

U2 .Cycle Hamiltonien est NP-complet ● Le gadget arête : B. Estellon .Master MINT .Complexite .

k=2 a b c d 1 2 a a b c b c c d B.U2 .Master MINT .Complexite .Cycle Hamiltonien est NP-complet ● Réduction de Vertex Cover. Estellon .

U2 .Complexite . k=2 a b c d 1 2 a a b c b c c d B.Master MINT . Estellon .Cycle Hamiltonien est NP-complet ● Réduction de Vertex Cover.

Master MINT .Complexite .E) et une fonction de longueur l : E->N sur les arrêtes. Estellon . trouver un cycle hamiltonien de longueur minimum.Voyageur de commerce ● Étant donné un graphe complet G=(V.U2 . B. 2 3 4 Longueur = 2+4+7+3+2+1 = 19 7 1 2 Le problème du voyageur de commerce est un problème d'optimisation.

Réduction de Cycle Hamiltonien : ● Considérons un graphe G=(V.U2 ● ● ● .Master MINT .Complexite . Soit G'=(V.E) et construisons une instance du voyageur de commerce. Fixons l(e):=1 si e ∈ E et l(e):=2 sinon. B. Estellon . Le graphe G' contient un cycle hamiltonien de longueur minimale égale à |V| si et seulement si G contient un cycle hamiltonien.Voyageur de commerce ● Le problème du voyageur de commerce est NP-difficile.E') le graphe complet construit sur l'ensemble de sommets V.

Estellon .U2 . supérieur ou égal à 1/f fois celui d'une solution optimale de I. pour toute instance I de P.Algorithmes d'approximation ● Un algorithme d'approximation avec un facteur (d'approximation) f pour un problème d'optimisation P est un algorithme qui. B.Master MINT . OPT ≤ ALGO ≤ f·OPT ● Pour les problèmes de maximisation.Complexite . retourne en temps polynomial une solution dont le coût est : ● Pour les problèmes de minimisation. inférieur ou égal à f fois celui d'une solution optimale de I.

Complexite . Estellon .Master MINT . Pour une arête choisie. Commencer avec un ensemble S vide. ALGO = 2n.U2 ● ● . ALGO ≤ 2OPT B. Tant qu'il existe des arêtes non-couvertes Choisir une arête { x. Donc. Donc. deux sommets sont ajoutés à S. Les arêtes choisies sont deux à deux disjointes.Facteur 2 pour Vertex Cover ● Vertex Cover est approximable avec un facteur 2. OPT ≥ n. y} non-couverte Ajouter x et y à S Supprimer les arêtes adjacentes à x et à y Retourner S ● Soit n le nombre d'arêtes choisies par l'algo.

Voyageur de commerce

Si P  NP, le problème du voyageur de commerce n'est pas approximable avec un facteur f constant. Réduction de Cycle hamiltonien.

Considérons un graphe G=(V,E) (instance du problème Cycle hamiltonien). Construisons une instance du voyageur de commerce.
– –

Soit G'=(V,E') le graphe complet. Fixons l(e):=1 si e ∈ E et l(e):=1+f|V| sinon.
B. Estellon - Complexite - Master MINT - U2

Voyageur de commerce

Le graphe G possède un cycle hamiltonien s'il existe un cycle hamiltonien dans G' de coût égal à |V|. Sinon tous les cycles hamiltoniens de G' ont un coût supérieur ou égal à (f+1)|V|. Donc un algorithme d'approximation avec un facteur f doit retourner une solution de coût :
● ●

= |V| si G possède un cycle hamiltonien; > f|V| si G n'en possède pas.

Si P  NP, cet algorithme ne peut exister car il déciderait en temps polynomial le problème du cycle hamiltonien.
B. Estellon - Complexite - Master MINT - U2

Voyageur de commerce

Supposons que la fonction de longueur vérifie l'inégalité triangulaire.
b a ≤a+b

Dans ce cas, le problème du voyageur de commerce est approximable avec un facteur 2.
B. Estellon - Complexite - Master MINT - U2

Estellon . poids de A ≤ OPT B.Voyageur de commerce ● Algorithme avec un facteur 2 : ● Trouver un arbre couvrant A de poids minimum. par optimalité de A.Complexite .Master MINT .U2 . Construire un cycle C à partir de A : ● Longueur du cycle C ≤ 2 fois le poids de A ≤ 2 OPT Un cycle optimal moins une arête est un arbre couvrant donc.

Master MINT .Voyageur de commerce ● Complexité de l'algorithme facteur 2 : ● ● ● ● Soit n le nombre de sommets Arbre couvrant : O(n2log n) car n(n-1)/2 arêtes Parcours en profondeur : O(n) Complexité totale : O(n2log n) ● Attention à l'algorithme de tri si vous utilisez l'algorithme de Kruskal : ● Avec un algorithme quadratique. Estellon . on obtient une complexité en O(n4) ! B.U2 .Complexite .

chaque élément de X est contenu dans au moins un ensemble de S).e. une famille F de sous-ensembles de X telle que tout x ∈ X appartient à au moins un ensemble de F.Master MINT .U2 . Estellon .Complexite .Couverture d'ensemble (Set Cover) ● Une instance du problème Set Cover est formée de : ● ● un ensemble fini X. ● Le problème Set Cover consiste à trouver une sousfamille S de F de cardinalité minimum qui couvre tous les éléments de X (i. B.

Couverture d'ensemble (Set Cover) ● Remarque : Set Cover est NP-difficile car Vertex Cover se déduit polynomialement au problème Set Cover B. Estellon .Master MINT .U2 .Complexite .

Complexite . 1} pour tout s∈F B.Master MINT . Modélisation en PLNE : ● Minimiser ∑s∈Fys avec ∑s∈F : x∈s ys ≥ 1 pour tout x∈X et ys∈{0. Estellon .U2 .Couverture d'ensemble (Set Cover) ● Le problème Set Cover est approximable avec un facteur k lorsque |{s∈F : x∈s}| ≤ k pour tout x∈X.

Complexite .Master MINT . On relâche le programme linéaire : ● ● On résout le programme linéaire en temps polynomial. Estellon .U2 Minimiser ∑s∈Fys avec ∑s∈F : x∈s ys ≥ 1 pour tout x∈X et ys ≥ 0 pour tout s∈F . B.Couverture d'ensemble (Set Cover) ● Le problème Set Cover est approximable avec un facteur k lorsque |{s∈F : x∈s}| ≤ k pour tout x∈X.

Estellon . Pour tout x∈X. ● ● ∑s∈F : x∈s ys≥ 1 et |{s∈F : x∈s}| ≤ k Donc ys' ≥ 1/k pour au moins un s'∈{s∈F : x∈s} ● ● Donc S:={s∈F : ys≥ 1/k} couvre X.Master MINT .Couverture d'ensemble (Set Cover) ● Le problème Set Cover est approximable avec un facteur k lorsque |{s∈F : x∈s}| ≤ k pour tout x∈X. |S| ≤ k·∑s∈Fys ≤ k·OPT B.Complexite .U2 ● . De plus.

U2 . Estellon .Couverture d'ensemble (Set Cover) ● Le problème Set Cover est approximable avec un facteur (ln |X|+1).Master MINT .Complexite . Algorithme glouton : ● U←X C←Ø Tant que U ≠ Ø faire Choisir un s dans F qui maximise |s∩U| U←U–s C ← C ∪ {σ} Ρε τ ουρνερ Χ B.

U2 . |C| = ∑x∈Xcx ≤ ∑s∈C*∑x∈scx Si.Master MINT .Complexite . Si x est couvert pour la première fois par si. Nous avons. pour tout s de F.Couverture d'ensemble (Set Cover) ● Soit si le ième ensemble choisi par l'algo. on pose 1 c x := ∣si − s1∪s 2∪⋯∪s i−1 ∣ ● ● Soit C* une solution optimale. ∑x∈scx ≤ H(|s|) alors ● ● ● |C| ≤ ∑s∈C*H(|S|) ≤ |C*|·H(|X|) ≤ |C*|·(ln |X| +1) B. Estellon .

U2 . Estellon . soit ui le nombre d'éléments non couverts dans s après le choix de si par l'algo. nous avons ui−1=∣s− s1∪s 2∪⋯∪si −1 ∣∣si −s1∪s2 ∪⋯∪si−1 ∣ B. u0 = |s| ● Pour tout i.Master MINT . Soit k le plus petit indice i tel que ui=0.Complexite .Couverture d'ensemble (Set Cover) ● Soit s∈F. Nous avons 1 ∑ c x =∑ ui−1−u i  ∣s − s ∪s ∪⋯∪s ∣ x ∈s i =1 i 1 2 i−1 k ● ● Et pour tout i entre 1 et k.

Couverture d'ensemble (Set Cover) ● Par conséquent. b avec a inférieur à b.Master MINT . Estellon .Complexite . on a : Donc.U2 k = H u 0 − H u k  = H ∣s∣ . k ∑ c x ∑ ui −1−ui  u x ∈s i=1 b 1 i−1 Pour tous entiers a. 1 1 H b− H a= ∑ b−a b i =a1 i ∑ c x ∑  H ui−1− H ui  x ∈s i=1 B.

Algorithme de descente par recherche locale : ● ● ● On débute avec une solution admissible.U2 . on l'effectue.Complexite . – – On choisit une transformation locale.Recherche locale ● Le recherche locale est une méta-heuristique utilisée pour résoudre des problèmes d'optimisation difficiles. Si cette transformation n'augmente pas le coût de la solution courante. Tant qu'il nous reste du temps. B.Master MINT . Estellon ...

e. relâcher certaines contraintes.Complexite . B. le voisinage).Master MINT . Avec un algorithme de descente simple. on peut ● ● ● modifier les transformations autorisées (i.Recherche locale ● Donne en pratique des résultats intéressants pour de nombreux problèmes d'optimisation. il est possible de tomber dans des minima locaux. Estellon . adapter la fonction de coût pour mieux guider la recherche. Autoriser la dégradation dans certains cas (recuit simulé) ● ● ● ● Remarque : il est possible de partir d'une solution obtenue à l'aide d'un algorithme d'approximation.U2 . Dans ce cas. Pas (ou peu) d'analyse théorique de la qualité des solutions retournées par ces méthodes.

Donc.Master MINT .Recherche locale ● Dans tous les cas.U2 ● ● . il est important de faire attention à la complexité (théorique) de la procédure d'évaluation des mouvements. B. Pour améliorer la rapidité de la descente. il est possible de choisir les transformations en essayant de « limiter » sa probabilité d'échec. le fait de tester un grand nombre de transformations ne peut qu'améliorer en pratique l'efficacité de la méthode. Cette procédure de choix doit avoir une complexité faible pour que l'algorithme reste efficace. Estellon .Complexite .

Recherche locale ● Application de la recherche locale à la coloration : Coût de la solution : Nombre d'arêtes avec un conflit.Complexite .U2 .Master MINT . ● ● ● Voisinage : modifier la couleur d'un sommet Complexité de l'évaluation « brutale » : O(|E|) Complexité d'une évaluation incrémentale : O(1) B. Estellon .

le nombre nc[v][c] de voisins de v ayant la couleur c.Complexite . Complexité : O(degré(v)). B. Estellon . on conserve (et on met à jour) pour chaque sommet v et pour chaque couleur c. --> Complexité : O(1).Recherche locale ● Pour cela. alors on sait que le coût de la solution va évoluer de nc[v][c'] – nc[v][c].Master MINT . Si v a la couleur c et qu'on lui donne la couleur c'. Mise à jour (si on effectue la transformation) : ● ● ● ● Modifier nc[u][c] et nc[u][c'] pour les voisins u de v.U2 .

You're Reading a Free Preview

Télécharger
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->