Académique Documents
Professionnel Documents
Culture Documents
Introduction
Informatique ?
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 :
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
Algorithmes de tri
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.
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 :
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.
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
Codage de l'information
Des nombres entiers, rationnels... Des caractres, du texte, Des images, Du son, Des adresses mmoires, Des programmes informatiques...
Nombres entiers
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
Nombres virgule flottante = approximation des rels. Un nombre virgule flottante possde :
(-1) x m x 2
e-x
s x m x 2e - 127 s x m x 2e - 1023
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
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 :
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
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
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
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
Machine de Turing
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.
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
...
...
Exercice 1
crire une machine de Turing qui effectue le complment d'un nombre binaire.
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.
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.
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 :
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
Manipulations de registres : Adresse direct, indirect des registres, etc. Oprations arithmtiques,
Modle RAM
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
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
Dcidabilit
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 .
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
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.
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
Introduction la complexit
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.
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.
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)
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 :
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
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
Rsultat
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
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.
Exercice 5
Proprits
Donner un algorithme en O(2nbProprits nbObjets nbProprits). Donner un algorithme en O(2nbObjets nbObjets nbProprits).
Classe P
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
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.
Classe 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.
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
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.
2SAT
calcul de l'affectation admissible
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
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.
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).
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.
=> 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
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 :
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
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
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 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
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
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
Tri rapide
12
10
18
Tri rapide
QuickSort :
Choisir un pivot Partitionner autour de ce pivot Trier les deux parties avec la mme mthode
12
10
18
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.
Borne infrieure
(log k) = (log n!) = (n log n)
K = n!
Formule de Stirling :
Exercices :
crire le programme Java qui implmente ce tri. Quelle est la complexit du tri par dnombrement ?
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.
temps
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
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.
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
L'algorithme glouton :
La solution optimale :
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 :
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}
Complexit : O(n x S)
Algorithme pseudo-polynomial
10 10
en temps O(n + S)
10 10
Classe NP
Classe NP
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
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 :
Classe NP
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
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
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
Rduction
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.
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 :
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
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 :
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
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 ?
Gadget variable
Gadget clause
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
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
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.
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 ?
Le gadget arte :
d 1 2
d 1 2
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
Voyageur de commerce
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
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.
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 :
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
Voyageur de commerce
Un cycle optimal moins une arte est un arbre couvrant donc, par optimalit de A,
poids de A OPT
Voyageur de commerce
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)
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).
Remarque : Set Cover est NP-difficile car Vertex Cover se dduit polynomialement au problme Set Cover
B. Estellon - Complexite - Master MINT - U2
Le problme Set Cover est approximable avec un facteur k lorsque |{sF : xs}| k pour tout xX. Modlisation en PLNE :
Le problme Set Cover est approximable avec un facteur k lorsque |{sF : xs}| k pour tout xX. On relche le programme linaire :
Le problme Set Cover est approximable avec un facteur k lorsque |{sF : xs}| k pour tout xX. Pour tout xX,
Le problme Set Cover est approximable avec un facteur (ln |X|+1). Algorithme glouton :
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
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
Par consquent,
k
c x ui 1ui u
x s i=1 b
1
i1
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
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) :