280 likes | 404 Views
Maîtrise IUP-NTIC Algorithmique des Graphes Année 4 – Semestre 1. Christophe PAOLI 2005 - 2006 Université de Corse christophe.paoli@univ-corse.fr. Résumé. Intérêt et Utilisation des graphes Définition et Terminologie Représentation des graphes Parcours des graphes Parcours en largeur
E N D
Maîtrise IUP-NTIC Algorithmique des GraphesAnnée 4 – Semestre 1 Christophe PAOLI 2005 - 2006 Université de Corse christophe.paoli@univ-corse.fr
Maitrise IUP NTIC | Algo. des Graphes | christophe.paoli@univ-corse.fr Résumé • Intérêt et Utilisation des graphes • Définition et Terminologie • Représentation des graphes • Parcours des graphes • Parcours en largeur • Parcours en profondeur • Description des algorithmes • Analyse des algorithmes • Tri topologique • Présentation et analyse de l’algorithme
Maitrise IUP NTIC | Algo. des Graphes | christophe.paoli@univ-corse.fr Objectifs • Objectifs de ce cours • Arbres couvrant de poids minimum • Cas d’utilisation • Deux algorithmes gloutons • Algorithme de Krushal • Algorithme de Prim • Exécution des algorithmes sur un exemple
Maitrise IUP NTIC | Algo. des Graphes | christophe.paoli@univ-corse.fr Plan de cours • Intérêt et Utilisation des graphes • Définition et Terminologie • Représentation des graphes • Représentation matricielle • Liste d’adjacence • Parcours des graphes • Parcours en largeur • Parcours en profondeur • Tri topologique • Arbres couvrant de poids minimum • Problème du plus court chemin • NP-Complétude
Les graphes Arbres couvrants de poids minimum
Maitrise IUP NTIC | Algo. des Graphes | christophe.paoli@univ-corse.fr Arbres couvrants de poids minimum • Utilisation • Conception de circuits électroniques • Relier des broches de composants équivalents • Interconnexion d’un ensemble de n broches • Pour n broches, n-1 branchements • Problème • Trouver l’arrangement qui utilise le branchement minimale • Modélisation du problème à l’aide d’un graphe non orienté connexe • G(S,A), S : ensemble des broches, A: ensemble des interconnexions possibles • Pour chaque arête (u,v) A, on a un poids w (u,v) : coût pour connecter u et v • Trouver un sous-ensemble acyclique T A qui connecte tous les sommets et dont le poids total soit minimum
Maitrise IUP NTIC | Algo. des Graphes | christophe.paoli@univ-corse.fr Arbres couvrants de poids minimum • T est acyclique et connecte tous les sommets • il forme un arbre, que l’on appelle arbre couvrant : il couvre le graphe G • Problème de la détermination de l’arbre T • Problème de l’arbre couvrant minimal • Examen de 2 algorithmes gloutons : une option doit être choisie à chaque étape • algorithme de Krushal, O(A log S) • algorithme de Prim, O(A log S)
Maitrise IUP NTIC | Algo. des Graphes | christophe.paoli@univ-corse.fr Arbres couvrants de poids minimum • Exemple d’arbre couvrant minimum pour un graphe connexe • poids sur les arêtes • poids total de l’arbre (en gris) = 37 • arbre non unique : on peut remplacer (b,c) par (a,h)
Maitrise IUP NTIC | Algo. des Graphes | christophe.paoli@univ-corse.fr Arbres couvrants de poids minimum • Algorithmes de Krushal et de Prim suivent une stratégie gloutonne • l’arbre pousse arête par arête • détermination à chaque étape d’une arête (u,v) sûre • E {(u,v)} est =ment un ACM • Clé de voûte de l’algorithme : ligne 3
Maitrise IUP NTIC | Algo. des Graphes | christophe.paoli@univ-corse.fr Arbres couvrants de poids minimum • Définitions • la coupe (P,S-P) d’un graphe non orienté G=(S,A) est une partition de S • l’arrête (u,v) A traverse la coupe (P,S-P) si une des extrémités est un sommet de P et l’autre un sommet de S-P • une coupe respecte un ensemble E d’arêtes si aucune arête de E ne traverse la coupe • une arête est minimale pour la traversée de la coupe si son poids est minimale parmi toutes les arêtes traversant la coupe
Maitrise IUP NTIC | Algo. des Graphes | christophe.paoli@univ-corse.fr Arbres couvrants de poids minimum • Sommet de P en noir, de S-P en blanc • arête de traverse relie sommets blanc à noir • 1 seule arête minimale : (d,c) • sous ensemble E en gris • la coupe (S,V-S) respecte E
Maitrise IUP NTIC | Algo. des Graphes | christophe.paoli@univ-corse.fr Arbres couvrants de poids minimum • Théorème • Soit G(S,A) un graphe non orienté connexe, avec une fonction de pondération w à valeurs réelles définie sur A. • Soit E un sous-ensemble de A inclus dans un arbre couvrant minimum de G, • soit (P,S-P) une coupe de G qui respecte E, et soit (u,v) une arête minimale traversant (P,S-P). • Alors (u,v) est une arête sûre pour E.
Maitrise IUP NTIC | Algo. des Graphes | christophe.paoli@univ-corse.fr Arbres couvrants de poids minimum • Corollaire • Soit G = (S,A) un graphe non orienté connexe, avec une fonction de pondération w à valeurs réelles définie sur A. • Soit E un sous-ensemble de A inclus dans un arbre couvrant minimum de G, • soit C, une composante connexe (arbre) de la forêt GE = (S,E). • Si (u,v) est une arête minimale reliant C à une autre composante connexe, • alors (u,v) est une arête sûre pour E.
Maitrise IUP NTIC | Algo. des Graphes | christophe.paoli@univ-corse.fr Arbres couvrants de poids minimum • Algorithmes Krushal et Prim • Élaborés à partir de l’algorithme générique • Utilisant chacun une règle spécifique pour déterminer l’arête sûre • Krushal : l’ensemble E est une forêt, et l’arête sûre ajoutée à E est toujours une arête de moindre poids du graphe qui relie 2 composantes distinctes • Prim : l’ensemble E est un arbre, et l’arête sûre ajoutée à E est toujours une arête de moindre poids qui relie l’arbre à un sommet extérieur
Maitrise IUP NTIC | Algo. des Graphes | christophe.paoli@univ-corse.fr Arbres couvrants de poids minimum • Algorithme de Kruskal • inspiré de l’algorithme générique • trouve une arête sûre à ajouter à la forêt, en cherchant une arête (u,v) de poids minimal parmi toutes les arêtes reliant 2 arbres qcq de la forêt • soient C1 et C2, les 2 arbres reliés par (u,v) • comme (u,v) est une arête minimal reliant les 2 arbres, le corollaire implique que (u,v) est sûre pour C1 • Algorithme de Kruskal = Algorithme glouton • il ajoute à la forêt une arête de poids minimal
Maitrise IUP NTIC | Algo. des Graphes | christophe.paoli@univ-corse.fr Arbres couvrants de poids minimum • Algorithme de Kruskal • utilisation d’une structure de données d’ensembles disjoints • chaque ensemble contient les sommets d’un arbre de la forêt courante • Trouver-Ensemble (u) retourne un élément représentatif • Union(u) combine les arbres
Maitrise IUP NTIC | Algo. des Graphes | christophe.paoli@univ-corse.fr Arbres couvrants de poids minimum • Lignes 1-3 • initialisation de l’ensemble E • création de |S| arbres • Ligne 4 • tri des arêtes selon leur poids • Lignes 5-8 • test pour chaque arête (u,v) si les extrémités arbre • si Oui (u,v) ne peut être ajoutée à l’arbre cycle • sinon l’arête est ajoutée à E et les sommets sont fusionnés
Maitrise IUP NTIC | Algo. des Graphes | christophe.paoli@univ-corse.fr Arbres couvrants de poids minimum
Maitrise IUP NTIC | Algo. des Graphes | christophe.paoli@univ-corse.fr Arbres couvrants de poids minimum
Maitrise IUP NTIC | Algo. des Graphes | christophe.paoli@univ-corse.fr Arbres couvrants de poids minimum • Algorithme de Kruskal • Analyse de l’algorithme • le temps d’exécution dépend de l’implémentation de la structure d’ensembles disjoints • forêts d’ensembles disjoints • O(A log S)
Maitrise IUP NTIC | Algo. des Graphes | christophe.paoli@univ-corse.fr Arbres couvrants de poids minimum • Algorithme de Prim • inspiré de l’algorithme générique • ressemble à l’algorithme de Disjkstra • Recherche du plus court chemin • les arêtes de E constituent un arbre • l’arbre démarre d’un sommet racine r puis croît jusqu’à couvrir tous les sommets S • une arête minimale est ajoutée à l’arbre E • Algorithme de Prim = Algorithme glouton • l’arbre est augmenté d’une arête qui accroît le moins possible le poids total de l’arbre
Maitrise IUP NTIC | Algo. des Graphes | christophe.paoli@univ-corse.fr Arbres couvrants de poids minimum • Implémentation de l’algorithme de Prim • Faciliter la sélection de la nouvelle arête à ajouter à l’arbre constitué des arêtes de E • Tous les sommets qui à l’arbre sont dans une file de priorités min F basé sur le champ clé • pour chaque sommet v, clé[v] est le poids minimal d’une arête reliant v à un sommet de l’arbre • convention • clé[v] = si un telle arête n’existe pas • [v] désigne le parent de v dans l’arbre
Maitrise IUP NTIC | Algo. des Graphes | christophe.paoli@univ-corse.fr Arbres couvrants de poids minimum • Algorithme de Prim • l’ensemble E est conservé implicitement dans à travers [v] • quand l’algorithme se termine minFest vide
Maitrise IUP NTIC | Algo. des Graphes | christophe.paoli@univ-corse.fr Arbres couvrants de poids minimum • Lignes 1-5 • initialisation des clés • initialisation des parents • initialisation de la clé du sommet à 0 1ère traitée • initialisation de F contient tous les sommets • ligne 7 • identification du futur sommet • Lignes 8-11 • mise à jour des champs clé et
Maitrise IUP NTIC | Algo. des Graphes | christophe.paoli@univ-corse.fr Arbres couvrants de poids minimum
Maitrise IUP NTIC | Algo. des Graphes | christophe.paoli@univ-corse.fr Arbres couvrants de poids minimum
Maitrise IUP NTIC | Algo. des Graphes | christophe.paoli@univ-corse.fr Arbres couvrants de poids minimum • Algorithme de Prim • Analyse de l’algorithme • le temps d’exécution dépend de l’implémentation de la file min F • tas binaire • O(A log S)
Maitrise IUP NTIC | Algo. des Graphes | christophe.paoli@univ-corse.fr Pour terminer … • Objectifs de ce cours • Arbres couvrant de poids minimum • Cas d’utilisation • Deux algorithmes gloutons • Algorithme de Krushal • Algorithme de Prim • Exécution des algorithmes sur un exemple • La prochaine fois • Problème du plus court chemin • NP-Complétude