Structures de données IFT-2000

Slides:



Advertisements
Présentations similaires
Algorithmes et structures de données avancées Cours 7
Advertisements

Cours n° 7 Standard Template Library II.
Algorithmes et structures de données avancées Cours 6 Patrick Reuter
Traitement Co-Séquentiel: Appariment et Fusion de Plusieurs Listes
Chapitre VIII. Introduction aux graphes
COURS SUR LA THEORIE DES GRAPHES
Module 5 : Algorithmes de graphes
Algorithmes Branch & Bound
Analyse lexicale Généralités Expressions rationnelles Automates finis
MODULE 6 Optimisation de GRAPHES
IFT313 Introduction aux langages formels
Module 4 : Parcours dans un graphe
Structures de données IFT-2000
Pr ZEGOUR Djamel Eddine
Les fichiers indexés (Les B-arbres)
LES ARBRES IUP 2 Génie Informatique
Ensembles Définition d’un ensemble. Opérations sur les ensembles. Accès, suppression et ajout d’éléments d’un ensemble. Fonctions permettant de manipuler.
Structures de données IFT Abder Alikacem La classe string Département dinformatique et de génie logiciel Édition Septembre 2009 Département dinformatique.
Structures de données IFT-2000
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Standard Template library Édition Septembre 2009 Département dinformatique et de génie logiciel.
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Sous-séquence de somme maximale (Algo#4). Algorithme retour arrière. Département dinformatique et de génie.
Structures de données IFT-2000
Coloration gap sommet identifiante de graphes
IFT Complexité et NP-complétude

Algorithmes d ’approximation
ELE6306 : Test de systèmes électroniques Projet de cours Chaîne de scan unique: Reconfiguration = Optimisation Louis-Martin Côté Professeur : A. Khouas.
Les arbres et tas binomiaux
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.
Structures de données IFT-2000
Structures de données IFT-10541
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
Structures de données IFT Abder Alikacem Semaine 10 Les arbres SPLAY Département dinformatique et de génie logiciel Édition septembre
Pour le chemin le plus court pour tous les couples
Structures de données IFT-2000 Abder Alikacem Semaine 11 Gestion des arbres binaires de tri et de recherche. Les arbres cousus. Les arbres n-aires Département.
Structures de données IFT-2000 Abder Alikacem Retour sur les listes ordonnées Département dinformatique et de génie logiciel Édition Septembre 2009.
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

Structures de données IFT-2000
Structures de données IFT-2000
Graphes 1. Introduction 2. Définition 3. Représentation mémoire
Dév. d’application interactive III Recherche de chemin.
Arbres et graphes.
On cherche le plus court chemin de E à S sur le graphe suivant :
Méthodes de tri.
Arbres binaires et tables de hachage
IN302 – Chapitre 2 Arbres et arborescences. Isthmes Composantes connexes : 2.
Structures de données et algorithmes – TP7 Maria-Iuliana Dascalu, PhD
Irregular Adjectives Not all adjectives are made the same.

Ajouts et retraits dans un arbre de connexion Nicolas Thibault et Christian Laforest, Équipe OPAL Laboratoire IBISC (regroupement LaMI et LSC), Évry 8.
1 UMLV  FICHIERS Mémoire de masse découpée en blocs Fichier :liste chaînée de blocs, ou arbre de blocs (répertoires - fichiers)‏ Bloc d’éléments Bloc.
Algorithme de DIJKSTRA
Structures de données IFT-2000
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.
Files de priorité (Priority Queue)
Les monceaux (Heap) Monceaux Propriétés des Monceaux
CSI25101 Maps et Dictionnaries. CSI25102 Un dictionnaire (dictionary) est un modèle abstrait de base de données. tel une file à priorité, un dictionnaire.
4/25/2017 4:30 PM Arbres (2,4) CSI2510 CSI2510.
CSI25101 Tri Plus efficace. CSI25102 Tri récursif Le tri récursif divise les données de grande taille en deux presque moitiés et est appelé récursivement.
CSI2510 Structures de données et algorithmes Plus court chemin
Traversées (Parcours ) de graphes
CSI2510 Structures de données et algorithmes Arbres couvrants minimaux
Clique Percolation Method (CPM)
Cycle, Cocycle, Arbre et Arborescence
Transcription de la présentation:

Structures de données IFT-2000 Minimum Spanning Tree 4/1/2017 12:11 AM 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

Plan Définitions L’algorithme de Prim-Jarnik Algorithme de Kruskal

Définitions ORD PIT DEN DCA STL DFW ATL 10 1 6 7 Un sous-graphe couvrant d’un graphe G est un sous-graphe contenant tous les sommets de G. Un arbre couvrant d’un graphe est un sousgraphe couvrant qui est un arbre. Arbre couvrant minimal (minimum spanning tree): Arbre couvrant d’un graphe avec poids dont le poids total des arêtes est minimal. ORD 10 1 PIT DEN 6 7 9 3 DCA STL 4 8 5 2 DFW ATL

Propriétés Propriété de cycle: C C 8 f 4 9 6 2 3 e Preuve: 7 9 e C f Propriété de cycle: Soit T un arbre couvrant d’un graphe avec poids G Soit e une arête de G n’appartenant pas à T et soit C, le cycle obtenu lorsqu’on ajoute e à T Si T est minimal, alors on a pour toutes arêtes f dans C poids(f)  poids (e) Preuve: Par contradiction Si poids(f) > poids(e), on obtient un arbre couvrant de plus petit poids en remplaçant l’arête f par l’arête e dans notre arbre T Remplacer f par e donne un arbre couvrant de plus petit poids total 8 4 2 3 6 7 9 C e f

Propriété de partition des ACM U V 7 Propriétés de partition: Considérons une partition des sommets de G en deux ensembles U et V Soit e une arête de poids minimal entre U et V Alors, il existe un arbre couvrant minimal de G contenant e Preuve: Soit T un arbre couvrant minimal de G Si T ne contient pas e, soit C le cycle formé par l’addition de e à l’arbre T et soit f, une arête entre U et V Par la propriété de cycles, on a, poids(f)  poids(e) Comme on avait pris e de poids minimal, on a que poids(f) = poids(e) et alors on obtient un autre ACM en remplaçant f par e f 4 9 5 2 8 8 3 e 7 Remplacer f par e nous donne un autre ACM U V 7 f 4 9 5 2 8 8 3 e 7

Algorithme de Prim-Jarnik’s Algorithme similaire à l”algorithme de Dijkstra (dans le cas des graphes connexes). On choisit un sommet s aléatoirement qu’on met dans un “nuage” et on construit l’arbre couvrant minimal en faisant grossir le “nuage” d’un sommet à la fois. On garde en mémoire à chaque sommet v, une étiquette d(v) qui ici est égale au poids minimal parmi les poids des arêtes reliant v à un sommet à l’intérieur du nuage. À chaque étape: On ajoute au nuage le sommet u extérieur ayant la plus petite étiquette d(u) On met à jour les étiquettes des sommets adjacents à u

Algorithme de Prim-Jarnik’s A priority queue stores the vertices outside the cloud Key: distance Element: vertex Locator-based methods insert(k,e) returns a locator replaceKey(l,k) changes the key of an item We store three labels with each vertex: Distance Parent edge in MST Locator in priority queue Algorithm PrimJarnikMST(G) Q  new heap-based priority queue s  a vertex of G for all v  G.vertices() if v = s setDistance(v, 0) else setDistance(v, ) setParent(v, ) l  Q.insert(getDistance(v), v) setLocator(v,l) while Q.isEmpty() u  Q.removeMin() for all e  G.incidentEdges(u) z  G.opposite(u,e) r  weight(e) if r < getDistance(z) setDistance(z,r) setParent(z,e) Q.replaceKey(getLocator(z),r)

Exemple  7 7 D 7 D 2 2 B 4 B 4 8 9  5 9  5 5 2 F 2 F C C 8 8 3 3 8 8 E E A 7 A 7 7 7 7 7 7 D 2 7 D 2 B 4 B 4 5 9  5 5 9 4 2 F 5 C 2 F 8 C 8 3 8 3 8 E A E 7 7 A 7 7

Exemple..suite 7 7 D 2 B 4 9 4 5 5 2 F C 8 3 8 E A 3 7 7 7 D 2 B 4 5 9 7 D 2 B 4 5 9 4 5 2 F C 8 3 8 E A 3 7

Analyse de la complexité Opérations sur les graphes: On appelle l’opération Incidentes(v) une fois pour chaque sommet v. Donc, temps total si on utilise une liste d’adjacence de O(m) Étiquettage: On peut changer l’étiquette D(u) d’un sommet u jusqu’à O(deg(u)) fois. Donc, au total, l’étiquettage prend un temps O(m) Opérations de liste avec priorités Chaque sommet est inséré une fois dans la liste et retiré une fois. Chaque insertion et suppresion prend un temps O(log n). Total O(n log n) La clé de chaque sommet u est modifiée au plus O(deg(u)) et prend un temps O(log n) chaque fois. Total O(m log n) La complexité en temps de Prim-Jarník est donc de O((n+m) log n) ou O(m log n) si le graphe est simple et connexe

Kruskal’s Algorithm A priority queue stores the edges outside the cloud Key: weight Element: edge At the end of the algorithm We are left with one cloud that encompasses the MST A tree T which is our MST Algorithm KruskalMST(G) for each vertex V in G do define a Cloud(v) of  {v} let Q be a priority queue. Insert all edges into Q using their weights as the key T   while T has fewer than n-1 edges do edge e = T.removeMin() Let u, v be the endpoints of e if Cloud(v)  Cloud(u) then Add edge e to T Merge Cloud(v) and Cloud(u) return T

Structure de données pour Kruskal L’algorithme maintient une forêt d’arbres Une arête est acceptée, si elle relit deux arbres distincts On a besoin d’une structure de données qui maintient une partition i.e une collection d’ensembles disjoints, avec les opérations Trouver(u): retourne l’ensemble contenant u Union(u,v): remplace les ensemblescontenant u et v par leur union

Représentation d’une Partition Chaque élément d’un ensemble est mis en mémoire dans une séquence (l’ensemble pointe vers la séquence contenant ces éléments). Chaque élément à un pointeur vers l’ensemble L’opération trouver(u) se fait en O(1) et retourne l’ensemble dont u fait partie Pour l’opération union(u,v), on bouge les éléments du plus petit ensemble dans la séquence du plus grand ensemble et on met à jour leur pointeur La complexité en temps de union(u,v), est min(nu, nv) où nu est la taille de l’ensemble contenant u et nv, la taille de l’ensemble contenant v

Kruskal - partition Complexité en temps: O((n+m)log n) Algorithme Kruskal(G): Entrée: un graphe avec poids G. Sortie: Un ACM T pour G. Soit P une partition des sommets de G, où chaque sommet est dans un ensemble séparé. Soit Q une liste avec priorités gardant en mémoire les arêtes de G, ordonnées selon leur poids Soit T un arbre initialement vide Tant que Q n’est pas vide faire (u,v)  Q.enleverMin() si P.trouver(u) != P.trouver(v) alors Ajouter (u,v) à T P.union(u,v) retourner T Complexité en temps: O((n+m)log n)

Exemple Kruskal 2704 BOS 867 849 PVD ORD 187 740 144 1846 JFK 621 184 1258 802 SFO BWI 1391 1464 337 1090 DFW 946 LAX 1235 1121 MIA 2342

Exemple Kruskal

Exemple Kruskal

Exemple Kruskal

Exemple Kruskal

Exemple Kruskal

Exemple Kruskal

Exemple Kruskal

Exemple Kruskal

Exemple Kruskal

Exemple Kruskal

Exemple Kruskal

Exemple Kruskal

Exemple Kruskal JFK BOS MIA ORD LAX DFW SFO BWI PVD 867 2704 187 1258 849 740 144 1846 621 184 802 1391 1464 337 1090 946 1235 1121 2342