Slides:



Advertisements
Présentations similaires
Introduction à la Théorie des graphes
Advertisements

La recherche de chemin optimal
Présentation générale Marc Gengler
Algorithmes et structures de données avancées Cours 7
Algorithmes et structures de données avancés
Graphes et Applications Thème de léquipe « Combinatoire et Algorithmique » LaBRI – janvier 2008.

Introduction à la Théorie des graphes
1 UMLV Optimalité des tris par comparaisons : O(n logn) Classements linéaires Tris lexicographiques Tri lexicographique.
1 UMLV 1. Introduction 2. Hachage ouvert 3. Hachage fermé 4. Implémentation des fonctions Méthodes de hachage.
UMLV 1 Problème G = (S, A) graphe (orienté) Calculer H = (S, B) où B est la clôture réflexive et transitive de A. Note : (s,t) B ssi il existe un chemin.
Cours de graphes Les plus courts chemins,
Modélisation par le concept de graphe
Mise à Niveau en Recherche Opérationnelle
LES GRAPHES.
Visualisation d’information interactive 5 : Graphes
A.Faÿ 1 Recherche opérationnelle Résumé de cours.
Chap. 1 INTRODUCTION Beaucoup de problèmes de la vie courante, tels la gestion de réseaux de communication ou l'ordonnancement de tâches, correspondent.
IN302 – Chapitre 1 Notions de base, connexité. Rappels sur la complexité
Recherche Opérationnelle
Chapitre VIII. Introduction aux graphes
COURS SUR LA THEORIE DES 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.

Algorithmes Branch & Bound
Heuristiques A. Introduction B. Recherche d ’une branche
MODULE 6 Optimisation de GRAPHES
Pr ZEGOUR Djamel Eddine
Les fichiers indexés (Les B-arbres)
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-2000
Coloration gap sommet identifiante de graphes
IFT Complexité et NP-complétude





Algorithmes d ’approximation
Recherche Opérationnelle
- GRAPHES - Composantes et types
Cours de graphes Marc Gengler Alexandra Bac Sébastien Fournier
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.
Gestion de Fichiers GF-10: Traitement Co-Sequentiel: Appariment et Fusion de Plusieures Listes (Base sur les sections de Folk, Zoellick & Riccardi,
Programmation dynamique

Atelier de formation : MAT optimisation II (les graphes).

Pour le chemin le plus court pour tous les couples
Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK.

201 UMLV  Type « dictionnaire » sous-ensembles finis de E (ordonné) avec les opérations : Ens_vide :  Ens Ajouter : Ens x Elément  Ens Enlever.

Graphes 1. Introduction 2. Définition 3. Représentation mémoire
Arbres et graphes.
On cherche le plus court chemin de E à S sur le graphe suivant :
Algorithmes Branch & Bound
Licence Informatique Algorithmique des graphes
IN302 – Chapitre 2 Arbres et arborescences. Isthmes Composantes connexes : 2.
Helen KASSEL (amphi), Herve BARBOT (TD, TP)

Ajouts et retraits dans un arbre de connexion Nicolas Thibault et Christian Laforest, Équipe OPAL Laboratoire IBISC (regroupement LaMI et LSC), Évry 8.
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
Cycle, Cocycle, Arbre et Arborescence
Transcription de la présentation:

UMLV ã Arbres recouvrants Calcul d’un arbre de coût minimal recouvrant un graphe connexe Applications conception de réseaux (téléphonique, électrique, d'intercommunication,...) et étude de leur fonctionnement Algorithmes de Prim O(n2) (adapté aux matrices d’adjacence) de Kruskal O(a log a) (adapté aux listes de successeurs et graphes contenant peu d’arêtes)

les sommets intermédiaires n’apparaissent qu’une seule fois UMLV ã Graphes non orientés G=(S, A) S sommets card S = n A arêtes card A = a A = {{s, t}, …} s ¹ t,… (pas de boucle) d c b a chemin : ({a,b}, {b,c}, {c,d}, {d,b}, {b,a}) chemin simple : ({a,b}, {b,c}, {c,d}) cycle simple : ({a,b}, {b,d}, {d,c}, {c,a}) Chemin : c = ( {s0,s1}, {s1,s2}, …, {sk-1,sk} ) où les {si-1,si} Î A Chemin simple les sommets intermédiaires n’apparaissent qu’une seule fois Cycle simple chemin simple avec s0 = sk

d c b a d c b d c b a d c b a UMLV ã Sous-graphe Graphe non orienté G = (S, A) Sous-graphe G' Í G : G' graphe (S', A') avec S' Í S et A' Í A si S' = S Sous-graphe recouvrant Arbre graphe connexe sans cycle (simple) Arbre recouvrant pour G sous-graphe recouvrant qui est un arbre d c b d c b a d c b a

d c b a UMLV ã Représentations Matrice d'adjacence a b c d (symétrique) a 0 1 1 0 b 1 0 1 1 c 1 1 0 1 d 0 1 1 0 Listes de successeurs (redondantes) d c b a b a c a b c d a c b d b d c

d c f e a b d c f e a b UMLV ã Problème ARCM Graphe valué G = (S, A, v) avec valuation v : A  R non-orienté et connexe Coût d’un sous-graphe G’ = (S’, A’) :  (v(p,q) | (p,q)  A’) Problème : déterminer un ARCM, arbre recouvrant de coût minimal pour G coût = 14 d c f e a b 6 4 5 3 2 1 d c f e a b 5 3 2 1

d c f e a b d c f e a b UMLV ã Arbre recouvrant Graphe non-orienté et connexe G = (S, A) card S = n T = (S, B) arbre recouvrant pour G Propriétés T possède n-1 arêtes : card B = n-1 si {p, q} Î A-B alors H = (S, B + {u,v}) possède un cycle d c f e a b d c f e a b card S = 6 card B = 5

Coupure d c f e a b d c f e a b UMLV ã Graphe valué G = (S, A, v) non-orienté et connexe {P, Q} partition de S Théorème si {p, q} une arête de coût minimal entre P et Q il existe un ARCM qui contient {p, q} Q d c f e a b 6 4 5 3 2 1 d c f e a b 5 3 2 1 P

UMLV ã Preuve Soit {p, q} une arête de coût minimal entre P et Q p  P q  Q Soit T = (S, B) un ARCM pour G si {p, q}  B terminé sinon H = (S, B + {p, q}) contient un cycle ce cycle contient {u, v}  B, u Î P, v Î V soit T’ = (S, B - {u, v} + {p, q}) T’ est un arbre recouvrant et coût (T’) £ coût (T) Þ coût (T’) = coût (T) donc {p, q} contenu dans l’ARCM T’

1 2 a b -2 2 c d UMLV ã Algorithmes gloutons Traitement séquentiel des données avec optimisation locale Mais ne donne pas en général l'optimalité globale c 1 2 Plus court chemin de a à c ? a b -2 2 d Optimalité pour - rendeur de monnaie - codage de Huffman - algorithme de Dijkstra - ARCM par algorithmes de Prim et de Kruskal

d c f e a b d c f e a b d c f e a b UMLV ã Méthode de Prim (1957) Calcul d'un ARCM : faire grossir un sous-arbre jusqu'au recouvrement du graphe Exemple d c f e a b 6 4 5 3 2 1 d c f e a b 6 4 5 3 2 1 d c f e a b 6 4 5 3 2 1

Exemple (suite) d c f e a b d c f e a b d c f e a b d c f e a b UMLV ã 6 4 5 3 2 1 d c f e a b 6 4 5 3 2 1 d c f e a b 6 4 5 3 2 1 d c f e a b 5 3 2 1 ARCM coût = 14

UMLV ã Algorithme de Prim arbre PRIM( graphe ({1, 2, ..., n}, A, v) ) { T ¬ {1} ; B ¬ Æ ; tant que card T < n faire { {p, q} ¬ arête de coût minimal telle que p Î T et q Ï T ; T ¬ T + {q} ; B ¬ B + {p, q} ; } retour (T, B) ; Temps d’exécution : O(n²) au moyen de deux tables indexées par les sommets

d c f e a b a b c d e f a 1 5 3 UMLV ã Implémentation Tables proche et coût pour trouver l’arête {p, q } q Ï T proche[q] = p Î T ssi v(p, q) = min { v(p', q) | p' Î T } q Ï T coût[q] = v(proche[q], q) q Î T coût[q] = + d c f e a b 6 4 5 3 2 1 a b c d e f proche a coût  1 5 3

d c f e a b a b c d e f a 1 5 3 ajout de b et {a, b} d c f e a b a b c UMLV ã Une étape d c f e a b 6 4 5 3 2 1 a b c d e f proche a coût  1 5 3 ajout de b et {a, b} d c f e a b 6 4 5 3 2 1 a b c d e f proche a b coût  4 3 5  Temps O( 1+card A(b) )

d c f e a b d c f e a b d c f e a b UMLV ã Méthode de Kruskal (1956) Calcul d'un ARCM : réunir deux sous-arbres disjoints par une arête de coût minimal Exemple d c f e a b 6 4 5 3 2 1 d c f e a b 6 4 5 3 2 1 d c f e a b 6 4 5 3 2 1

Exemple (suite) d c f e a b d c f e a b d c f e a b d c f e a b UMLV ã 6 4 5 3 2 1 d c f e a b 6 4 5 3 2 1 d c f e a b 6 4 5 3 2 1 d c f e a b 5 3 2 1 ARCM coût = 14

UMLV ã Algorithme de Kruskal arbre KRUSKAL( graphe ({1, 2, ..., n}, A, v) ) { Partition ¬ { {1}, {2}, ..., {n} } ; B ¬ Æ ; tant que card Partition > 1 faire { {p, q} ¬ arête de coût minimal telle que CLASSE(p) ¹ CLASSE(q) ; B ¬ B + {p, q} ; remplacer dans Partition CLASSE(p) et CLASSE(q) par leur UNION ; } retour ( ({1, 2, ..., n}, B ) ; Temps d’exécution : O(card A.log card A) avec gestion efficace de la partition : type abstrait CLASSE-UNION

UMLV ã CLASSE / UNION Gestion d’une partition de {1, 2, …, n} avec les opérations principales CLASSE : numéro de classe d’un élément UNION : union de classes disjointes Implémentations possibles 1. table simple 2. arbres 3. idem + compression de chemins Exemple n = 7 soit 1 º 2 ; {1, 2} {3} {4} {5} {6} {7} soit 5 º 6 ; {1, 2} {3} {4} {5, 6} {7} soit 3 º 4 ; {1, 2} {3, 4} {5, 6} {7} soit 1 º 4 ; {1, 2, 3, 4} {5, 6} {7} est-ce que 2 º 3 ? oui car 2 et 3 dans la même classe

UMLV ã Par table simple CLASSE 1 2 3 4 5 6 7 1 1 3 3 5 5 7 représente {1,2} {3,4} {5,6} {7} UNION des classes (disjointes) de p et q { x ¬ CLASSE [p] ; y ¬ CLASSE [q] ; pour k ¬ 1 à n faire si CLASSE [k] = y alors CLASSE [k] ¬ x ; } Temps CLASSE : constant UNION : O(n) CLASSE 1 2 3 4 5 6 7 1 1 1 1 5 5 7 représente {1,2,3,4} {5,6} {7}

Par arbres UMLV ã 1 2 3 4 5 6 7 - 1 - 3 - 5 - CLASSE(i ){ k ¬ i ; partition {1,2} {3,4} {5,6} {7} CLASSE,TAILLE 1,2 3,2 5,2 7,1 arbres 1 2 3 4 5 6 7 P 1 2 3 4 5 6 7 - 1 - 3 - 5 - CLASSE(i ){ k ¬ i ; tant que P[k] défini faire k ¬ P[k] ; retour ( CLASSE[k] ) ; } Temps CLASSE : O(n) UNION : constant partition {1,2,3,4} {5,6} {7} CLASSE,TAILLE 1,4 5,2 7,1 arbres 1 2 5 6 7 P 1 2 3 4 5 6 7 - 1 1 3 - 5 - 3 4

Éviter des arbres filiformes pour réduire UMLV ã Union des arbres 1 2 n Éviter des arbres filiformes pour réduire le temps de calcul de CLASSE(i ) Stratégie pour UNION : toujours mettre le petit arbre enfant de la racine du gros Temps CLASSE : O(logn) UNION : constant Preuve niveau( i ) augmente de 1 quand union de P et Q, card P £ card Q et i Î P i.e., quand la taille de la classe de i double au moins Ceci ne peut arriver que log2n fois au plus petite classe grosse classe

après calcul de CLASSE(7) UMLV ã Compression de chemins Idée : réduire le temps de calcul de CLASSE(i ) en « aplatissant » l'arbre à chaque calcul 1 2 3 4 5 6 7 8 9 1 2 3 5 7 4 6 8 9 après calcul de CLASSE(7) Temps de n calculs de CLASSE : O(n a (n)) où a(n) est le plus petit entier k tel que n £ 2 Preuve [Aho, Hopcroft, Ullman, 1974] 2 k fois

UMLV ã Ackermann fonction A : N x N  N définie par A(0, y) = 1 y ³ 0 A(1, 0) = 2 A(x, 0) = x + 2 x ³ 2 A(x, y) = A(A(x-1, y), y-1) x, y ³ 1 Propriétés y = 0 A(x, 0) = x+2 x ³ 2 y = 1 A(x, 1) = 2.x x ³ 1 car A(1,1) = A(A(0,1),0) = A(1,0) = 2 A(x,1) = A(A(x-1,1),0) = A(x-1,1)+2, . . . y = 2 A(x, 2) = 2x x ³ 1 car A(1,2) = A(A(0,2),1) = A(1,1) = 2 A(x,2) = A(A(x-1,2),1) = 2.A(x-1,2) , . . .

UMLV ã y = 3 A(x,3) = 2 « tour de 2 en x exemplaires » a (n) = plus petit k tel que n £ A(k, 3) A(4,4) = « tour de 2 en 65536 exemplaires » si n raisonnable, a(n) £ 4 2