Parcours en profondeur
Transcription
Parcours en profondeur
Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Parcours en profondeur Francois Schwarzentruber ENS Rennes, France Cours 5 1 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Graphes non orientés Graphes orientés Outline 1 Pourquoi des graphes ? Graphes non orientés Graphes orientés 2 Exploration d’un labyrinthe 3 Parcours en profondeur 4 Tri topologique 5 Composantes fortement connexes 2 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Graphes non orientés Graphes orientés Outline 1 Pourquoi des graphes ? Graphes non orientés Graphes orientés 2 Exploration d’un labyrinthe 3 Parcours en profondeur 4 Tri topologique 5 Composantes fortement connexes 3 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Graphes non orientés Graphes orientés Coloriage de cartes 4 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Graphes non orientés Graphes orientés Coloriage de cartes 5 4 6 3 2 8 7 1 9 10 12 13 11 5 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Graphes non orientés Graphes orientés Création d’un emploi du temps Il y a des étudiants qui suivent à la fois : ALGO1 et TOPO. ALGO1 et LF. ALGO1 et PROG. LF et ALGEBRE. TOPO et ALGEBRE. 6 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Graphes non orientés Graphes orientés Création d’un emploi du temps Il y a des étudiants qui suivent à la fois : ALGO1 et TOPO. PROG ALGO1 LF ALGO1 et LF. ALGO1 et PROG. LF et ALGEBRE. TOPO ALGEBRE TOPO et ALGEBRE. 7 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Graphes non orientés Graphes orientés Autres exemples Graphe d’un réseau social Positions possibles dans un jeu vidéo Circuits imprimés Réseau de routes etc. 8 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Graphes non orientés Graphes orientés Outline 1 Pourquoi des graphes ? Graphes non orientés Graphes orientés 2 Exploration d’un labyrinthe 3 Parcours en profondeur 4 Tri topologique 5 Composantes fortement connexes 9 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Graphes non orientés Graphes orientés Configurations d’un jeu (ici morpion) X X ... ... ... X O X O X O 10 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Graphes non orientés Graphes orientés Le web 11 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Graphes non orientés Graphes orientés Autres exemples Positions possibles dans un jeu vidéo Automates Dépendances de tâches 12 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Outline 1 Pourquoi des graphes ? 2 Exploration d’un labyrinthe 3 Parcours en profondeur 4 Tri topologique 5 Composantes fortement connexes 13 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Exploration d’un labyrinthe J L K C G H F E I B A D 14 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Détection de cycles Outline 1 Pourquoi des graphes ? 2 Exploration d’un labyrinthe 3 Parcours en profondeur Détection de cycles 4 Tri topologique 5 Composantes fortement connexes 15 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Détection de cycles Parcours en profondeur → forêt couvrante 16 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Détection de cycles Intervalles [pre(s), post(s)] temps temps 17 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Détection de cycles Types d’arc 18 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Détection de cycles Outline 1 Pourquoi des graphes ? 2 Exploration d’un labyrinthe 3 Parcours en profondeur Détection de cycles 4 Tri topologique 5 Composantes fortement connexes 19 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Détection de cycles Détection de cycles 20 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Graphes acycliques Algorithme Outline 1 Pourquoi des graphes ? 2 Exploration d’un labyrinthe 3 Parcours en profondeur 4 Tri topologique Graphes acycliques Algorithme 5 Composantes fortement connexes 21 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Graphes acycliques Algorithme Outline 1 Pourquoi des graphes ? 2 Exploration d’un labyrinthe 3 Parcours en profondeur 4 Tri topologique Graphes acycliques Algorithme 5 Composantes fortement connexes 22 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Graphes acycliques Algorithme Exemple : compilation 23 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Graphes acycliques Algorithme Exemple : tableur calculer A2 calculer A1 calculer B2 calculer A4 calculer A3 calculer B1 24 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Graphes acycliques Algorithme Exemple : tableur calculer A2 calculer A1 calculer A3 calculer B1 25 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Graphes acycliques Algorithme Outline 1 Pourquoi des graphes ? 2 Exploration d’un labyrinthe 3 Parcours en profondeur 4 Tri topologique Graphes acycliques Algorithme 5 Composantes fortement connexes 26 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Graphes acycliques Algorithme Tri topologique Entrée : D B E G A C F Sortie : A B C D E F G 27 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Graphes acycliques Algorithme Principe 28 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Graphes acycliques Algorithme Exemple : savant cosinus 29 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Outline 1 Pourquoi des graphes ? 2 Exploration d’un labyrinthe 3 Parcours en profondeur 4 Tri topologique 5 Composantes fortement connexes 30 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Exemple q s v w t z x y r u 31 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Exemple q s v w t z x y r u 32 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Exemple q s v w z r x {s, v , w } Graphe quotient y t u {q, t, y } {r } {x, z} {u} 33 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Algorithme de Kosaraju Parcours en profondeur sur G On obtient les valeurs post1 Parcours en profondeur sur G t en prenant les sommets par valeurs post1 décroissantes Les arbres sont les CFC. 34 / 35 Pourquoi des graphes ? Exploration d’un labyrinthe Parcours en profondeur Tri topologique Composantes fortement connexes Thank you for your attention! 35 / 35