Slides:



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

La recherche de chemin optimal
Théorie des graphes.
Présentation générale Marc Gengler
Connexité.
Parcours.
Algorithmes et structures de données avancées Cours 7
Algorithmes et structures de données avancées Cours 4
Algorithmes et structures de données avancées Cours 6 Patrick Reuter
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
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.
Modélisation par le concept de graphe
Mise à Niveau en Recherche Opérationnelle
Bloc1 : Théorie des graphes et problèmes d’ordonnancement
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.
Plus rapide chemin bicritère : un problème d’aménagement du territoire
Recherche Opérationnelle
Chapitre VIII. Introduction aux graphes
Celso C. Ribeiro Universidade Federal Fluminense Brésil
1 Cours numéro 3 Graphes et informatique Définitions Exemple de modélisation Utilisation de ce document strictement réservée aux étudiants de l IFSIC.
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.

Heuristiques A. Introduction B. Recherche d ’une branche
Théorie des graphes Un peu de vocabulaire.
Alignement de séquences (suite)
Pr ZEGOUR Djamel Eddine
LES ARBRES IUP 2 Génie Informatique
Structures de données IFT-2000
Structures de données IFT-2000
Structures de données IFT-2000
Coloration gap sommet identifiante de graphes




Algorithmes d ’approximation
Programmation linéaire et Recherche opérationnelle
Recherche Opérationnelle
Recherche Opérationnelle
- GRAPHES - Composantes et types
Cours de graphes Marc Gengler Alexandra Bac Sébastien Fournier
Atelier de formation : MAT optimisation II (les graphes).

8INF8061 Conception et analyse des algorithmes Comment comparer deux problèmes?
Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK.

Apérisentation Sur les graphes évolutifs Mardi 22 novembre 16h30.
Graphes 1. Introduction 2. Définition 3. Représentation mémoire
D.E ZEGOUR Ecole Supérieure d’Informatique
Tutorat 7 - Introduction au Routage et OSPF
Parcours, fouilles et vagues Franck Petit LaRIA Université de Picardie Jules Verne, Amiens
Le problème central de l’ordonnancement (les plus longs chemins)
LE FLOT MAXIMAL et LA COUPE MINIMALE
1 Licence d’informatique Algorithmique des graphes Exploration de la descendance d’un sommet Utilisation de ce document strictement réservée aux étudiants.
Licence d’informatique Algorithmique des graphes
Université Pierre et Marie Curie Laboratoire d’Informatique de Paris VI Département ASIM Analyse et résultats sur le dimensionnement des mémoires pour.
IN302 – Chapitre 2 Arbres et arborescences. Isthmes Composantes connexes : 2.
Helen KASSEL (amphi), Herve BARBOT (TD, TP)

Traversées (Parcours ) de graphes
Introduction à la Théorie des graphes
Projet Théorie des graphes
Cours de base: Théorie des Graphes Dr TARI Abdelkamel
UMLV ã Plus courts chemins Toutes paires d'états
Transcription de la présentation:

ALGORITHMIQUE Maxime CROCHEMORE http://www-igm.univ-mlv.fr/~mac/ UMLV ã ALGORITHMIQUE Maxime CROCHEMORE http://www-igm.univ-mlv.fr/~mac/ Université de Marne-la-Vallée

Représentations, explorations Clôture transitive, plus courts chemins UMLV ã Plan du cours Graphes Représentations, explorations Clôture transitive, plus courts chemins Arbres couvrants, flots Automates Représentations, utilisations Minimisation, équivalence Textes Reconnaissance de motifs Recherche de mots Alignements

UMLV ã Graphes Graphe (orienté) G = (S, A) S ensemble fini des sommets 1 2 3 4 5 Graphe (orienté) G = (S, A) S ensemble fini des sommets A Í S x S ensemble des arcs, i.e., relation sur S Graphe non orienté G = (S, A) A ensemble des arêtes, relation symétrique S = { 1, 2, 3, 4, 5 } A = { (1, 2), (1, 3), (2, 3), (3, 2), (4, 4), (4, 5) } 1 4 2 3 S = { 1, 2, 3, 4 } A = { {1, 2}, {1, 3}, {1, 4}, {2, 4} }

UMLV ã Flot de contrôle d'un programme i ¬ 0 ; S ¬ 0 S ¬ S + A [ i ] i £ n Arrêt i ¬ i + 1 Réseau Lille Paris Brest Nantes Lyon Nice Toulouse

Graphe acyclique d'une expression (DAG) UMLV ã Graphe acyclique d'une expression (DAG) * + * / + c d * a b Pipelines ( (a+b)*c+d/(b*(a+b)) ) * (a+b)*c 2 3 4 6 8

UMLV ã Algorithmes Explorations Parcours en profondeur, en largeur Tri topologique Composantes fortement connexes, ... Recherche de chemins Clôture transitive Chemin de coût minimal Circuits eulériens et hamiltoniens, ... Arbres recouvrants Algorithmes de Kruskal et Prim Réseaux de transport Flot maximal Divers Coloration d'un graphe Test de planarité, ...

UMLV ã Terminologie Graphe : G = (S, A) 2 3 4 1 Graphe : G = (S, A) Arc : (s, t) Î A t adjacent à s, t successeur de s Successeurs de s : A(s) = { t | (s, t) Î A } Boucle : (t, t) Î A Chemins Chemin : c = ( (s0,s1), (s1,s2), …, (sk-1,sk) ) où les (si-1,si) Î A origine = s0 extrémité = sk ( (1,2), (2,2), (2,3), (3,4) ) longueur = k Circuit : chemin dont origine et extrémité coincident sommet, nœud = vertex (vertices), arc = arc, orienté = directed, arête = edge, chemin = path, circuit = circuit

Graphe pour la modélisation d ’un problème UMLV ã Problème de feux ! Graphe pour la modélisation d ’un problème traversée possible traversées incompatibles eb d eb ad e c ea eb ec ed ab ac ad ba bc bd da db dc a b sens unique

coloration f : S ® C telle que (s,t) Î A Þ f(s) ¹ f(t) UMLV ã Coloration G = (S,A) coloration f : S ® C telle que (s,t) Î A Þ f(s) ¹ f(t) Chr(G) = min card f(S), nombre chromatique de G f Chr(G) = 4 couleur = ensemble de traversées compatibles

UMLV ã Algorithme de coloration G = (S, A) S = { s1, s2, …, sn } G sans boucle ! fonction coloration-séquentielle (G graphe) : entier ; début pour i ¬ 1 à n faire { c ¬ 1 ; tant que il existe t adjacent à si avec f (t) = c faire c ¬ c + 1 ; f (si) ¬ c ; } retour max (f (si), i = 1, …, n) ; fin Temps d ’exécution : O(n2) Calcul de Chr (G) : O(n2 n!) (appliquer la fonction à toutes les permutations de S) Aucun algorithme polynomial connu !

Représentations UMLV ã G = (S, A) S = {1, 2, ..., n} Liste des arcs représentation compacte hachage sur origine des arcs Matrice d'adjacence utilisation d'opérations matricielles temps de traitement courant : quadratique Listes de successeurs réduit la taille si cardA << (cardS)2 temps de traitement courant : O( cardS + cardA )

UMLV ã Matrices d'adjacence S = { 1, 2, 3 } 2 3 S = { 1, 2, 3 } A = { (1,1), (1, 2), (1, 3), (2, 1), (3, 2)} 1 1 1 M = 1 0 0 0 1 0 M [ i, j ] = 1 ssi j adjacent à i 2 5 8 3 1 2 3 2 8 5 3 0 0 0 2 0 V = Valuation : v : A X

UMLV ã Listes de successeurs S = { 1, 2, 3 } A = { (1,1), (1, 2), (1, 3), (2, 1), (3, 2)} 1 2 3 1 2 3 Listes des A(s) 2 5 8 3 1 2 3 1 2 3 8 5 Valuation : v : A X

UMLV ã Exploration G = (S, A) Explorer G = visite de tous les sommets et de tous les arcs Algorithme de base pour - recherche de cycles - tri topologique - recherche des composantes connexes - actions sur les sommets (coloration, ...) sur les arcs (valuation, ...) Parcours en profondeur ou en largeur - extensions des parcours d'arbres

Parcours en profondeur UMLV ã Parcours en profondeur Marquage nécessaire pour chaque sommet de s de G faire visité[s] faux ; pour chaque sommet s de G faire si non visité [s] alors Prof (s) ; procédure Prof (s sommet de G) ; début action préfixe sur s ; visité[s] vrai ; pour chaque t successeur de s faire { action sur l'arc (s,t) ; si non visité[ t ] alors Prof ( t ) ; } action suffixe sur s ; fin

UMLV ã Temps de parcours T (« pour chaque sommet ») = O(card S) Matrice d'adjacence T (« pour chaque t adjacent à s ») = T « pour chaque sommet t tel que M [ s,t ] = 1 » = O(card S)  parcours en O((card S)2) Listes de successeurs T (« pour chaque t adjacent à s ») = O(card A(s))  parcours en O(card S + card A)

UMLV ã Numérotation fonction Numérotation (G graphe) : table des numéros pour chaque sommet s de G faire no [s]  0 ; nb  0 ; si no [s] = 0 alors Num (s) ; retour (no) ; fin procédure Num (s sommet de G) ; début nb  nb + 1 ; no [s]  nb ; pour chaque t successeur de s faire si no [ t ] = 0 alors Num ( t ) ; nombre d'appels de Num = card S nombre de « no [t] = 0 » dans Num = card A temps = O (card S + card A) avec listes de successeurs

Parcours en profondeur UMLV ã Parcours en profondeur 8 9 1 a h i c 6 d 7 e 5 j m k l 10 13 11 12 3 f g 4 2 b Fond de pile Pile : a e d c b g f e h i j m l k m Ordre du parcours : a b f g e c d h i j k m l

UMLV ã Procédure Prof (s sommet de G) ; /* version itérative */ début Pile  Empiler (Pile-vide, s) ; tant que non vide (Pile) faire { s'  Elt (sommet (Pile)) ; Pile  Dépiler (Pile) ; si non visité [s'] alors { visité [s']  vrai ; pour t  dernier au premier successeur de s' faire si non visité [ t ] alors Pile  Ajouter (Pile, t) ; } fin Pour "action préfixe" uniquement Note : il peut y avoir plusieurs occurrences d'un même sommet dans la pile. Ne pas l'interdire !

UMLV ã Parcours en largeur Procédure Larg (s sommet de G) ; début File  Ajouter (File-vide, s) ; tant que non Vide (File) faire { s'  Premier (File) ; File  Enlever (File, s') ; si non visité [s'] alors { visité [s']  vrai ; pour t  premier au dernier successeur de s' faire si non visité [ t ] alors File  Ajouter (File, t) ; } fin Note : il peut y avoir plusieurs occurrences d'un même sommet dans la file. On peut l'interdire !

Ordre du parcours : a b c d e f g h i j k l m UMLV ã Parcours en largeur File : a b c d e f g h i j k l m Ordre du parcours : a b c d e f g h i j k l m 8 9 h i 1 a j m k l 10 12 11 13 c d e 3 4 5 f 6 g 7 b 2

Forêt de l'exploration en profondeur UMLV ã Forêt de l'exploration en profondeur a b c d h j i k l f g e m temps a h j b c d k l f g i m e arc d ’arbre arc avant arc arrière arc de traverse

UMLV ã Détection d'un circuit Proposition G possède un circuit ssi il existe un arc arrière dans un parcours en profondeur de G d(s) : date de début d'exécution de Prof(s) f (s) : date de fin d'exécution de Prof(s) (s,t) arc de G est un - arc d'arbre ou arc avant ssi d(s) < d(t) < f (t) < f (s) - arc arrière ssi d(t) < d(s) < f (s) < f (t) - arc de traverse ssi f (t) < d(s)

a c d e f g b UMLV ã Trois états ! Au cours d'une exploration : état [s] = noir s non visité état [s] = rouge s en cours de visite (dans Pile ou File) état [s] = bleu s déjà visité a Pendant la visite du sommet e, on détecte un cycle passant par l ’arc (e, a) car a est aussi en cours de visite c d e f g b

UMLV ã Tri topologique Prolongement d ’un ordre slip chaussettes pantalon chaussures chemise cravate veste ceinture montre Prolongement d ’un ordre partiel en un ordre total graphe sans circuit, i.e. pas d ’arc arrière Ordre possible d'habillage ch ettes slip pant. montre se ce cr ve res Ordre final : ordre décroissant des f (s) dans un parcours en profondeur

Tri topologique par exploration en profondeur UMLV ã Tri topologique par exploration en profondeur fonction Tri-topologique (G graphe acyclique) : liste ; début pour chaque sommet s de G faire visité [s]  faux ; L  liste-vide ; si non visité [s] alors Topo (s) ; retour (L) ; fin procédure Topo (s sommet de G) ; visité [s]  vrai ; pour chaque t adjacent à s faire si non visité [t] alors Topo (t) ; Ajouter s en tête de L ;

UMLV ã Méthode itérative 1 2 3 4 5 6 7 8 9 Nb-préd 0 1 2 0 1 2 0 3 0 1 2 3 4 5 6 7 8 9 Nb-préd 0 1 2 0 1 2 0 3 0 Sommets à traiter : 1 4 7 9 (sans prédécesseur) Après traitement de 1 : Nb-Préd - 0 2 0 1 2 0 2 0 Sommets à traiter : 4 7 9 2 1 7 9 2 8 4 3 5 6

Tri topologique itératif UMLV ã Tri topologique itératif Fonction Tri-topologique (G graphe acyclique) : liste ; début F  File-vide ; tant que G non vide faire si tous les sommets ont un prédécesseur alors « G contient un circuit » ; sinon { s  un sommet sans prédécesseur ; G  G diminué de s et des arcs d'origine s ; F  Ajouter (F, s) ; } retour (F) ; fin Temps d ’exécution : O( card S + card A ) avec gestion efficace de la liste des sommets à traiter

UMLV ã Composantes fortement connexes G = (S, A) graphe G' = (S',A') sous-graphe de G ssi S' Í S et A' Í A  S' x S' F composante fortement connexe de G : F sous-graphe maximal de G tel que deux sommets qlcq de F sont reliés par un chemin. a b c d e f g h b c a d e f g h

GT = graphe transposé de G Algorithme [Kosaraju 78] [Sharir 81] UMLV ã Calcul GT = graphe transposé de G Algorithme [Kosaraju 78] [Sharir 81] L  liste des sommets de G obtenus par parcours en profondeur suffixe ; à partir de LR, appliquer un parcours en profondeur à GT ; Les arbres de cette exploration sont les composantes fortement connexes a c d g h b e f b c a d e f g h G L = c h g d a f e b LR = b e f a d g h c b e a d f c h g b c a d e f g h GT