Slides:



Advertisements
Présentations similaires
7. Probème de flot à coût minimum.
Advertisements

Introduction à la Théorie des graphes
La recherche de chemin optimal
Théorie des graphes.
La théorie du monde est petit
Dans cette partie Graphes Eulériens.
Algorithmes et structures de données avancées Cours 7
Algorithmes et structures de données avancés
Introduction à la Théorie des graphes
Cours d’Algorithmique
A.Faÿ 1 Recherche opérationnelle Résumé de cours.
Recherche Opérationnelle
Chapitre VIII. Introduction aux graphes
Plus courts chemins On présente dans ce chapitre un problème typique de cheminement dans les graphes : la recherche d'un plus court chemin entre deux sommets.
Algorithme de Dijkstra
Algorithmes Branch & Bound
Heuristiques A. Introduction B. Recherche d ’une branche
Théorie des graphes Un peu de vocabulaire.
LES ARBRES IUP 2 Génie Informatique
Algorithme de Bellman-Ford
Structures de données IFT-2000
Structures de données IFT-2000
Structures de données IFT-2000
Structures de données IFT-10541
Structures de données IFT-2000
Coloration gap sommet identifiante de graphes
7. Problème de flot à coût minimum.
IFT Complexité et NP-complétude


Algorithmes d ’approximation
Deux méthodes incrémentales pour le maintien dun arbre de connexion Nicolas Thibault Christian Laforest
Recherche Opérationnelle
21 février 2006Cours de graphes 2 - Intranet1 Cours de graphes Les plus courts chemins, les chemins les plus légers : à laide de la vague, à laide de la.
Les Algorithmes de Tri Introduction Tri par Sélection
Structures de données IFT-2000 Abder Alikacem La récursivité Semaine 5 Département dinformatique et de génie logiciel Édition Septembre 2009.
Structures de données IFT-2000
8INF8061 Conception et analyse des algorithmes Comment comparer deux problèmes?
Pour le chemin le plus court pour tous les couples
Programmation linéaire en nombres entiers : les méthodes de troncature
Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK.
Structures de données IFT-2000 Abder Alikacem La récursivité Département d’informatique et de génie logiciel Édition Septembre 2009.
Structures de données IFT-10541
IFT Complexité et NP-complétude Chapitre 0 Rappels.
Heuristiques C. Recherche de la meilleure branche . Branch And Bound
Quelques exemples de nombre chromatique d’un graphe.
Graphes 1. Introduction 2. Définition 3. Représentation mémoire
Dév. d’application interactive III Recherche de chemin.
Arbres et graphes.
D.E ZEGOUR Ecole Supérieure d’Informatique
GRAPHES EN INFORMATIQUE. INTRODUCTION Les objets mathématiques appelés graphes apparaissent dans de nombreux domaines comme les mathématiques, la biologie,
On cherche le plus court chemin de E à S sur le graphe suivant :
Tutorat 7 - Introduction au Routage et OSPF
Programmation linéaire en nombres entiers
Algorithmes Branch & Bound
Licence Informatique Algorithmique des graphes
IN302 – Chapitre 2 Arbres et arborescences. Isthmes Composantes connexes : 2.
Problème de double digestion
Programmation fonctionnelle Preuve
6. Problème de flot à coût minimum.

Ajouts et retraits dans un arbre de connexion Nicolas Thibault et Christian Laforest, Équipe OPAL Laboratoire IBISC (regroupement LaMI et LSC), Évry 8.
Algorithme de DIJKSTRA
Sixième étape : pondérer les graphes. Longueur d’une chaîne d’un graphe quelconque = nombre des arêtes qui la constituent. Distance entre deux sommets.
CSI2510 Structures de données et algorithmes Plus court chemin
CSI2510 Structures de données et algorithmes Arbres couvrants minimaux
Introduction à la Théorie des graphes
Algorithmes Branch & Bound Module IAD/RP/RO Master d ’informatique Paris 6 Philippe Chrétienne.
Cycle, Cocycle, Arbre et Arborescence
Chapitre 3 Problèmes de Cheminement
Transcription de la présentation:

Structures de données IFT-2000 2704 Abder Alikacem Arbres de recouvrement minimum 867 BOS 849 PVD ORD 187 740 144 1846 621 JFK 184 1258 802 SFO 1391 BWI 1464 337 1090 DFW 946 LAX 1235 1121 MIA Édition Septembre 2009 2342 Département d’informatique et de génie logiciel

Arbres couvrant de poids minimum Introduction  Imaginons que nous ayons à connecter des villes entre elles, par exemple avec un nouveau réseau très haut débit. Un certains nombre de connexions directes point à point entre les villes sont techniquement possibles. Il nous faut choisir lesquelles parmi ces connexions nous allons effectivement mettre en place. La distance entre 2 villes dans le réseau final a peu d'importance au vu des débits; cependant les coûts d'installation du réseau ne sont évidemment pas les mêmes pour les différentes liaisons point à point. Nous aimerions donc déterminer comment connecter toutes les villes en minimisant le coût total du réseau.

Arbres couvrant de poids minimum Ce problème en théorie des graphes correspond à la recherche d'un arbre couvrant de poids minimum. L'ensemble des connexions potentielles peut être représenté par un graphe G = (X,U) dans lequel chaque arête u est associée à un coût poids(u) positif. Connecter toutes les villes correspond à sélectionner un ensemble d'arêtes F de G tel que le graphe partiel H = (X,U’) induit est connexe. Le poids de cette solution poids(H) est définie comme la somme des poids de ses arêtes. Notre problème s'énonce donc : Etant donné un graphe G = (X,U), déterminer un graphe partiel connexe H = (X,U’) de poids minimum Il est facile de voir qu'un tel graphe partiel H doit être un arbre : si H n'est pas acyclique, on peut supprimer une arête d'un de ses cycles sans le déconnecter et en faisant diminuer le poids total.

Arbres couvrant de poids minimum Définition Un arbre couvrant pour un graphe G=(X,U) est un arbre construit uniquement à partir des arêtes de U et qui connecte ("couvre") tous les sommets de X. Un arbre couvrant d'un graphe G est donc un graphe T tel que Le graphe T est un arbre. Le graphe T est un graphe partiel de G. Le problème de l'arbre couvrant de poids minimum consiste à trouver un arbre couvrant dont la somme des poids poids(u) des arêtes est minimum.

Arbres couvrant de poids minimum La seule condition, nécessaire et suffisante, pour qu'un graphe admette un arbre couvrant est qu'il soit connexe. Un arbre couvrant de poids minimum (MST, Minimum Spanning Tree) est en général différent de l'arbre des plus courts chemins (SPT, Shortest Paths Tree) construit par l’algorithme de Dijkstra. Un arbre des plus courts chemins SPT est bien un arbre couvrant, mais il minimise la distance de la racine à chaque sommet. Alors qu’un arbre couvrant de poids minimum MST est forcément non orienté et calcule la somme des poids des arêtes.   Un arbre des plus courts chemins (SPT) Un arbre de poids minimum (MST) de racine A Son poids total est 14 Son poids total est 10

Arbres couvrant de poids minimum Il existe 2 algorithmes célèbres pour résoudre le problème de l'arbre couvrant de poids minimum MST. Chacun de ces 2 algorithmes utilise plus particulièrement l'une des caractérisations des arbres pour trouver un MST : soit en considérant les arbres comme des graphes connexes avec le minimum d'arêtes, soit en considérant les arbres comme des graphes acycliques avec le maximum d'arêtes. Ces 2 algorithmes utilisent également 2 techniques de résolution très différentes : Algorithme de Prim Il maintient au fur et à mesure de la construction un sous-graphe connexe qui grossit petit à petit. Algorithme de Kruskal Il maintient au fur et à mesure de la construction un graphe partiel acyclique. Si les algorithmes de recherche sont spécifiques aux graphes, l'algorithme de Kruskal utilise lui un paradigme de résolution plus général : les algorithmes gloutons.

Arbres couvrant de poids minimum Algorithme de Kruskal  Le principe de l'algorithme de Kruskal pour trouver un arbre de poids minimum dans un graphe G est tout d'abord de trier les arêtes par ordre croissant de leur poids. Ensuite, dans cet ordre, les arêtes sont ajoutées une par une dans un deuxième graphe pour construire progressivement l'arbre. Une arête est ajoutée seulement si son ajout dans l’arbre n'introduit pas de cycle. Sinon, on passe à l'arête suivante dans l'ordre du tri. A la fin de la construction de l’arbre, si le nombre d’arêtes de l’arbre est inférieur au nombre de sommets–1 du graphe G, cela signifie que ce dernier n’est pas connexe.

Arbres couvrant de poids minimum Algorithme de Kruskal  On part d’une solution vide. On choisit donc, à chaque fois, une arête de G de poids minimum et qui ne crée pas de cycle. Soit E l'ensemble des sommets de G. On utilisera un ensemble d'arêtes T qui sera en sortie l'arbre couvrant minimal et un ensemble d'arêtes F qui représentera les arêtes qui peuvent être choisies. T = { }; F = E ; tant que |T| < n - 1 faire trouver une arête e de F de poids minimal F = F - e si T + e est acyclique alors T = T + e finsi fin tant que

Arbres couvrant de poids minimum Algorithme de Kruskal  Exemple 1 Les différentes étape pour construire l’arbre T

Arbres couvrant de poids minimum Algorithme de Kruskal  Exemple 2 Reprenons le graphe suivant, et construisons l’arbre recouvrant de poids minimum à l’aide de l’algorithme de Kruskal. Poids Arêtes 2 B-C 2 D-E 3 C-D 4 B-D éléminée 4 A-E 5 A-B éléminée 6 B-E éléminée

Arbres couvrant de poids minimum Algorithme de Kruskal  Complexité Si les arêtes sont classées par ordre de coût croissant, ce qui peut se faire en ; e étant le nombre d’arêtes dans le graphe, il reste à évaluer la complexité de test d’acyclicité. Si les composantes connexes du graphe T sont connues, ce test se réduit à vérifier que les extrémités de l’arête choisie sont dans eux composantes connexes distinctes. Il reste alors à gérer ces composantes connexes de manière à fusionner deux composantes connexes reliées par l’arête choisie. Cela peut se faire par la technique de fusion rapide en - comment? – L’algorithme de Kruskal a une complexité de l’ordre .

Arbres couvrant de poids minimum Algorithme de Prim  L’algorithme de Kruskal veille à maintenir  la propriété d’acyclicité d’un arbre alors que l’algorithme de Prim se base sur la connexité d’un arbre. En effet, l'algorithme de Prim se base sur la caractérisation des arbres comme des graphes connexes minimaux au sens de l'inclusion : on ne peut enlever une arête à un arbre sans le déconnecter. L'idée de l'algorithme est de maintenir un sous-graphe partiel connexe, en connectant à nouveau sommet à chaque étape. L'algorithme de Prim va ainsi faire grossir un arbre jusqu'à ce qu'il couvre tous les sommets du graphe. Si à une étape un ensemble A de sommets sont connectés entre eux, pour choisir le prochain sommet à connecter, l'algorithme part d'une constatation simple : dans un arbre couvrant, il existe nécessairement une arête qui relie l'un des sommets de A avec un sommet en dehors de A. Pour construire un arbre couvrant de poids minimum (MST), il suffit de choisir parmi ces arêtes sortantes celle de poids le plus faible.

Arbres couvrant de poids minimum Algorithme de Prim  Pour détecter les arêtes sortantes, nous pouvons marquer au fur et à mesure de l'algorithme les sommets déjà connectés. Une arête sortante relie alors nécessairement un sommet marqué et un sommet non marqué. Reste une question : de quel sommet partir ? Eh bien le choix du sommet initial n'a pas d'importance... tout sommet doit de toute manière être relié aux autres dans l'arbre final. Si le graphe G n'est pas connexe, l'algorithme de Prim sous cette forme construit un arbre couvrant uniquement sur la composante connexe du sommet initialement marqué.

Arbres couvrant de poids minimum Algorithme de Prim  L’algorithme de Prim fait donc pousser un arbre couvrant minimal en ajoutant au sous-arbre T déjà construit une nouvelle branche parmi les arêtes de poids minimal joignant un sommet de T à un sommet qui n’est pas dans ce dernier. L’algorithme s’arrête lorsque tous les sommets du graphe sont dans T. Soit X l’ensemble de sommets du graphe de départ G. On utilisera un ensemble d’arêtes qui sera en sortie l’arbre recouvrant en question, et S un ensemble qui contiendra les sommets de T. T =  S= S  x tant que S  X faire trouver une arête e = {y,s} de poids minimal tel que yX-S et sS T = T {y,s} S = S  y findutantque

Les différentes étapes pour construire l’arbre T Arbres couvrant de poids minimum Algorithme de Prim  Exemple Les différentes étapes pour construire l’arbre T

Arbres couvrant de poids minimum Algorithme de Prim  Complexité Si S possède k sommets, pour choisir une arête de poids minimal reliant un sommet de S à un sommet de X-S, on doit trouver le poids minimum parmi au plus k(n-k) arêtes puisque chaque sommet de S est adjacent à au plus (n-k) sommets de X-S. Or k varie entre 1 et n, donc Ce choix est effectuée n fois dans la boule tant que. Donc la complexité est en .