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

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

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

● Algorithme : tester les kn colorations ! Méthode efficace ? Envisageable en pratique ? B.U2 .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.Complexite . Estellon .Master MINT .

Problème du calcul du PGCD : ● ● A chaque couple {a.Master MINT . A chaque graphe G et chaque entier k.b}. on associe le PGCD de a et b. B.Complexite . Estellon .U2 ● Problème du tri : ● ● Problème de coloration de graphe : ● . A chaque tableau d'entiers non triés. on associe le tableau d'entiers 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.

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 ».Master MINT . Estellon .U2 .Complexite . B. 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.

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

B. 0 1 0 1 1 0 1 0 ● En informatique. 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.U2 . Estellon . on code l'information avec des 0 et des 1.Complexite .Codage de l'information ● Pour des raisons physiques. on regroupe souvent les bits par 8 : ● 8 bits forment un octet.Master MINT .

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

ou de -2n/2 à 2n/2-1 Sur 8 bits. on peut coder 256 valeurs différentes : .U2 .de 0 à 255 si tous positifs .de 0 à 2n-1 si tous positifs .ou de -128 à 127 B.Master MINT . on peut coder 2n valeurs différentes : .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.Complexite . Estellon .

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 .1023 B.127 s x m x 2e .Codage des nombres flottants ● Nombres à virgule flottante = approximation des réels.U2 . Estellon .Complexite .

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. Estellon . de bleu.Complexite .Codage des images ● ● ● Une image est composée de pixels chaque pixel a une couleur Couleur = une quantité de rouge.U2 .Master MINT .

si on code chaque pixel sur 2 octets.Master MINT .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. Estellon .Complexite .U2 . une image de 300x300 pixels prend 180000 octets B.

un programme L'ordinateur exécute le programme sur les données En sortie : les données transformées par le prog.U2 . Estellon . ● 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.Complexite .Master MINT .

Master MINT . un programme peut être décrit par une suite de bits Les programmes sont des données exécutables par un ordinateur B.Complexite .U2 ● ● ● . Estellon .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.

Master MINT .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.Complexite .U2 . Estellon .

U2 .Complexite .Master MINT .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. Estellon .

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

Estellon . 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 .Machine de Turing ● ● Définit par Alan Turing (1936) Modélise le fonctionnement des appareils mécaniques de calcul.Complexite .U2 . B.

Le nombre d'états est fini et il existe un état de départ.Master MINT . Chaque case contient un symbole parmi un alphabet fini.Machine de Turing ● Elle est constituée de : ● Un ruban infini à droite et à gauche. 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. Estellon .U2 ● ● ● .Complexite . B. Une table d'actions. Un registre d'état qui mémorise l'état courant de la machine.

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

. B.Machine de Turing ... 0 1 1 0 1 1 0 0 1 0 1 1 1 . 0/1/D État Car. lu Car. 0 1 1 0 1 1 1 0 1 0 1 1 1 .Master MINT . Estellon .U2 .Complexite ...... é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 .

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

Estellon .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.U2 .Master MINT .Complexite .

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

Master MINT . Estellon .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.U2 .Complexite .

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

U2 . Estellon .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.Master MINT .Complexite .

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

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

Estellon .Master MINT .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.Complexite .U2 . B.

while (n>0) { if (n%2==0) n=n/2.Master MINT . } Questions : . s++. Estellon .Complexite .Quel est son temps d'exécution en fonction de la longueur d'écriture de n ? en fonction de n ? B.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.U2 . else { n=n-1. } } return s.Que fait l'algorithme précédent ? .

B.Master MINT . Estellon . 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.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. 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.Complexite .U2 ● ● ● .

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

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

U2 . Répond « non » si la solution de I est « non ». Répond « oui » si la solution de I est « oui ». Estellon . ● ● ● Question : peut-on décider tous les problèmes de décision ? B.Complexite . 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.Décidabilité ● Un problème de décision est un problème où chaque instance a pour solution soit « oui » soit « non ».Master MINT .

un algorithme peut être donné en entrée d'un autre algorithme. Donc.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. Instance : un algorithme A et une instance I. B. Solution : « oui » si A s'arrête après un nombre fini d'étapes lorsqu'on l'exécute sur l'instance I.Complexite .Master MINT . Estellon . « non » sinon.U2 ● ● Problème de l'arrêt : ● ● .

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

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

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

Master MINT . 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. Idem pour la complexité en espace.Complexite . ● ● On dit que A s'exécute en temps f(n). B.Complexité en temps ● ● Soit A un algorithme qui résout un problème P. Estellon .U2 . La complexité en temps d'un algo.

g : N->R+.Rappel : Notation Landau ● Soit deux fonctions f. il suffit de garder le terme de plus grand ordre et supprimer son coeff. Estellon . 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.U2 .Master MINT .Complexite . : 3x4+2x3+x+4 = O(x4) B. f(x) ≤ c∙g(x) ● Pour les polynômes.

pour tout n et pour toute instance de taille n.Master MINT . DRAM(T(n)) pour le modèle RAM. Estellon . B.Complexité en temps ● Un algorithme A résout un problème P en temps O(T(n)) si.U2 . l'algorithme retourne une solution admissible après O(T(n)) étapes.Complexite . 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.

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.Complexite .Master MINT . Estellon .U2 .

U2 . Estellon .Complexite . } ● 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.Master MINT .Exercice 1 public static int truc(int n) { int s = 0. else { n=n-1. s++. while (n>=0) { if (n%2==0) n=n/2. B. } } return s.

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

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.Complexite .Master MINT . B.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. Estellon .U2 .

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

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

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

La classe P capte les problèmes « faciles » à résoudre. P = Uk≥0DTIME(nk).U2 ● ● . c'est-à-dire. pour lesquels il existe un algorithme « efficace » (même si un algo. en O(n10) est souvent inefficace en pratique). La classe P contient l'ensemble des problèmes polynomiaux.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 .Master MINT . B.Complexite . c'est-à-dire.

polynomial qui appelle un nombre polynomial de fois un algo.Master MINT . ● B. polynomial est polynomial.U2 . Estellon .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.Complexite .

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

Master MINT . } else if (a%2==1 && b%2==0) { return pgcd(a. a) . } B. } else if (a%2==0 && b%2==0) { return 2 * pgcd (a/2. b). Estellon .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 > b) { return pgcd((a-b)/2. int b) { if (a == 0 || b == 0) { return a + b .U2 . b/2).Complexite . b/2). } else return pgcd ((b-a)/2. } else if (a%2==0 && b%2==1) { return pgcd(a/2. b).

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

Master MINT .U2 .Complexite . Estellon .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.

Pour chaque clause a1∨a2.U2 ● .Complexite . Pour vérifier une clause a1∨a2. on ajoute une arête de a1 vers a2 et une de a2 vers a1. On construit un graphe orienté G de 2n sommets : ● ● ● ● Pour chaque xi. les deux implications a1⇒a2 et a2⇒a1 doivent être vérifiées. B.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 . on crée un sommet xi et xi.Master MINT .

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

B.Master MINT . v CFC(a).Complexite . Estellon ..e. Fixons xi à 0 lorsque f(xi) f(xi) et xi à 1 sinon.U2 ● . i.2SAT calcul de l'affectation admissible ● On numérote les CFC (ordre topologique). 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.

Estellon . Donc f(x) < f(x). On obtient f(x) < f(x) ≤ f(y) < f(y) ≤ f(x). toutes les clauses sont satisfaites par l'affectation. B. contradiction.U2 . La clause implique f(x) ≤ f(y) et f(y) ≤ f(x). Conclusion.Master MINT .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.Complexite . ● ● ● ● ● Donc f(x) < f(x) et f(y) < f(y).

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

U2 .Complexite . Estellon . 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 . ● On obtient un algorithme quadratique pour le problème 2SAT.

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

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

U2 3 1 9 8 8 10 8 11 .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. Estellon .Complexite .Master MINT . 11 0 0 88 21 61 71 4 2 52 B.

Complexite . 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 .Master MINT .U2 .

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

Analyser sa complexité.Master MINT . Implémenter l'algorithme de Tarjan. Estellon . Comparer l'efficacité des deux algorithmes. B. « non » sinon.U2 .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).Complexite .

U2 .Complexite . 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 . Estellon .Diviser pour régner ● Recherche d'un entier dans un tableau trié.

Complexite .Diviser pour régner ● Recherche d'un entier dans un tableau trié.U2 .Master MINT . Estellon . 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 . } } } while (permut).1. i < T.Master MINT . permut = true.U2 . } B. j. j < T. i++) { if (T[i] < T[min]) { min = i. i + 1). for (int i = j + 1.length .1.length . i. min).Tri par sélection et tri à bulles static void triParSelection(int T[]) { for (int j = 0.Complexite . do { permut = false. for (int i = 0. i++) { if (T[i] > T[i + 1]) { swap(T. } } swap(T. i < T.length. } } static void triBulle(int T[]) { boolean permut. j++) { int min = j.

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

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

Complexite . Estellon .Master MINT .U2 .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).Complexite .Master MINT .U2 . 2 9 Complexité : O(log n) 2 3 9 6 1 2 3 5 2 B. 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(n log n) B. Estellon . Complexité : O(n).U2 ● ● Extraire le maximum du tas en O(log n): ● ● ● ● Trier par tas : ● .Master MINT . O(1) Diminuer la taille du tas de 1. Échanger le dernier élément avec le premier. O(1) Entasser le premier élément. O(log n) Extraire n fois le maximum.Complexite .

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 .Master MINT .U2 .Complexite .

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.U2 .Complexite . Estellon .Master MINT .

● B.Master MINT .Complexite .U2 . il faut que l'arbre de décision (ou chaque nœud correspond à une comparaison) ait n! feuilles. Estellon .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. Remarque : pour produire tous les ordres possibles.

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

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

U2 Complexité ? .Master MINT . 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. On considère chacun des chiffres des nombres du moins significatif ou plus significatif.Complexite . On trie la liste des éléments suivant chaque chiffre en conservant l'ordre des éléments ayant le même chiffre (stabilité). 2. Estellon .Tri par base ● Pour trier un tableau T d'entiers : 1.

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

Estellon . B.U2 .Master MINT .Complexite .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.

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

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

Complexite . On a au plus 1 pièce de 1. On a au plus 2 pièces de 2. Il suffit de vérifier que l'algorithme glouton est optimale lorsque S ≤ 9. 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. glouton). Estellon .Master MINT .U2 ● .Algorithme glouton : pièces de monnaie ● Dans une solution optimale : ● ● ● ● On a au plus 1 pièce de 5. B.

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

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

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

U2 .Master MINT .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. Estellon .Complexite .

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 .

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

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

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

Master MINT .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. car.U2 . Estellon . 1/0/g 1/1/g 3 1/0/d B. lu) est associées une ou plusieurs transitions possibles.

Master MINT .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 non oui non non non non non non non non non « oui » B.U2 « non » . Estellon .Complexite .

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

l'algorithme vérifieur déterministe peut être transformé en un algorithme non-déterministe qui « teste » tous les certificats possibles.Complexite . Ce chemin peut être codé sous la forme d'une suite de bits de taille polynomiale.U2 ● . Estellon . B. Inversement.Master MINT . Les deux définitions sont équivalentes car : ● ● Pour les instances positives. on peut fournir à la machine de Turing non-déterministe le chemin à suivre pour la rendre déterministe.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. ce qui forme un certificat.

B.Classe co-NP ● Remarque : la définition de NP repose sur une dissymétrie entre le « oui » et le « non ». Estellon . ● 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 ».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 ».U2 .Complexite .

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

Estellon . la solution de I pour A est identique à la solution de M(I) pour B. ● ● Remarque : La longueur d'écriture de M(I) est polynomial en la longueur d'écriture de I. Pour tout I.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.U2 . B.Master MINT .Complexite .

B.Complexite .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. Estellon . Remarque : Les classes P et NP sont fermées par réduction polynomiale.Master MINT .U2 ● .

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

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

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

Master MINT .b) de G. Problème Vertex Cover : Etant donné un graphe G et un entier k. le sommet a ou le sommet b appartient à C.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.Complexite .U2 . Estellon . existe-t-il une couverture par les sommets de G de taille k ? ● B. pour chaque arrête (a.

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

Complexite .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. x x y x k=nombre de variables + 2 * nombre de clauses y z z y z B. Estellon .

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

Clique est NP-complet ● Réduction de Vertex Cover à Clique.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. Remarque : un graphe G=(V. Estellon .Complexite .U2 .Master MINT . ● B.

le graphe G possède-t-il un cycle hamiltonien ? ● B.Master MINT . Problème du Cycle Hamiltonien : Étant donné un graphe G. Estellon .U2 .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.Complexite .

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

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

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

Voyageur de commerce ● Étant donné un graphe complet G=(V. 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.Complexite .E) et une fonction de longueur l : E->N sur les arrêtes. trouver un cycle hamiltonien de longueur minimum.U2 . B. Estellon .Master MINT .

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

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

Tant qu'il existe des arêtes non-couvertes Choisir une arête { x. ALGO = 2n.Facteur 2 pour Vertex Cover ● Vertex Cover est approximable avec un facteur 2. Pour une arête choisie.Complexite . Donc. OPT ≥ n. Estellon . ALGO ≤ 2OPT B.Master MINT . deux sommets sont ajoutés à S. Commencer avec un ensemble S vide. 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.U2 ● ● . Donc. Les arêtes choisies sont deux à deux disjointes.

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

Voyageur de commerce ● Algorithme avec un facteur 2 : ● Trouver un arbre couvrant A de poids minimum. Estellon . par optimalité de A.Master MINT . poids de A ≤ OPT B.Complexite .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.

Estellon .Complexite .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.U2 . on obtient une complexité en O(n4) ! B.Master MINT .

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

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

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.U2 . Modélisation en PLNE : ● Minimiser ∑s∈Fys avec ∑s∈F : x∈s ys ≥ 1 pour tout x∈X et ys∈{0.Complexite . Estellon . 1} pour tout s∈F B.

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.U2 Minimiser ∑s∈Fys avec ∑s∈F : x∈s ys ≥ 1 pour tout x∈X et ys ≥ 0 pour tout s∈F . Estellon .Master MINT .Complexite . On relâche le programme linéaire : ● ● On résout le programme linéaire en temps polynomial.

Estellon . ● ● ∑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. Pour tout x∈X. |S| ≤ k·∑s∈Fys ≤ k·OPT B.U2 ● .Complexite .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. De plus.Master MINT .

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

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

Master MINT . Soit k le plus petit indice i tel que ui=0. nous avons ui−1=∣s− s1∪s 2∪⋯∪si −1 ∣∣si −s1∪s2 ∪⋯∪si−1 ∣ B. 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. Estellon .U2 . soit ui le nombre d'éléments non couverts dans s après le choix de si par l'algo.Couverture d'ensemble (Set Cover) ● Soit s∈F.Complexite . u0 = |s| ● Pour tout i.

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

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

Complexite . Dans ce cas. Avec un algorithme de descente simple. adapter la fonction de coût pour mieux guider la recherche. relâcher certaines contraintes. Pas (ou peu) d'analyse théorique de la qualité des solutions retournées par ces méthodes.Master MINT . on peut ● ● ● modifier les transformations autorisées (i. il est possible de tomber dans des minima locaux.U2 . le voisinage). 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. Estellon . B.Recherche locale ● Donne en pratique des résultats intéressants pour de nombreux problèmes d'optimisation.e.

Complexite . Pour améliorer la rapidité de la descente.Recherche locale ● Dans tous les cas. Cette procédure de choix doit avoir une complexité faible pour que l'algorithme reste efficace. Donc. il est important de faire attention à la complexité (théorique) de la procédure d'évaluation des mouvements. B. Estellon .Master MINT . 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.U2 ● ● .

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

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

Sign up to vote on this title
UsefulNot useful