La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Mario MarchandIFT-17588 (Automne 2005)1 Conception et analyse dalgorithme Cours sur Elluminate : Mardi 13h30 à 15h, mercredi 14h à 15h30 Atelier sur Elluminate.

Présentations similaires


Présentation au sujet: "Mario MarchandIFT-17588 (Automne 2005)1 Conception et analyse dalgorithme Cours sur Elluminate : Mardi 13h30 à 15h, mercredi 14h à 15h30 Atelier sur Elluminate."— Transcription de la présentation:

1 Mario MarchandIFT (Automne 2005)1 Conception et analyse dalgorithme Cours sur Elluminate : Mardi 13h30 à 15h, mercredi 14h à 15h30 Atelier sur Elluminate : Vendredi 8h30 à 10h30 Disponibilité de l'enseignant : par courriel en tout temps Site Web :

2 Mario MarchandIFT (Automne 2005)2 Chapitre 9 Lapproche gloutonne (vorace) Suite et fin… Un algorithme glouton construit une solution en effectuant une séquence de décisions. Pour chaque décision: Le choix effectué satisfait les contraintes du problème Le choix effectué est localement optimal Le choix effectué est irrévocable Cest une bonne stratégie lorsque la séquence de décisions, localement optimales, donne une solution globalement optimale ou lorsque lon est satisfait de la « non optimalité » de la solution globale

3 Mario MarchandIFT (A-05), Chapitre 93 Algorithme de Prim Arbre de recouvrement minimal (ARM) dun graphe connexe non orienté est un arbre de recouvrement dont la somme des poids de chacune de ses arêtes est minimale Algorithme de Prim On débute avec un arbre constitué dun seul nœud Un ARM est construit en ajoutant un nœud à la fois à cet arbre À chaque étape, le nœud est choisi de manière gloutonne Cest le nœud, nappartenant pas à larbre, qui est connecté à un nœud de larbre par larête de poids minimal

4 Mario MarchandIFT (A-05), Chapitre 94 Algorithme de Prim (suite) Lalgorithme termine lorsque larbre contient les n nœuds du graphe Lalgorithme effectue donc n – 1 choix gloutons Lalgorithme retourne lensemble des arêtes constituant cet arbre de recouvrement

5 Mario MarchandIFT (A-05), Chapitre 95 Exactitude de lalgorithme de Prim Soit T 0 larbre initial contenant un seul nœud et T i larbre à la fin de la i-ième étape gloutonne de lalgorithme de Prim (contenant i + 1 nœuds). T n-1 est alors larbre final fourni par lalgorithme de Prim Démontrons, par induction, que chaque arbre T i est un sous arbre dun ARM Si cest vrai, alors T n-1 est un ARM T 0 est forcément un sous arbre dun ARM Démontrons par contradiction que pour tout i : si T i-1 est un sous arbre dun ARM, alors il en sera ainsi pour T i

6 Mario MarchandIFT (A-05), Chapitre 96 Exactitude de lalgorithme de Prim Supposons que T i ne soit pas un sous arbre dun ARM mais Par contre, T i-1 est, par hypothèse, un sous arbre dun arbre de recouvrement minimal T Soit e i = (v,u) = larête de poids minimal utilisé par lalgorithme de Prim pour passer de T i-1 à T i Par hypothèse, e i ne peut pas être inclus dans T car sinon T i serait un sous arbre d'un arbre de recouvrement minimal. Lajout de e i à T forme forcément un cycle contenant e i ainsi quune autre arête (v,u) telle que v 2 T i-1 et u T i-1 En enlevant (v,u) nous obtenons un autre ARM T T qui inclut e i et dont le poids total est inférieur ou égal à celui de T car le poids de e i est inférieur ou égal à celui de (v,u). Donc T est forcément un ARM. Alors T i est un sous arbre dun ARM. CQFD

7 Mario MarchandIFT (A-05), Chapitre 97 Analyse de lefficacité de lalgorithme de Prim Le temps dexécution de lalgorithme de Prim dépend de la structure de données utilisée pour la file dattente des nœuds 2 V – V T Utilisons un tas-min pour la file dattente des nœuds 2 V – V T Le nœud u * 2 V – V T ayant la plus faible valeur w u * sera donc toujours au sommet du tas-min et cela prendra un temps 2 O(log(|V – V T |)) pour reconstruire le tas-min après avoir enlevé u * Lorsque lon ajoute un nœud u * à larbre, il faut, pour chaque u 2 V – V T connecté à u *, mettre possiblement à jour w u et v u et reconstruire le tas-min pour chaque u mis à jour Si E u * désigne lensemble des nœuds connectés à u *, cela nécessite un temps 2 O(|E u * | £ log(|V – V T |)) 2 O(|E u * | £ log(|V|)) pour les mis à jour des u 2 V – V T connectés à u * Le temps total requis pour les mis à jours effectuées pour tous les nœuds u * insérés dans larbre sera de O(|E| £ log(|V|)) pour un graphe de |E| arêtes La somme des temps requis pour enlever chacun des |V| - 1 nœuds u * du tas min sera de O((|V|-1) £ log(|V|)) Le temps dexécution total sera donc en O(|E| £ log(|V|)) puisque |E| ¸ |V|-1 pour un graphe connexe

8 Mario MarchandIFT (A-05), Chapitre 98 Algorithme de Kruskal

9 Mario MarchandIFT (A-05), Chapitre 99 Algorithme de Kruskal (suite)

10 Mario MarchandIFT (A-05), Chapitre 910 Lalgorithme de Kruskal Lalgorithme trie dabord, en ordre croissant de leur poids, lensemble E des arêtes dun graphe G = h V,E i connexe Ensuite, en débutant avec E T = ;, lalgorithme ajoute à E T larête e 2 E de poids w e minimal qui ne forme pas de cycle avec les arêtes déjà dans E T Cette arête nest pas nécessairement connectée à une autre arête de E T Lensemble des arêtes de E T constitue alors une forêt (darbres) Cette séquence de choix gloutons se termine lorsque |E T | = |V| – 1 E T deviens alors un arbre (unique) qui recouvre G

11 Mario MarchandIFT (A-05), Chapitre 911 Analyse de lefficacité de lalgorithme de Kruskal Le tri de E nécessite un temps 2 (|E| log |E|) Pour chacun des choix gloutons, nous devons: Choisir le prochain élément e de E (en un temps (1)) Vérifier si e forme un cycle avec un arbre de la forêt F i-1 Pour cela, il faut vérifier si e i = (v,u) est tel que v et u appartiennent au même arbre dans F i-1 (voir figure) Si e ne forme pas de cycle: ajouter e i à F i-1 pour obtenir F i

12 Mario MarchandIFT (A-05), Chapitre 912 Analyse de lefficacité de lalgorithme de Kruskal (suite) Les arbres de la forêt F i-1 forment une collection densembles disjoints: chaque nœud dans F i-1 est élément dun seul arbre Initialement, nous avons |V| ensembles disjoints S 1, S 2, … S |V| où chaque ensemble S i contient un seul nœud de V Ayant choisi larête (v,u) de poids minimal, il faut trouver lensemble S i contenant v et lensemble S j contenant u. On ignore (v,u) et on passe à larête suivante si S i = S j Si non, on fusionne S i avec S j pour obtenir S i [ S j Lalgorithme de Kruskal effectue (exactement) |V| – 1 opérations fusionner car nous avons 1 fusion par arête de larbre de recouvrement minimal Lalgorithme de Kruskal effectue au plus 2 £ |E| opérations trouver car, en pire cas, toutes les arête de E seront examinées. Nous verrons que le total de ces opération trouver et fusionner nécessite un temps O(|V| log |V| + |E|) ou de O(|V| + |E| log |V|) Le temps dexécution total de lalgorithme de Kruskal sera alors dominé par létape du triage de E. Le temps total dexécution sera alors 2 O(|E| log |E|).

13 Mario MarchandIFT (A-05), Chapitre 913 Structures de données pour ensembles disjoints Nous avons un ensemble S de n éléments qui sont distribués, initialement, parmi des ensembles disjoints S 1, S 2, … S n où chaque S i contient initialement un seul élément. Nous effectuerons alors n – 1 opérations fusionner Exemple. Soit S = {1,2,3,4,5,6}. Initialement nous avons les ensembles disjoints: {1}, {2}, {3}, {4}, {5}, {6} Après les opérations fusionner(1,4) et fusionner(5,2), nous avons: {1,4}, {5,2}, {3}, {6} Après les opérations fusionner(4,5) et fusionner(3,6), nous avons: {1,4,5,2}, {3,6} Chaque ensemble sera identifié par un seul de ses éléments, appelé le représentant (de lensemble) Le choix du représentant sera arbitraire Il existe deux principales structures pour ensembles disjoints: La structure trouver-rapide qui optimise lopération trouver La structure fusionner-rapide qui optimise lopération fusionner

14 Mario MarchandIFT (A-05), Chapitre 914 La structure trouver-rapide Maintenons un tableau R[1..n] tel que R[i] est le représentant de lensemble auquel appartient lélément i. Par exemple, pour les ensembles: {1,4,5,2}, {3,6} nous avons: R[1] = 1 R[2] = 1 R[3] = 3 R[4] = 1 R[5] = 1 R[6] = 3 Chaque opération trouver(i) seffectue en temps (1) car il suffit deffectuer la référence R[i] Pour m opérations trouver nécessitent donc un temps (m)

15 Mario MarchandIFT (A-05), Chapitre 915 La structure trouver-rapide (suite) De plus, chaque ensemble est représenté par une liste de pointeurs. Chaque liste contient une en-tête incluant le nombre déléments dans lensemble Tableau R[1..n]

16 Mario MarchandIFT (A-05), Chapitre 916 La structure trouver-rapide (suite) Le temps requis pour effectuer n – 1 opérations fusionner est donné par le nombre total de mis à jour des éléments du tableau R[1..n] Considérons un élément i quelconque. Initialement i est seul dans son ensemble S R[i] Soit A i le nombre de fois que le représentant R[i] sera mis à jour R[i] est (possiblement) mis à jour seulement si S R[i] est fusionné avec un S R[j] tel que |S R[j] | ¸ |S R[i] | La cardinalité de S R[i] augmentera donc au moins dun facteur deux lors de chaque mis à jour de R[i] Initialement |S R[i] | = 1 et, en tout temps, |S R[i] | · n. Le nombre A i de mise à jour doit donc satisfaire 2 A i · n. Alors A i · lg(n). Le nombre total de mis à jour des éléments de R[1..n] est · n lg(n) Le temps requis pour effectuer n – 1 opérations fusionner O(n log n) Conclusion pour la structure trouver-rapide: Lalgorithme de Kruskal nécessite |V| – 1 opérations fusionner et au plus 2 £ |E| opérations trouver. Lalgorithme de Kruskal est en O(|V| log |V| + |E|) si on utilise la structure trouver-rapide pour représenter les forêts F i générées par lalgorithme.

17 Mario MarchandIFT (A-05), Chapitre 917 La structure fusionner-rapide La structure du tableau R[1..n] est celle dune forêt: chaque représentant densemble est le nœud dun arbre et R[i] désigne le parent de i (et non le représentant) Exemple: lorsque R[1..6] = 1, 5, 3, 1, 1, 3 Chaque opération fusion: (1) mettre à jour une seule valeur de R[i] Nous effectuons R[3] Ã 1

18 Mario MarchandIFT (A-05), Chapitre 918 La structure fusionner-rapide (suite) trouver(i) pourrait nécessiter un temps (n) lorsque i est situé au niveau inférieur dun arbre de profondeur n. Il faut donc éviter, le plus possible, de construite des arbres profonds. Pour tenter darriver à cette fin, connectons la racine de larbre le moins profond (à celui de larbre le plus profond) lors de chaque opération fusionner. Théorème: En utilisant cette technique pour fusionner deux ensembles, après une séquence arbitraire dopérations fusionner, tout arbre contenant k nœuds aura une hauteur dau plus b lg(k) c Ainsi m opérations trouver seffectuent en temps O(m log n) Conclusion pour la structure fusionner-rapide: Le temps requis pour effectuer n – 1 opérations fusionner et m opérations trouver est en O(m log n + n) Lalgorithme de Kruskal nécessite |V| – 1 opérations fusionner et au plus 2 £ |E| opérations trouver. Le temps requis pour ces opérations est en O(|E| log |V| + |V|) si lon utilise la structure fusionner-rapide pour représenter les forêts F i générées par lalgorithme de Kruskal.

19 Mario MarchandIFT (Hiver 2005)19 Chapitre 10 Les limites de la puissance algorithmique Après létude de la conception et lanalyse dalgorithmes, nous allons maintenant aborder la complexité du calcul : létude des limites de ce que les algorithmes peuvent accomplir!

20 Mario MarchandIFT (H-05), Chapitre 1020 Plan Complexité des problèmes et les minorants Algorithmes à temps polynomial Problèmes de décision Classe P Lindécidabilité Systèmes de preuves vérifiables (en un temps plynomial) Polynomialement Turing-Réductible (PTR) Classes NP-difficile et NP-complet

21 Mario MarchandIFT (H-05), Chapitre 1021 Introduction Question: Combien dopération élémentaires en pire cas un algorithme doit– il effectuer pour résoudre notre problème? Exemple: combien de comparaisons, en pire cas, nimporte quel algorithme de tri doit-il effectuer pour trier un tableau? On cherche alors une borne asymptotique inférieure (minorant) sur le temps dexécution que doit avoir, en pire cas, nimporte quel algorithme pour résoudre un problème donné On cherche donc la fonction g(n) telle que C worst (n) 2 (g(n)) pour tous les algorithmes possibles (on prend la meilleure borne) Exemple: un algorithme de tri par comparaisons, quel quil soit, doit effectuer (n log n) comparaisons, en pire cas. Un algorithme est dit asymptotiquement optimal lorsque son temps dexécution en pire cas 2 O(g(n)) Lorsque la complexité de lalgorithme coïncide avec celui du problème. La complexité dun problème est la complexité du meilleur algorithme pour le résoudre dans le pire cas. La complexité dun problème nous informe sur le degré doptimalité dun algorithme

22 Mario MarchandIFT (H-05), Chapitre 1022 Minorants triviaux Un minorant trivial est une borne inférieure obtenue en examinant uniquement la taille de la réponse que doit fournir lalgorithme et la quantité déléments dentrée que lalgorithme doit examiner. Ex1: tout algorithme devant générer toutes les permutations de n objets sexécute en temps 2 (n!) car les n! permutations possibles doivent être produites. Ex2: il est de (n 2 ) pour le problème du commis voyageur car nous devons examiner les n(n-1)/2 distances entre les n villes. Mais nous ne connaissons présentement aucun algorithme à temps polynomial en n. Ex3: Multiplication de 2 matrices Calcul direct: n 3 Algorithme de Strassen (1969): n 2.81 Meilleur algorithme connu (Coppersmith-Winograd, 1987 ) : n Il existe une borne inférieure pour ce problème: n 2, l'algorithme doit au moins lire les n 2 entrées de chaque matrice.

23 Mario MarchandIFT (H-05), Chapitre 1023 Minorants informationnels Minorants obtenus en considérant la quantité dinformation quun algorithme doit extraire pour résoudre un problème. Ex: trouver un nombre entre 1 et n en posant le minimum de questions. La meilleure stratégie consiste à poser une question qui divise en deux sous ensembles, de même tailles, le nombre de solutions possibles. Ex1: ton nombre est-il plus petit que d n/2 e ? Ex2: ton nombre est-il impair? Au début : n solutions possibles et, après avoir obtenu la réponse à une question « optimale », il reste d n/2 e solutions possibles. Pire cas : le nombre de solutions restantes est toujours impair. Cest le cas lorsque n = 2 k + 1 (n>1) Après 1 question, il reste d (2 k + 1)/2 e = 2 k solutions possibles Après k questions, il ne reste que solutions possibles Il faut alors k + 1 = lg(n-1) + 1 questions pour trouver la solution. Pour n – 1 = 2 k, on a lg(n-1) + 1 = b lg(n-1) c + 1 = d lg(n) e Nous devons poser d lg(n) e questions en pire cas pour obtenir la solution

24 Mario MarchandIFT (H-05), Chapitre 1024 Minorants informationnels (suite) Problème du tri par comparaisons Pour trier un tableau déléments distincts, nous devons effectuer une seule permutation parmi les n! permutations possibles Lorsque nous comparons deux éléments entre eux, cela élimine la moitié des permutations possibles. Chaque comparaison divise par deux le nombre de solutions possibles. Mais, cette fois-ci, le nombre de solutions possibles est n! Il faut alors d log(n!) e 2 (n log n) comparaisons en pire cas Tout algorithme de tri par comparaisons nécessite donc, en pire cas, (n log n) comparaisons.

25 Mario MarchandIFT (H-05), Chapitre 1025 Minorants informationnels (suite) Problème du tri par comparaisons Exemple. Tableau 3, 2, 4,1 (n=4 éléments) On devrait considérer 4! = 24 permutations, une de ses permutations donne le tri en ordre croissant. Les 24 permutations 1,2,3,4 3,4,1,2 1,2,4,33,4,2,1 1,4,2,33,1,4,2 1,4,3,23,1,2,4 1,3,4,23,2,4,1 1,3,2,43,2,1,4 2,1,4,34,1,2,3 2,1,3,44,2,1,3 2,4,1,34,2,3,1 2,4,3,14,1,3,2 2,3,4,14,3,1,2 2,3,1,44,3,2,1 Si on compare 3 avec 4 (3 doit venir avant 4), on aurait pu éliminer la moitié des 24 permutations (les permutations qui devraient être uniquement considérés sont en vert, rouge): on ne devrait considérer que la moitié = 12 Si on compare maintenant 1 et 2, on ne devrait donc considérer que la moitié des 12 permutations, celles en rouge uniquement: 6 permutation en tout. Si on compare 1 et 3 maintenant, on va encore éliminer la moitié des permutations en rouge, il reste: (1,2,3,4), (1,3,4,2), (1,3,2,4) Si on compare maintenant 2 et 4, il restera: (1,2,3,4) et (1,3,2,4). Si on compare 2 et 3 maintenant, il nous restera alors quune permutation, (1,2,3,4). Cest la permutation recherchée. Il faut bien comprendre le parallèle qui a été fait avec le problème qui a été résolu qui consiste à trouver une nombre entre 1 et n et le tri à base de comparaison pour trouver le minorant correspondant à ce dernier.

26 Mario MarchandIFT (H-05), Chapitre 1026 Algorithmes à temps polynomial Un algorithme solutionne un problème en temps polynomial lorsque son temps dexécution, en pire cas est 2 O(p(n)) où p(n) désigne une fonction polynomiale de n. Note1: t(n) 2 O(p(n)) ssi il existe un entier fini k, indépendant de n, tel que t(n) 2 O(n k ) Note2: log(n) 2 O(n). Les algorithmes dont le temps 2 O(log n) sont des algorithmes à temps polynomial. Même remarque pour les algorithmes dont le temps dexécution 2 O(n log n) … Les problèmes solvables par un algorithme à temps polynomial sont dits traitables (faciles). Cest la majorité des problèmes que nous avons traité jusquici: trier un tableau, trouver le k-ième plus petit élément, trouver larbre de recouvrement minimal… Les problèmes non solvables par un algorithme à temps polynomial sont dits intraitables (difficiles).

27 Mario MarchandIFT (H-05), Chapitre 1027 Types de problèmes Décision (ou vérification). Résultat = vrai ou faux. Exemple trouver si X appartient à un ensemble. Existentiels. Trouver ou produire une donnée qui vérifie une condition. Optimisation. Trouver ou produire une donnée correspondant à l'extrêmum dune fonction (min ou max). Énumération. Trouver ou produire toutes les données qui vérifient une condition. Exemple: tous les chemins entre 2 sommets dans un graphe.

28 Mario MarchandIFT (H-05), Chapitre 1028 Problèmes de décision Un problème peut être intraitable simplement parce que la solution quil doit produire est de trop grande taille Ex: Pour le problème de trouver toutes les permutations de n entiers distincts, lalgorithme doit, au minimum, produire à sa sortie toutes les n! permutations possibles. Alors tout algorithme pour ce problème doit sexécuter en temps (n!). Pour éliminer ces cas (triviaux) d « intraitabilité », considérons les problèmes de décision: les problèmes dont la solution est oui ou non. Exemple: Ayant un graphe connexe G = h V, E i et un nombre k, existe-t-il un arbre de recouvrement dont le poids est au plus k? Lalgorithme solutionnant ce problème doit uniquement répondre oui ou non (pour nimporte quelle instance) Les problèmes doptimisation possèdent un problème de décision qui lui est très relié.

29 Mario MarchandIFT (H-05), Chapitre 1029 La classe P La classe P est lensemble des problèmes de décision qui sont solvables par un algorithme à temps polynomial. Exemple: Le problème de décision précédent est dans P. En effet, pour le solutionner, il suffit dexécuter un algorithme à temps polynomial (comme celui de Kruskal) pour trouver un arbre de recouvrement minimal du graphe G. Soit w la somme des poids de cet arbre. Si w · k, on retourne « oui ». Autrement, on retourne « non ». Est-ce que tous les problèmes de décision sont dans P? Réponse: non! Il existe des problèmes de décision pour lesquels il nexiste aucun algorithme qui puisse les résoudre! (peu importe leur temps dexécution)

30 Mario MarchandIFT (H-05), Chapitre 1030 Limportance de la classe P En général, on considère que les problèmes dans P sont des problèmes pour lesquels il existe un algorithme efficace. (Mais on exagère…) Certainement, si un problème nest pas dans P, alors il nexiste pas dalgorithme efficace pour le résoudre. Que contient P? Malheureusement, on ne le sait pas précisément! Une liste partielle existe dans tous les livres dalgorithmique… Opérations sur les entiers, algèbre matricielle, problèmes de tri, construction dun arbre de recouvrement etc.

31 Mario MarchandIFT (H-05), Chapitre 1031 Indécidabilité Un problème est dit indécidable lorsquil nexiste aucun algorithme qui puisse le résoudre. Exemple: Le problème de larrêt (proposé par Alan Turing en 1936): Soit un programme informatique et une entrée à ce programme, déterminez si ce programme va terminer sur cette entrée ou continuer à exécuter indéfiniment. Théorème: le problème de larrêt est indécidable. Preuve (par contradiction): Soit un algorithme A qui résout le problème de larrêt. Dans ce cas, pour tout programme P et entrée E, nous avons: Lindécidabilité est une forme d« intraitabilité » définitive. Lorsquun problème est indécidable, il nexiste pas dalgorithme qui puisse le résoudre. (peu importe son temps dexécution)

32 Mario MarchandIFT (H-05), Chapitre 1032 Problèmes (présentement) intraitables mais décidables Il existe plusieurs problèmes décidables qui sont présentement solvables uniquement par un algorithme à temps supra polynomial Ces problèmes sont donc « présentement intraitables » mais ils pourraient éventuellement devenir « traitables » si lon trouve un algorithme à temps polynomial pour les résoudre Exemples: Cycle hamiltonien: déterminez si un graphe connexe (non orienté) possède un cycle hamiltonien (un cycle parcourant chaque sommet une seule fois) Commis voyageur: trouver le circuit de longueur minimal parcourant n villes. Chaque paire de villes est connectée par une arête de distance entière. Sac à dos: parmi n objets, trouvez le sous-ensemble de valeur totale maximale dont le poids total nexcède pas la capacité du sac à dos. Et plusieurs autres…

33 Mario MarchandIFT (H-05), Chapitre 1033 Vérification dune solution proposée Cycle hamiltonien est un problème de décision. Les deux autres sont des problèmes doptimisation. Voici leur versions décisionnelles: Commis voyageur décision: Soit n villes et un entier d. Existe-t-il un circuit de longueur au plus d qui parcourt les n villes? Sac à dos décision: Soit n objets avec poids w 1,..., w n, et valeurs v 1, …, v n, et un sac à dos de capacité W et un nombre V. Existe-t-il un sous ensemble de ces objets tel que le poids total est au plus W et tel que la valeur totale est au moins V. Ces problèmes ont en commun le fait quil est facile de vérifier si une solution proposée (ou candidate) est une solution valide au problème. Exemple: pour vérifier si une liste de nœuds est un cycle hamiltonien dun graphe de n nœuds, il suffit de vérifier que cette liste possède n + 1 nœuds les n premiers nœuds sont distincts le dernier nœud est identique au premier chaque paire de nœuds consécutifs est reliée par une arête. Cette vérification seffectue en temps polynomial en la taille du graphe.

34 Mario MarchandIFT (H-05), Chapitre 1034 Certificats succincts et systèmes de preuves Une solution proposée pour une instance x « oui » est dit un certificat, i.e., une preuve que x est une instance « oui ». Le certificat est dit succinct lorsque sa taille est polynomiale. À un problème de décision correspond X un ensemble dinstances « oui » x 2 X lorsque x est une instance « oui » Soit Q lensemble des certificats possibles pour un problème X Un système de preuves pour X est un ensemble F µ X £ Q de paires (x,q) tel que nous avons: 8 x 2 X, 9 q 2 Q : (x,q) 2 F En plus dun système de preuve F pour X, il faut pouvoir vérifier quune paire (x,q) 2 F. Il faut donc un algorithme de vérification.

35 Mario MarchandIFT (H-05), Chapitre 1035 Algorithmes de vérification Un algorithme de vérification pour un système de preuves F µ X £ Q dun problème de décision X est un algorithme A tel que: A(x,q) = 1 lorsque (x,q) 2 F Lorsque (x,q) F, A peut retourner 0 ou exécuter indéfiniment. Un système de preuves muni dun algorithme de vérification est appelé un système de preuves vérifiables. Un algorithme de vérification A(x,q) est à temps polynomial ssi son temps dexécution est 2 O((|x|+|q|) k ) pour une constante k. Ainsi, un algorithme de vérification à temps polynomial pour un système de preuves F µ X £ Q dun problème de décision X est un algorithme A tel que: A(x,q) termine en un temps 2 O((|x|+|q|) k ) pour une constante k. A(x,q) = 1 si (x,q) 2 F A(x,q) = 0 si (x,q) F

36 Mario MarchandIFT (H-05), Chapitre 1036 La classe NP La classe NP est lensemble des problèmes de décision qui admettent un système de preuves succinctes vérifiables en temps polynomial. Théorème: P µ NP. Les problèmes suivants sont tous dans NP. Cycle hamiltonien, Commis voyageur décision, Sac à dos décision Pour prouver cela il suffit de démonter quils possèdent tous un système de preuves succinctes vérifiables en temps polynomial. Exemple du Cycle hamiltonien: le système de preuves est lensemble de paires (g, ) où g est un graphe hamiltonien et est une liste de nœuds. Lalgorithme de vérification A(g, ) na quà parcourir et vérifier: Si chaque paire de nœuds consécutifs dans cette liste est une arête appartenant à g. Si cette liste comprends n+1 nœuds avec n = nombre de nœuds de g. Si le premier nœud de cette liste est le même que le dernier nœud. Si les n premiers nœuds sont distincts. Cette vérification nécessite uniquement un temps polynomial en |g|+| |.

37 Mario MarchandIFT (H-05), Chapitre 1037 La classe NP NP signifie « Nondeterministic Polynomial-time » : si, pour une instance x 2 X, nous obtenons, de manière « non déterministe », une preuve q (que x 2 X), nous pouvons vérifier ce fait en temps polynomial (à laide dun algorithme de vérification). En dautres mots, le non déterministe réside dans le fait que lon peut supposer quune solution peut être « devinée » par un moyen quelconque. Intuitivement, les problèmes dans NP sont tous des problèmes qui peuvent être résolus en énumérant lensemble des solutions possibles et en les testant avec des algorithmes en temps polynomial. Pour déterminer si un problème est dans NP, il suffit de le réduire à un problème de décision. Ensuite, si par un algorithme en temps polynomial on arrive à vérifier une solution « oui » du problème, alors le problème est dans NP.

38 Mario MarchandIFT (H-05), Chapitre 1038 Exemples de problèmes dans NP (suite) Cycle hamiltonien, Commis voyageur décision, Sac à dos décision Ces 3 problèmes suivants sont donc dans NP mais nous ne savons pas sils sont dans P car, en dépit de nombreuses années deffort, nous navons toujours pas trouvé dalgorithmes à temps polynomiaux pour les résoudre et nous navons pas encore pu démontrer que ces problèmes ne peuvent pas être résolus en temps polynomial. La vaste majorité des problèmes de décision (bien posés) se trouvent dans NP. Cest donc une vaste classe de problèmes. Lexemple le plus connu dun problème de décision qui nest pas dans NP est le problème de larrêt: Théorème: le problème de larrêt nest pas dans NP. Nous savons que P µ NP et que tous les problèmes de NP sont résolubles par un algorithme qui, au pire, est à temps exponentiel. Mais existe-t-il des problèmes de NP qui ne sont pas dans P? En dautres mots: Est-ce que P NP ou bien P = NP ? Personne de connaît la réponse à cette question! Il sagit de la question ouverte la plus importante en informatique!

39 Mario MarchandIFT (H-05), Chapitre 1039 Polynomialement Turing-réductible Pour définir la classe NP-complets, introduisons le concept suivant: Un problème A est polynomialement Turing-réductible (PTR) à un problème B ssi il existe un algorithme à temps polynomial A pour résoudre A qui utilise, à coût unitaire, un algorithme B pour résoudre B. Réductibilité : un problème X peut être ramené (réduit) à un autre problème X si une instance quelconque de X peut être facilement reformulée comme une instance de X dont la solution sera aussi solution pour X. La conséquence importante de la réductibilité de A à B est que : si lon peut montrer que A est dans NP alors B lest aussi si lon peut montrer que B est dans P alors A lest aussi De façon générale, si lon sait résoudre efficacement un problème, il est fréquent quon puisse en résoudre bien dautres Exemple : Le problème de coloration de graphe permet de modéliser, moyennant quelques modifications, aussi bien les problèmes de coloration de carte que des problèmes daffectation de ressources.

40 Mario MarchandIFT (H-05), Chapitre 1040 Problèmes NP-complets et NP-difficiles Un problème A est NP-difficile ssi tout problème dans NP est PTR à A. Un problème est NP-difficile sil est au moins aussi difficile que tous les autres problèmes dans NP. Donc, si un problème NP-difficile est résoluble en temps polynomial, alors tous les problèmes de NP seront résolubles en temps polynomial (et donc P = NP). Un problème de décision X est NP-complet ssi: X est dans NP et X est NP-difficile Les problèmes NP-complets sont donc les problèmes de NP qui sont les plus « intraitables ». Le fait de démontrer quun problème A est NP-complet donne un fort indice de son intraitabilité car un algorithme à temps polynomial pour résoudre A pourrait résoudre, en temps polynomial, tous les problèmes de NP. Le théorème suivant sert à démontrer quun problème est NP-difficile Théorème: sil existe un problème NP-difficile A (ou NP-complet) qui est PTR à un problème B, alors B est NP-difficile.

41 Mario MarchandIFT (H-05), Chapitre 1041 Problèmes NP-complets et NP-difficiles (suite) Pour le 1er problème NP-difficile, il a fallu démontrer que tous les problèmes de NP sont réductibles en temps polynomial à ce problème! Ce tour de force fut réalisé indépendamment par Stephen Cook en 1971 et par Leonid Levin en Cook démontra que CNF-SAT est NP-complet. Une expression booléenne CNF (de forme normale conjonctive) est de la forme (une CNF dordre 3): (x 1 Ç : x 2 Ç : x 3 ) Æ ( : x 1 Ç x 2 ) Æ ( : x 1 Ç : x 2 Ç : x 3 ) CNF-SAT est le problème qui consiste à déterminer si, oui ou non, une expression CNF est satisfaite (i.e. est « vrai ») par une certaine assignation aux variables dentrée x i Exemple lexpression CNF ci-haut est satisfaite par lassignation (x 1, x 2, x 3 ) = (vrai, vrai, faux). La preuve que tous les problèmes de NP sont réductibles en temps polynomial à CNF-SAT est un chef-dœuvre (et dépasse largement les objectifs du cours…)

42 Mario MarchandIFT (H-05), Chapitre 1042 Que faire lorsque cest NP-Complet? De nombreux problèmes dintérêt pratique sont NP-Complets et sont trop important pour les ignorer. Lorsque notre problème doptimisation est NP-Complet, nous pouvons tenter de trouver une solution quasi-optimale (à la place dune solution optimale). Le prochain chapitre traite des approches algorithmiques nous permettant de trouver des solutions non optimales mais qui peuvent parfois être très satisfaisantes. Exemples de problèmes NP-Complets CNF-SAT Coloriage de graphes Existence dune clique de taille k dans un graphe. Le pb du sac à dos (non entier). Le pb de lexistence dun circuit hamiltonien. Le pb du voyageur de commerce. Etc…

43 Mario MarchandIFT (H-05), Chapitre 1043 Les différents ensembles de complexité

44 Mario MarchandIFT (H-05), Chapitre 1044 Activités dans la semaine Lectures. Livre de Levitin: Chapitre 11, sections 11.1, 11.2 et 11.3 Diapos à visionner: chapitre 10 Exercices: série 8, Exercices # 5, 7, 8, 9 et 10 Exercices: série 9 Exercices # 1, 2, 3, 4, 6, 7 et 8. Documentation fournie Aide mémoire (celui fourni lors des examens) Annexe A du livre de Levitin (enrichi…)


Télécharger ppt "Mario MarchandIFT-17588 (Automne 2005)1 Conception et analyse dalgorithme Cours sur Elluminate : Mardi 13h30 à 15h, mercredi 14h à 15h30 Atelier sur Elluminate."

Présentations similaires


Annonces Google