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