You are on page 1of 145

Complexit et algorithmique

Modle de calcul, algorithmes, dcidabilit Classe P Mthodes de rsolution :

Diviser pour rgner Algorithmes de Tri Algorithmes gloutons Programmation dynamique

Classe NP (Dfinition, NP-compltude et rductions) Mthodes de rsolution :

Algorithmes d'approximation Heuristiques

Introduction

B. Estellon - Complexite - Master MINT - U2

Informatique ?

L'informatique dsigne l'automatisation du traitement de l'information par un systme. Questions :


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

Algorithmique ?

Un algorithme est une reprsentation de la rsolution par calcul d'un problme pour :

l'exposer une autre personne, le rsoudre avec un ordinateur.

Un algorithme est un nonc dans un langage bien dfini d'une suite d'oprations. L'implmentation d'un algorithme consiste automatiser son utilisation l'aide d'une machine.
B. Estellon - Complexite - Master MINT - U2

Algorithme d'Euclide

Permet de calculer le PGCD de deux entiers.


a et b deux entiers non nuls et a > b int PGCD(int a, int b) { r := a % b; if (r==0) return b; a:=b; b:=r; return PGCD(a,b); }

Calculer r = a mod b a devient b b devient r Non r=0? Oui Rsultat = b

B. Estellon - Complexite - Master MINT - U2

Algorithmes de tri

Ordonner des nombres entiers.


void selection(int t[MAX]) { int i, min, j, x; for (i = 0; i<MAX - 1 ; i++) { min = i ; for ( j = i+1 ; j < MAX ; j++) if ( t[j] < t[min] ) min=j; if (min != i) { x = t[i]; t[i] = t[min]; t[min] = x;} } } }

Nous verrons d'autres algorithmes plus efficaces : tri rapide, tri par tas, tri fusion...
B. Estellon - Complexite - Master MINT - U2

Colorer un graphe

Colorer les sommets d'un graphe avec k couleurs de sorte qu'aucun sommet du graphe n'ait la mme couleur que ses voisins.

Algorithme : tester les kn colorations !


Mthode efficace ? Envisageable en pratique ?
B. Estellon - Complexite - Master MINT - U2

Problmes

Un problme est une relation binaire sur un ensemble d'instances et un ensemble de solutions. Problme du calcul du PGCD :

A chaque couple {a,b}, on associe le PGCD de a et b. A chaque tableau d'entiers non tris, on associe le tableau d'entiers tris. A chaque graphe G et chaque entier k, on associe la rponse oui si le graphe G peut tre color avec k couleur et non sinon.
B. Estellon - Complexite - Master MINT - U2

Problme du tri :

Problme de coloration de graphe :

Problmes de dcision

Un problme de dcision est un problme o chaque instance a pour solution soit oui soit non . Problme de coloration de graphe :

A chaque graphe G et chaque entier k, on associe la rponse oui si le graphe G peut tre color avec k couleur et non sinon.

B. Estellon - Complexite - Master MINT - U2

Fonctionnement des ordinateurs

B. Estellon - Complexite - Master MINT - U2

Codage de l'information

Pour des raisons physiques, on code l'information avec des 0 et des 1. Une mmoire 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 mmoire (une case du tableau) est appel bit. 0 1 0 1 1 0

En informatique, on regroupe souvent les bits par 8 :

8 bits forment un octet.


B. Estellon - Complexite - Master MINT - U2

Codage de l'information

Avec des 0 et des 1, on peut reprsenter :


Des nombres entiers, rationnels... Des caractres, du texte, Des images, Du son, Des adresses mmoires, Des programmes informatiques...

B. Estellon - Complexite - Master MINT - U2

Nombres entiers

On utilise la base 2 (au lieu de la base dcimale)


27 26 25 24 23 22 21 20

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

Codage des nombres flottants

Nombres virgule flottante = approximation des rels. Un nombre virgule flottante possde :

Un signe s Une mantisse m Un exposant e

(-1) x m x 2

e-x

Norme IEEE 754 :


Encodage Simple prcision Double prcision 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 - 127 s x m x 2e - 1023

B. Estellon - Complexite - Master MINT - U2

Codage des images


Une image est compose de pixels chaque pixel a une couleur Couleur = une quantit de rouge, 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

14

14

Un pixel
B. Estellon - Complexite - Master MINT - U2

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

Ordinateur vs Calculatrice

Calculatrice :

En entre : des donnes, une opration La calculatrice effectue l'opration sur les donnes En sortie : le rsultat de l'opration En entre : des donnes, un programme L'ordinateur excute le programme sur les donnes En sortie : les donnes transformes par le prog.

Ordinateur :

B. Estellon - Complexite - Master MINT - U2

Programme

Un programme est une suite d'instructions Chaque processeur a un jeu d'instructions qui reprsente l'ensemble des oprations lmentaires qu'il peut raliser Un code (binaire) comprhensible par le processeur est associ chaque instruction De cette manire, un programme peut tre dcrit par une suite de bits Les programmes sont des donnes excutables par un ordinateur
B. Estellon - Complexite - Master MINT - U2

Programme

Exemple de programme :

Entre : valeur de la cellule 50 0 : Mettre la valeur 0 dans la cellule numro 40 1 : Diviser par 2 la valeur de la cellule numro 50 2 : Ajouter 1 la valeur de la cellule numro 40 3 : Si la valeur de la cellule numro 50 est > 0 Retourner l'instruction numro 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 - Complexite - Master MINT - U2

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 rpte indfiniment :


Charger la prochaine instruction excuter Charger les donnes ncessaires en mmoire Effectuer l'opration Ranger le rsultat du calcul Se dplacer sur la prochaine instruction excuter
B. Estellon - Complexite - Master MINT - U2

Modles de calcul

B. Estellon - Complexite - Master MINT - U2

Machine de Turing

Dfinit par Alan Turing (1936) Modlise le fonctionnement des appareils mcaniques de calcul. Donne une dfinition prcise au concept d'algorithme :

Thse de Church-Turing : tout traitement ralisable mcaniquement pour tre accompli par une machine de Turing

Fournit un modle thorique pour tudier la complexit des problmes.


B. Estellon - Complexite - Master MINT - U2

Machine de Turing

Elle est constitue de :

Un ruban infini droite et gauche. Chaque case contient un symbole parmi un alphabet fini. Une tte de lecture/criture qui peut lire et crire des symboles sur le ruban et se dplacer vers la gauche ou vers la droite. Un registre d'tat qui mmorise l'tat courant de la machine. Le nombre d'tats est fini et il existe un tat de dpart. Une table d'actions.
B. Estellon - Complexite - Master MINT - U2

Machine de Turing

La table d'action associe une action chaque couple (tat, caractre lu). Une action indique la machine quel caractre crire sur le ruban et comment dplacer la tte de lecture/crire. Tant qu'il existe une action appliquer, la machine l'applique, sinon elle s'arrte.

B. Estellon - Complexite - Master MINT - U2

Machine de Turing
... 0 1 1 0 1 1 0 0 1 0 1 1 1 ...

0/1/D
tat Car. lu Car. crit Direction tat

0 0 1

0 1 0

1 0 0

D G D

1 1 0

0/0/D

1/0/G

...

...

B. Estellon - Complexite - Master MINT - U2

Exercice 1

crire une machine de Turing qui effectue le complment d'un nombre binaire.

Entre : un nombre crit en binaire (entour de #).

Exemple : #01101001# Exemple : #10010110#

Sortie : le complment binaire du nombre :

On supposera que le nombre contient au moins un digit. Au dbut, la tte de lecture est positionne sur le premier # et doit se trouver, la fin, sur le # qui prcde le rsultat.

B. Estellon - Complexite - Master MINT - U2

Solution de l'exercice 1
0/1/d 0/0/g #/#/d

#/#/g

1/0/d

1/1/g

Quel est le nombre d'actions effectues par la machine de Turing en fonction de la longueur d'criture du nombre ? de la valeur du nombre ?
B. Estellon - Complexite - Master MINT - U2

Exercice 2

crire une machine de Turing qui ajoute 1 un nombre binaire crit avec les bits de poids faibles gauche.

Entre : un nombre crit en binaire.

Exemple : #11101101# = 183 Exemple : #00011101# = 184

Sortie : le nombre plus 1.

On supposera que le nombre contient au moins un digit. Au dbut, la tte de lecture est positionne sur le premier # et doit se trouver, la fin, sur le # qui prcde le rsultat.
B. Estellon - Complexite - Master MINT - 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 effectues par la machine de Turing en fonction de la longueur d'criture du nombre ? de la valeur du nombre ?
B. Estellon - Complexite - Master MINT - U2

Exercice 3

crire une machine de Turing qui compte le nombre de 1 dans un chiffre binaire :

Entre : un nombre crit en binaire.

Exemple : #11101101#. Exemple : #110#

Sortie : le nombre de 1.

Mmes consignes que dans les exercices prcdents. On supposera que la partie non visible du ruban est initialise avec des #.
B. Estellon - Complexite - Master MINT - U2

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 effectues par la machine de Turing en fonction de la longueur d'criture du nombre ? de la valeur du nombre ?
B. Estellon - Complexite - Master MINT - U2

Modle RAM

Les RAM sont des machines abstraites qui ressemblent aux ordinateurs actuels. Elles sont constitues d'un programme form d'une suite d'instructions et d'une suite infinie de registres.

Registres spciaux :

Compteur ordinal (prochaine instruction). L'accumulateur. Les donnes manipules par ces machines sont des entiers qui peuvent tre arbitrairement grands. Les entres et les sorties sont faites travers une bandes d'entre et une bande de sortie.
B. Estellon - Complexite - Master MINT - U2

Modle RAM

Les instructions se divisent en 4 catgories :

Manipulations de registres : Adresse direct, indirect des registres, etc. Oprations arithmtiques,

Addition des registres, multiplication, etc. Ruptures de squences :

Sauts conditionnels et inconditionnels, stop. Instructions d'entres/sorties :


Lire et crire sur les bandes.


B. Estellon - Complexite - Master MINT - U2

Modle RAM

Excution d'un programme :


On commence l'instruction 0 Tant que l'instruction STOP n'est pas rencontre :


On excute l'instruction courante On passe l'instruction suivante

Le temps d'excution du programme dpend du nombre d'instructions excutes.

B. Estellon - Complexite - Master MINT - U2

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; while (n>0) { if (n%2==0) n=n/2; else { n=n-1; s++; } } return s; }

Questions :

- Que fait l'algorithme prcdent ? - Quel est son temps d'excution en fonction de la longueur d'criture de n ? en fonction de n ?
B. Estellon - Complexite - Master MINT - 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. Il est possible de simuler toute RAM avec une machine de Turing !!! Exercice : crire une machine de Turing qui ajoute deux nombres reprsents en binaire. Attention : Le nombre d'actions ralises par la machine de Turing et le nombre d'instructions excutes par la RAM ne sont pas forcement identiques.
B. Estellon - Complexite - Master MINT - U2

Problmes et algorithmes

Un problme est une relation binaire sur un ensemble d'instances et un ensemble de solutions. Les instances et les solutions sont des informations qui doivent tre codes pour tre traites automatiquement par un algorithme. Un algorithme rsout un problme s'il donne la solution de chaque instance du problme en un temps fini.

Instance

Algorithme

Solution

B. Estellon - Complexite - Master MINT - U2

Dcidabilit

B. Estellon - Complexite - Master MINT - U2

Dcidabilit

Un problme de dcision est un problme o chaque instance a pour solution soit oui soit non . Un problme de dcision est dcidable s'il existe un algo qui pour toute instance I :

Se termine en un nombre fini d'tapes; Rpond oui si la solution de I est oui ; Rpond non si la solution de I est non .

Question : peut-on dcider tous les problmes de dcision ?


B. Estellon - Complexite - Master MINT - U2

Problme de l'arrt

Remarque :

La table d'actions d'une machine de Turing (ou un programme informatique) est reprsentable par une suite de 0 et de 1. Donc, un algorithme peut tre donn en entre d'un autre algorithme. Instance : un algorithme A et une instance I. Solution : oui si A s'arrte aprs un nombre fini d'tapes lorsqu'on l'excute sur l'instance I, non sinon.
B. Estellon - Complexite - Master MINT - U2

Problme de l'arrt :

Semi-dcidabilit

Un problme de dcision est semi-dcidable s'il existe un algo qui, pour toute instance I dont la solution est oui , se termine en un nombre fini d'tapes en rpondant oui . Remarque : le problme de l'arrt est semidcidable car il suffit de simuler l'excution de l'algorithme A sur l'instance I et de rpondre oui ds qu'il s'arrte.
B. Estellon - Complexite - Master MINT - U2

Le problme de l'arrt est indcidable

Dmonstration par l'absurde : Supposons qu'un algorithme H(A,i) existe pour dcider le problme de l'arrt. Par dfinition, H(A,i) est un algorithme prend en entre un algorithme A et une instance i et retourne en un nombre fini d'tapes :

oui si l'algorithme A s'arrte lorsqu'on l'excute sur l'instance i. non si l'algorithme A ne s'arrte pas.

B. Estellon - Complexite - Master MINT - U2

Le problme de l'arrt est indcidable

Nous dfinissons maintenant l'algorithme T(A) qui prend en entre un algorithme A :


T(A) : 1. excuter H(A,A) 2. si H(A,A) retourne oui alors {...} tant que (vrai)

Cas 1 : T(T) s'arrte

H(T, T) retourne oui et T(T) boucle => Contrad. H(T,T) retourne non et T(T) s'arrte => Contrad.
B. Estellon - Complexite - Master MINT - U2

Cas 2 : T(T) boucle indfiniment

Conclusion : H n'existe pas

Introduction la complexit

B. Estellon - Complexite - Master MINT - U2

Introduction

Par la suite, nous allons considrer uniquement les problmes pour lesquels il existe un algorithme. La complexit algorithmique s'intresse aux ressources ncessaires pour mettre en uvre un algorithme. Dans ce cours, nous allons nous intresser :

au temps d'excution des algorithmes; l'espace mmoire utilis par les algorithmes.

B. Estellon - Complexite - Master MINT - U2

Complexit en temps

Soit A un algorithme qui rsout un problme P. La complexit en temps d'un algo. A est

une fonction f : N->N o f(n) est le nombre maximum d'tapes de calcul de A sur toutes les entres de taille n.

On dit que A s'excute en temps f(n). Idem pour la complexit en espace.

B. Estellon - Complexite - Master MINT - U2

Rappel : Notation Landau

Soit deux fonctions f, g : N->R+, on dit que

f(x) = O(g(x)) (quand x tend vers +) s'il existe deux nombres rels c et x0 tels que pour tout x x0, f(x) cg(x)

Pour les polynmes, il suffit de garder le terme de plus grand ordre et supprimer son coeff. :
3x4+2x3+x+4 = O(x4)

B. Estellon - Complexite - Master MINT - U2

Complexit en temps

Un algorithme A rsout un problme P en temps O(T(n)) si, pour tout n et pour toute instance de taille n, l'algorithme retourne une solution admissible aprs O(T(n)) tapes. L'ensemble des problmes de dcision pour lesquels il existe un algorithme qui s'excute en temps O(T(n)) est not :

DTIME(T(n)) pour les machines de Turing; DRAM(T(n)) pour le modle RAM.


B. Estellon - Complexite - Master MINT - 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 linaire quasi-linaire 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 annes 10142 annes

B. Estellon - Complexite - Master MINT - U2

Exercice 1
public static int truc(int n) { int s = 0; while (n>=0) { if (n%2==0) n=n/2; else { n=n-1; s++; } } return s; }

Exprimer le temps d'excution du programme prcdent en fonction de la longueur d'criture de n puis en fonction de n.
B. Estellon - Complexite - Master MINT - U2

Exercice 2

crire une fonction Java qui calcule le produit de deux matrices.


int[][] prodMat(int a[][], int b[][])

Exprimer le temps d'excution de votre programme en z fonction de x, y et z.


y a

Rsultat

B. Estellon - Complexite - Master MINT - U2

Exercice 3

crire un algorithme qui prend en entre un tableau de n entiers compris entre 0 et n-1 et qui vrifie que tous les lments sont distincts.
0 1 2 4 3 5 7 6 8 oui

non

Exprimer le temps d'excution de votre algorithme en fonction de n.


B. Estellon - Complexite - Master MINT - U2

Exercice 4

Calculer la somme des n premiers entiers positifs (1+2+3+4+...+n). Exprimer le temps d'excution de votre programme en fonction de n.

B. Estellon - Complexite - Master MINT - U2

Exercice 5

Trouver le plus grand nombre d'objets qui partagent au moins k proprits.


Objets

Proprits

Donner un algorithme en O(2nbProprits nbObjets nbProprits). Donner un algorithme en O(2nbObjets nbObjets nbProprits).

B. Estellon - Complexite - Master MINT - U2

Classe P

B. Estellon - Complexite - Master MINT - U2

Classe P

Un problme se rsout en temps polynomial (ou est polynomial) s'il existe un algorithme permettant de le rsoudre en temps O(nk) pour une certaine constante k. La classe P contient l'ensemble des problmes polynomiaux, c'est--dire, P = Uk0DTIME(nk). La classe P capte les problmes faciles rsoudre, c'est--dire, pour lesquels il existe un algorithme efficace (mme si un algo. en O(n10) est souvent inefficace en pratique).
B. Estellon - Complexite - Master MINT - U2

Classe P

La classe P est intressante car elle est :

Robuste : La classe P dfinit en utilisant le modle RAM est identique celle dfinit en utilisant les machines de Turing : Uk0DRAM(nk)=Uk0DTIME(nk) Stable par composition : un algo. polynomial qui appelle un nombre polynomial de fois un algo. polynomial est polynomial.

B. Estellon - Complexite - Master MINT - U2

Classe P

Pour montrer qu'un problme appartient P :


Proposer un algorithme polynomial; Montrer que l'algorithme est correct, c'est--dire, montrer qu'il retourne, pour toutes les instances du problme, une solution admissible. Montrer que l'algorithme est polynomial.

B. Estellon - Complexite - Master MINT - U2

Calcul du PGCD

Montrer que l'algorithme suivant est un algorithme polynomial pour rsoudre le problme du PGCD :
int pgcd (int a , int b) { if (a == 0 || b == 0) { return a + b ; } else if (a%2==0 && b%2==0) { return 2 * pgcd (a/2, b/2); } else if (a%2==1 && b%2==0) { return pgcd(a, b/2); } else if (a%2==0 && b%2==1) { return pgcd(a/2, b); } else if (a > b) { return pgcd((a-b)/2, b); } else return pgcd ((b-a)/2, a) ; }
B. Estellon - Complexite - Master MINT - U2

SAT

Le problme SAT est un problme de dcision.

Entre :

Un ensemble de variables boolennes x1, x2, x3, ... , xn. Un ensemble de clauses a1a2a3...ak o les ai sont des littraux, c'est--dire, ai = xj ou xj

Sortie :

oui s'il existe une affectation des variables boolennes qui satisfait toutes les clauses; non sinon.
B. Estellon - Complexite - Master MINT - U2

SAT

Exemples :
x1x2x3x4 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

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

2SAT

Le problme kSAT est le problme SAT o toutes les clauses sont de tailles k Thorme : Le problme 2SAT est polynomial. Pour vrifier une clause a1a2, les deux implications a1a2 et a2a1 doivent tre vrifies. On construit un graphe orient G de 2n sommets :

Pour chaque xi, on cre un sommet xi et xi. Pour chaque clause a1a2, on ajoute une arte de a1 vers a2 et une de a2 vers a1.
B. Estellon - Complexite - Master MINT - U2

2SAT

Si dans le graphe, pour une variable xi, il existe un chemin de xi vers xi et un de xi vers xi, alors l'instance est insatisfaisable. Donc, l'instance de 2SAT est satisfaisable si et seulement si, pour tout i, les sommets xi et xi sont dans deux composantes fortement connexes diffrentes de G.

B. Estellon - Complexite - Master MINT - U2

2SAT
calcul de l'affectation admissible

On numrote les CFC (ordre topologique).

CFC(0)

CFC(1)

CFC(2)

CFC(3)

Soit f la fonction dfinie par f(v):=a o a est le numro de la CFC qui contient v, i.e., v CFC(a). Fixons xi 0 lorsque f(xi) f(xi) et xi 1 sinon.
B. Estellon - Complexite - Master MINT - U2

2SAT
calcul de l'affectation admissible

Preuve de l'admissibilit de la solution :

Raisonnons par l'absurde et supposons qu'il existe une clause xy non satisfaite.

Donc f(x) < f(x) et f(y) < f(y). La clause implique f(x) f(y) et f(y) f(x). On obtient f(x) < f(x) f(y) < f(y) f(x). Donc f(x) < f(x), contradiction. Conclusion, toutes les clauses sont satisfaites par l'affectation.
B. Estellon - Complexite - Master MINT - U2

2SAT

Remarque : Le graphe G a une taille polynomial en la taille de l'instance de 2SAT et peut tre construit en temps polynomial. Nous venons de rduire le problme 2SAT un problme de recherche des composantes fortement connexes d'un graphe.

B. Estellon - Complexite - Master MINT - U2

Algorithme naf

Il est facile de vrifier (en temps linaire) que deux sommets x et y se trouvent dans une mme composante fortement connexe :

Il suffit de vrifier 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).

On obtient un algorithme quadratique pour le problme 2SAT.

B. Estellon - Complexite - Master MINT - U2

Composantes fortement connexes en temps linaire

Algorithme de Tarjan (1972)


11 0 0 88 21 61 7 1 4 2 52
B. Estellon - Complexite - Master MINT - U2

9 10 8 11 8

Algorithme de Tarjan

Les composantes fortement connexes (CFC) forment des sous-arbres de l'arbre issu du parcours en profondeur.

=> impossible par construction


B. Estellon - Complexite - Master MINT - U2

=> les sommets du chemin rouge sont dans les deux composantes.

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

9 8 8

10 8 11

Algorithme de Tarjan

Problme des arrtes transverses.


11 0 0 88 22 62 72 24 52 3 2 9 8 8 11 10 8

B. Estellon - Complexite - Master MINT - U2

Algorithme de Tarjan

A la fin de l'analyse du sous-arbre de racine v, si v est la racine d'une CFC, on cre une CFC avec les descendants de v et on supprime ces sommets de l'arbre.
z

Supposons que u soit trait aprs w. Comme le sommet w n'a pas t supprim, il doit exister un chemin de w vers un sommet z. Donc, on peut dtecter le chemin de u z (qui passe par w) en regardant l'information calcule pour w.
u

w
B. Estellon - Complexite - Master MINT - U2

Devoir 1

Raliser un programme Java qui prend en entre une instance de 2SAT est qui affiche :

oui si elle est satisfaisable; non sinon.

Implmenter l'algorithme naf (quadratique). Implmenter l'algorithme de Tarjan. Analyser sa complexit. Comparer l'efficacit des deux algorithmes.
B. Estellon - Complexite - Master MINT - U2

Diviser pour rgner

Recherche d'un entier dans un tableau tri.

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

Diviser pour rgner

Recherche d'un entier dans un tableau tri.


n

n/2

n/2

O(log n)
n/4 n/4 n/4 n/4

Complexit : O(log n)
B. Estellon - Complexite - Master MINT - U2

Tri par slection et tri bulles


static void triParSelection(int T[]) { for (int j = 0; j < T.length - 1; j++) { int min = j; for (int i = j + 1; i < T.length; i++) { if (T[i] < T[min]) { min = i; } } swap(T, j, min); } } static void triBulle(int T[]) { boolean permut; do { permut = false; for (int i = 0; i < T.length - 1; i++) { if (T[i] > T[i + 1]) { swap(T, i, i + 1); permut = true; } } } while (permut); }

B. Estellon - Complexite - Master MINT - U2

Tri Fusion

Fusion de deux listes tries : on compare les deux lments qui se trouvent au dessus...
5 9 4 8 10 20 22 35 40 48 10 11 12 25 38 42 50 60

Complexit : linaire
B. Estellon - Complexite - Master MINT - U2

Tri Fusion

O(n) O(log n) O(n) O(n) Complexit : O(n log n)


B. Estellon - Complexite - Master MINT - U2

Tri par tas


Un tas :
8 11

Un tas dans un tableau :


11 8 6 6 7 5 2

B. Estellon - Complexite - Master MINT - U2

Tri par tas

Entasser un lment : le faire descendre une place correcte (en supposant que les lments situs en dessous forment deux tas).
2

9 Complexit : O(log n)

2 3

B. Estellon - Complexite - Master MINT - U2

Tri par tas

Construire le tas partir d'un tableau (non tri) :

On entasse chaque lment du premier lment qui possde un fils en remontant jusqu' la racine. Complexit : O(n). changer le dernier lment avec le premier; O(1) Diminuer la taille du tas de 1; O(1) Entasser le premier lment; O(log n) Extraire n fois le maximum; O(n log n)
B. Estellon - Complexite - Master MINT - U2

Extraire le maximum du tas en O(log n):


Trier par tas :

Tri rapide

Partition en temps linaire


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

12

10

18

B. Estellon - Complexite - Master MINT - U2

Tri rapide

QuickSort :

Choisir un pivot Partitionner autour de ce pivot Trier les deux parties avec la mme mthode

12

10

18

Complexit : O(n2) Efficace en pratique


B. Estellon - Complexite - Master MINT - U2

Borne infrieure

Un algorithme de tri (bas sur la comparaisons des lments) effectue au moins nlog(n) comparaisons dans le pire des cas. Remarque : pour produire tous les ordres possibles, il faut que l'arbre de dcision (ou chaque nud correspond une comparaison) ait n! feuilles.

B. Estellon - Complexite - Master MINT - U2

Borne infrieure
(log k) = (log n!) = (n log n)

K = n!
Formule de Stirling :

B. Estellon - Complexite - Master MINT - U2

Tri par dnombrement

Pour trier une tableau T d'entiers compris entre 0 et n-1 :


1. On initialise 0 un tableau D de n cases, 2. On parcourt T de faon obtenir dans la case i du tableau D le nombre d'occurrences de i dans T. 3. On reconstruit le tableau T tri en utilisant D.

Exercices :

crire le programme Java qui implmente ce tri. Quelle est la complexit du tri par dnombrement ?
B. Estellon - Complexite - Master MINT - U2

Tri par base

Pour trier un tableau T d'entiers :


1. On considre chacun des chiffres des nombres du moins significatif ou plus significatif. 2. On trie la liste des lments suivant chaque chiffre en conservant l'ordre des lments ayant le mme chiffre (stabilit).
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. Estellon - Complexite - Master MINT - U2

Complexit ?

Devoir 2

Programmer en Java :

Le tri par slection; Le tri fusion; Le tri par tas; Le tri rapide; Le tri par base.

Comparer leur efficacit en pratique.

B. Estellon - Complexite - Master MINT - U2

Algorithme glouton : tches

Considrons un ensemble de tches :

temps

Problme : trouver un ensemble de tches de cardinalit maximale qui ne s'intersectent pas.


B. Estellon - Complexite - Master MINT - U2

Algorithme glouton : tches

Algorithme glouton :

Trier les tches dans l'ordre croissant des dates de fin. Tant qu'il existe des tches :

Ajouter la tches T qui a la plus petite date de fin. Supprimer les tches qui intersectent T.

temps
B. Estellon - Complexite - Master MINT - U2

Algorithme glouton : pices de monnaie

On dispose de pices en nombre illimit de valeurs 10, 5, 2 et 1. Problme : rendre une somme S avec un nombre minimum de pices. Algorithme :

On trie les tas de pices par ordre croissant de valeur. Pour chaque valeur (dans cette ordre), on prend le nombre maximum de pices possibles.

B. Estellon - Complexite - Master MINT - U2

Algorithme glouton : pices de monnaie

Dans une solution optimale :


On a au plus 1 pice de 5; On a au plus 1 pice de 1; On a au plus 2 pices de 2; On a au plus 3 pices qui ne sont pas des pices de 10 pour un total infrieur 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 pices de 10 maximum (= l'algo. glouton). Il suffit de vrifier que l'algorithme glouton est optimale lorsque S 9.
B. Estellon - Complexite - Master MINT - U2

Algorithme glouton : pices de monnaie

L'algorithme glouton est-il optimal si on a des pices de valeurs 6, 4 et 1 ? Non, pour S = 8 :

L'algorithme glouton :

1 pice de 6, 2 pices de 2. 2 pices de 4.

La solution optimale :

B. Estellon - Complexite - Master MINT - U2

Pices de monnaie : programmation dynamique

Notation :

Soit {v1, v2, ..., vn} l'ensemble des valeurs disponibles tries dans l'ordre croissant. v1=1 pour qu'il existe toujours une solution. Soit p(K,i) le nombre minimum de pices de valeurs {v1, v2, ..., vi} ncessaires pour rendre la somme K Nous voulons calculer p(S,n).
B. Estellon - Complexite - Master MINT - U2

Problme intermdiaire :

Pices de monnaie : programmation dynamique

Les formules suivantes sont vrifies : p(0,i) = 0 pour tout i inclus dans {1,...,n} p(K,1)=K pour tout K inclus dans {1,...,S} Si K < vi alors p(K,i) = p(K,i-1) Si K vi alors p(K,i) = min{p(K,i-1), p(K-vi,i)+1}

B. Estellon - Complexite - Master MINT - U2

Pices 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 - Master MINT - U2

Pices 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 - Master MINT - U2

Classe NP

B. Estellon - Complexite - Master MINT - U2

Classe NP

NP signifie Polynomial non-dterministe. Un problme de dcision appartient NP si


il existe un algorithme vrifieur (dterministe) A; s'il existe, pour chaque instance I dont la rponse est oui , un certificat C(I) de taille polynomiale; l'algorithme A permet de vrifier que le certificat est valide ou non en un temps polynomial en la taille de I. La classe P est incluse dans la classe NP.
B. Estellon - Complexite - Master MINT - U2

Remarque :

Classe NP Exemples

Problme de coloration de graphe :

A chaque graphe G et chaque entier k, la rponse est oui si le graphe G peut tre color avec k couleur et non sinon. Certificat : une coloration admissible.

Problme SAT :

Certificat : un assignement admissible.

B. Estellon - Complexite - Master MINT - U2

Classe NP

Pourquoi Non-dterministe polynomial ?

Une machine de Turing non-dterministe est dfinie par une relation de transition : chaque couple (tat, car. lu) est associes une ou plusieurs transitions possibles.
1/0/g 1/1/g 3 1/0/d

B. Estellon - Complexite - Master MINT - U2

Classe NP

La rponse est oui si et seulement si au moins une branche d'excution aboutit sur une rponse positive.

non

non

oui

non

non

non

non

non

non

non

non

non

oui
B. Estellon - Complexite - Master MINT - U2

non

Classe NP

Temps d'excution : nombre de transitions de la plus longueur branche d'excution.

non oui non

non non non

B. Estellon - Complexite - Master MINT - U2

Classe NP

Un problme de dcision appartient NP s'il existe une machine de Turing non-dterministe polynomiale qui le rsout.
Les deux dfinitions sont quivalentes car :

Pour les instances positives, on peut fournir la machine de Turing non-dterministe le chemin suivre pour la rendre dterministe. Ce chemin peut tre cod sous la forme d'une suite de bits de taille polynomiale, ce qui forme un certificat. Inversement, l'algorithme vrifieur dterministe peut tre transform en un algorithme non-dterministe qui teste tous les certificats possibles.
B. Estellon - Complexite - Master MINT - U2

Classe co-NP

Remarque : la dfinition de NP repose sur une dissymtrie entre le oui et le non . La classe co-NP contient les problmes pour lesquels il existe un algorithme polynomial et non-dterministe qui retourne :

non si au moins une branche retourne non , oui si toutes les branches retournent oui .

La classe co-NP contient les problmes pour lesquels il existe un certificat pour les instances ngatives vrifiables en temps polynomial.
B. Estellon - Complexite - Master MINT - U2

Classe co-NP

Remarque :
La classe P est incluse dans NP et co-NP.

NP

P co-NP

B. Estellon - Complexite - Master MINT - U2

Rduction

Un problme de dcision A se rduit en temps polynomial un problme de dcision B si :

Il existe une machine de Turing dterministe M qui transforme en temps polynomial toute instance I de A en une instance M(I) de B; Pour tout I, 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.


B. Estellon - Complexite - Master MINT - U2

Les classes P et NP sont fermes par rduction polynomiale

Une classe de complexit C est ferme par rduction si le fait de rduire un problme A un problme B de C implique que A appartient la classe C. Remarque : Les classes P et NP sont fermes par rduction polynomiale.
B. Estellon - Complexite - Master MINT - U2

NP-compltude

Un problme A est NP-difficile si tous les problmes de la classe NP se rduisent polynomialement A. Un problme A est NP-complet si :

A appartient la classe NP; A est NP-difficile.

Remarque : si un problme NP-complet appartient P alors P=NP, ce qui semble peu probable. Question ouverte : P est-il diffrent de NP ?
B. Estellon - Complexite - Master MINT - U2

Thorme de Cook-Levin (1971)


Le problme SAT est NP-complet. En d'autres termes, tout problme de dcision dcidable par une machine de Turing nondterministe polynomiale peut tre rduit en temps polynomial au problme SAT. Ide de la preuve : On construit en temps polynomial un ensemble de clauses satisfaisables si et seulement si il existe une branche de l'excution de la MT nondterministe qui s'arrte sur oui .
B. Estellon - Complexite - Master MINT - U2

Thorme de Cook-Levin

Ide 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 caractre 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

Rduction et NP-compltude

Si un problme NP-difficile A se rduit polynomialement un problme B alors B est NP-difficile. Preuve : tous les problmes de NP se rduisent en temps polynomial A et A se rduit en temps polynomial B donc tous les problmes de NP se rduisent en temps polynomial B
Rappel : la composition de deux algorithmes polynomiaux produit un algorithme polynomial
B. Estellon - Complexite - Master MINT - U2

3SAT est NP-complet

Le problme 3SAT appartient NP.


Rduisons en temps polynomial SAT 3SAT en remplaant chaque clause a1a2a3...ak par :

(a1a2z1) (z1a3z2) (z2a4z3) ... (zk-3ak- 1zk)


k-2 clauses

B. Estellon - Complexite - Master MINT - U2

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, pour chaque arrte (a,b) de G, le sommet a ou le sommet b appartient C. Problme Vertex Cover : Etant donn un graphe G et un entier k, existe-t-il une couverture par les sommets de G de taille k ?

B. Estellon - Complexite - Master MINT - U2

Vertex Cover est NP-Complet

Rduction de 3SAT Vertex Cover.


a x x

Gadget variable

Gadget clause

B. Estellon - Complexite - Master MINT - U2

Vertex Cover est NP-Complet

Complter le graphe en ajoutant une arte entre chaque littral d'un gadget clause et sa copie dans le gadget variable.
x x y x
k=nombre de variables + 2 * nombre de clauses

B. Estellon - Complexite - Master MINT - U2

Clique est NP-complet

Dans un graphe, une clique est un sousensemble de sommets deux deux voisins.

Problme Clique : tant donn un graphe G et un entier k, existe-t-il une clique de taille k ?
B. Estellon - Complexite - Master MINT - U2

Clique est NP-complet

Rduction de Vertex Cover Clique. Remarque : un graphe G=(V,E) possde une couverture par les sommets de taille k si et seulement si son complmentaire contient une clique de taille |V|-k.

B. Estellon - Complexite - Master MINT - 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. Problme du Cycle Hamiltonien : tant donn un graphe G, le graphe G possde-t-il un cycle hamiltonien ?

B. Estellon - Complexite - Master MINT - U2

Cycle Hamiltonien est NP-complet

Le gadget arte :

B. Estellon - Complexite - Master MINT - U2

Cycle Hamiltonien est NP-complet

Rduction de Vertex Cover.


k=2 a

d 1 2

B. Estellon - Complexite - Master MINT - U2

Cycle Hamiltonien est NP-complet

Rduction de Vertex Cover.


k=2 a

d 1 2

B. Estellon - Complexite - Master MINT - U2

Voyageur de commerce

tant donn un graphe complet G=(V,E) et une fonction de longueur l : E->N sur les arrtes, trouver un cycle hamiltonien de longueur minimum.
2 3 4

Longueur = 2+4+7+3+2+1 = 19
7 1

Le problme du voyageur de commerce est un problme d'optimisation.


B. Estellon - Complexite - Master MINT - U2

Voyageur de commerce

Le problme du voyageur de commerce est NP-difficile. Rduction de Cycle Hamiltonien :

Considrons un graphe G=(V,E) et construisons une instance du voyageur de commerce. Soit G'=(V,E') le graphe complet construit sur l'ensemble de sommets V. Fixons l(e):=1 si e E et l(e):=2 sinon. Le graphe G' contient un cycle hamiltonien de longueur minimale gale |V| si et seulement si G contient un cycle hamiltonien.
B. Estellon - Complexite - Master MINT - U2

Algorithmes d'approximation

Un algorithme d'approximation avec un facteur (d'approximation) f pour un problme d'optimisation P est un algorithme qui, pour toute instance I de P, retourne en temps polynomial une solution dont le cot est :

Pour les problmes de minimisation, infrieur ou gal f fois celui d'une solution optimale de I.
OPT ALGO fOPT

Pour les problmes de maximisation, suprieur ou gal 1/f fois celui d'une solution optimale de I.
B. Estellon - Complexite - Master MINT - U2

Facteur 2 pour Vertex Cover

Vertex Cover est approximable avec un facteur 2.


Commencer avec un ensemble S vide. Tant qu'il existe des artes non-couvertes Choisir une arte { x, y} non-couverte Ajouter x et y S Supprimer les artes adjacentes x et y Retourner S

Soit n le nombre d'artes choisies par l'algo. Pour une arte choisie, deux sommets sont ajouts S. Donc, ALGO = 2n. Les artes choisies sont deux deux disjointes. Donc, OPT n. ALGO 2OPT
B. Estellon - Complexite - Master MINT - U2

Voyageur de commerce

Si P NP, le problme du voyageur de commerce n'est pas approximable avec un facteur f constant. Rduction de Cycle hamiltonien.

Considrons un graphe G=(V,E) (instance du problme 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 possde un cycle hamiltonien s'il existe un cycle hamiltonien dans G' de cot gal |V|. Sinon tous les cycles hamiltoniens de G' ont un cot suprieur ou gal (f+1)|V|. Donc un algorithme d'approximation avec un facteur f doit retourner une solution de cot :

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

Si P NP, cet algorithme ne peut exister car il dciderait en temps polynomial le problme du cycle hamiltonien.
B. Estellon - Complexite - Master MINT - U2

Voyageur de commerce

Supposons que la fonction de longueur vrifie l'ingalit triangulaire.


b a a+b

Dans ce cas, le problme 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. Construire un cycle C partir de A :

Longueur du cycle C 2 fois le poids de A 2 OPT

Un cycle optimal moins une arte est un arbre couvrant donc, par optimalit de A,

poids de A OPT

B. Estellon - Complexite - Master MINT - U2

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 artes 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, on obtient une complexit en O(n4) !


B. Estellon - Complexite - Master MINT - U2

Couverture d'ensemble (Set Cover)

Une instance du problme Set Cover est forme 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.

Le problme Set Cover consiste trouver une sousfamille S de F de cardinalit minimum qui couvre tous les lments de X (i.e. chaque lment de X est contenu dans au moins un ensemble de S).

B. Estellon - Complexite - Master MINT - U2

Couverture d'ensemble (Set Cover)

Remarque : Set Cover est NP-difficile car Vertex Cover se dduit polynomialement au problme Set Cover
B. Estellon - Complexite - Master MINT - U2

Couverture d'ensemble (Set Cover)

Le problme Set Cover est approximable avec un facteur k lorsque |{sF : xs}| k pour tout xX. Modlisation en PLNE :

Minimiser sFys avec sF : xs ys 1 pour tout xX et ys{0, 1} pour tout sF


B. Estellon - Complexite - Master MINT - U2

Couverture d'ensemble (Set Cover)

Le problme Set Cover est approximable avec un facteur k lorsque |{sF : xs}| k pour tout xX. On relche le programme linaire :

On rsout le programme linaire en temps polynomial.


B. Estellon - Complexite - Master MINT - U2

Minimiser sFys avec sF : xs ys 1 pour tout xX et ys 0 pour tout sF

Couverture d'ensemble (Set Cover)

Le problme Set Cover est approximable avec un facteur k lorsque |{sF : xs}| k pour tout xX. Pour tout xX,

sF : xs ys 1 et |{sF : xs}| k Donc ys' 1/k pour au moins un s'{sF : xs}

Donc S:={sF : ys 1/k} couvre X. De plus, |S| ksFys kOPT


B. Estellon - Complexite - Master MINT - U2

Couverture d'ensemble (Set Cover)

Le problme Set Cover est approximable avec un facteur (ln |X|+1). Algorithme glouton :

UX C Tant que U faire Choisir un s dans F qui maximise |sU| UUs C C {}


B. Estellon - Complexite - Master MINT - U2

Couverture d'ensemble (Set Cover)

Soit si le ime ensemble choisi par l'algo. Si x est couvert pour la premire fois par si, on pose 1
c x := si s1s 2s i1

Soit C* une solution optimale. Nous avons, |C| = xXcx sC*xscx Si, pour tout s de F, xscx H(|s|) alors

|C| sC*H(|S|) |C*|H(|X|) |C*|(ln |X| +1)


B. Estellon - Complexite - Master MINT - U2

Couverture d'ensemble (Set Cover)

Soit sF.

u0 = |s|

Pour tout i, soit ui le nombre d'lments non couverts dans s aprs le choix de si par l'algo. Soit k le plus petit indice i tel que ui=0. Nous avons
1 c x = ui1u i s s s s x s i =1 i 1 2 i1
k

Et pour tout i entre 1 et k, nous avons

ui1=s s1s 2si 1 si s1s2 si1


B. Estellon - Complexite - Master MINT - U2

Couverture d'ensemble (Set Cover)

Par consquent,
k

c x ui 1ui u
x s i=1 b

1
i1

Pour tous entiers a, b avec a infrieur b, on a :

Donc,

1 1 H b H a= ba b i =a1 i

c x H ui1 H ui
x s i=1
B. Estellon - Complexite - Master MINT - U2

= H u 0 H u k = H s

Recherche locale

Le recherche locale est une mta-heuristique utilise pour rsoudre des problmes d'optimisation difficiles. Algorithme de descente par recherche locale :

On dbute avec une solution admissible; Tant qu'il nous reste du temps...

On choisit une transformation locale; Si cette transformation n'augmente pas le cot de la solution courante, on l'effectue.
B. Estellon - Complexite - Master MINT - U2

Recherche locale

Donne en pratique des rsultats intressants pour de nombreux problmes d'optimisation; Pas (ou peu) d'analyse thorique de la qualit des solutions retournes par ces mthodes; Avec un algorithme de descente simple, il est possible de tomber dans des minima locaux. Dans ce cas, on peut

modifier les transformations autorises (i.e. le voisinage); relcher certaines contraintes; adapter la fonction de cot pour mieux guider la recherche; Autoriser la dgradation dans certains cas (recuit simul)

Remarque : il est possible de partir d'une solution obtenue l'aide d'un algorithme d'approximation.
B. Estellon - Complexite - Master MINT - U2

Recherche locale

Dans tous les cas, le fait de tester un grand nombre de transformations ne peut qu'amliorer en pratique l'efficacit de la mthode. Donc, il est important de faire attention la complexit (thorique) de la procdure d'valuation des mouvements. Pour amliorer la rapidit de la descente, il est possible de choisir les transformations en essayant de limiter sa probabilit d'chec. Cette procdure de choix doit avoir une complexit faible pour que l'algorithme reste efficace.
B. Estellon - Complexite - Master MINT - U2

Recherche locale

Application de la recherche locale la coloration :


Cot de la solution : Nombre d'artes avec un conflit.

Voisinage : modifier la couleur d'un sommet Complexit de l'valuation brutale : O(|E|) Complexit d'une valuation incrmentale : O(1)
B. Estellon - Complexite - Master MINT - U2

Recherche locale

Pour cela, on conserve (et on met jour) pour chaque sommet v et pour chaque couleur c, le nombre nc[v][c] de voisins de v ayant la couleur c. Si v a la couleur c et qu'on lui donne la couleur c', alors on sait que le cot de la solution va voluer de nc[v][c'] nc[v][c]. --> Complexit : O(1). Mise jour (si on effectue la transformation) :

Modifier nc[u][c] et nc[u][c'] pour les voisins u de v; Complexit : O(degr(v)).


B. Estellon - Complexite - Master MINT - U2

You might also like