Académique Documents
Professionnel Documents
Culture Documents
B F
C G
D
Définitions
B F
C G
D
Quelques observations
Vrai ou faux ?
I Soit uv un arc d’une composante fortement connexe. Alors
il existe un chemin de v à u.
Quelques observations
Vrai ou faux ?
I Soit uv un arc d’une composante fortement connexe. Alors
il existe un chemin de v à u.
I Soit uv un arc d’une composante fortement connexe. Alors
uv est contenu dans un circuit.
Quelques observations
Vrai ou faux ?
I Soit uv un arc d’une composante fortement connexe. Alors
il existe un chemin de v à u.
I Soit uv un arc d’une composante fortement connexe. Alors
uv est contenu dans un circuit.
I Soit u et v deux sommets d’un graphe orienté. Si u et v
appartiennent au même circuit, alors u et v sont dans la
même composante fortement connexe.
Quelques observations
Vrai ou faux ?
I Soit uv un arc d’une composante fortement connexe. Alors
il existe un chemin de v à u.
I Soit uv un arc d’une composante fortement connexe. Alors
uv est contenu dans un circuit.
I Soit u et v deux sommets d’un graphe orienté. Si u et v
appartiennent au même circuit, alors u et v sont dans la
même composante fortement connexe.
I Soit u et v deux sommets d’un graphe orienté. Si u et v
sont dans la même composante fortement connexe, alors
u et v appartiennent au même circuit.
Quelques observations
Vrai ou faux ?
I Soit uv un arc d’une composante fortement connexe. Alors
il existe un chemin de v à u.
I Soit uv un arc d’une composante fortement connexe. Alors
uv est contenu dans un circuit.
I Soit u et v deux sommets d’un graphe orienté. Si u et v
appartiennent au même circuit, alors u et v sont dans la
même composante fortement connexe.
I Soit u et v deux sommets d’un graphe orienté. Si u et v
sont dans la même composante fortement connexe, alors
u et v appartiennent au même circuit. FAUX !
Calcul de composantes fortement connexes
Lemme
Soit G un graphe orienté, soit C un circuit dans G. Soit G/C le
graphe obtenu en réduisant C en un seul sommet, disons c.
Alors G/C a autant de composantes connexes que G, en plus,
I Si une composante X ne couvre pas C, alors X est une
composante de G/C ;
I Si X est une composante couvrant C, alors X \ V (C) ∪ {c}
est une composante de G/C.
d(x) = min{d(u) : u ∈ X },
alors
f (x) = max{f (u) : u ∈ X }.
Parcours en profondeur et CFC
A : B, G
B:E
C:
D:F
E : D, G
F :E
G : B, C
Algorithme de Kosaraju – complexité
Algorithme 1 : DFS(G)
Données : graphe G Algorithme 2 : Visiter(u)
début début
pour chaque s sommet de couleur[u] ← GRIS ;
G faire d[u] ← temps ← temps + 1 ;
couleur[s] ← BLANC ; pour chaque v voisin de u
π[s] ← NULL ; faire
fin si couleur[v ] = BLANC
temps ← 0 ; alors
pour chaque s sommet de π[v ] ← u ;
G faire Visiter(v ) ;
si couleur[s] = BLANC fin
alors fin
Visiter(s) ; couleur[u] ← NOIR ;
fin f [u] ← temps ← temps + 1 ;
fin fin
fin
Algorithme de Tarjan – implémentation
Algorithme 2 : Visiter(u)
début
Algorithme 1 : DFS(G) couleur[u] ← GRIS ;
d[u] ← temps ← temps + 1 ;
Données : graphe G
t[u] ← d[u] ;
début
pour chaque s sommet de pour chaque v voisin de u
G faire faire
si couleur[v ] = BLANC
couleur[s] ← BLANC ;
alors
π[s] ← NULL ;
π[v ] ← u ;
fin
Visiter(v ) ;
temps ← 0 ;
t[u] ← min(t[u], t[v ]);
pour chaque s sommet de
fin
G faire
si couleur[s] = BLANC si couleur[v ] = GRIS
alors alors
t[u] ←
Visiter(s) ;
min(t[u], d[v ]);
fin
fin
fin
fin
fin
couleur[u] ← NOIR ;
f [u] ← temps ← temps + 1 ;
fin
Algorithme de Tarjan – implémentation
Algorithme 2 : Visiter(u)
début
couleur[u] ← GRIS ;
Algorithme 1 : DFS(G) d[u] ← temps ← temps + 1 ;
Données : graphe G t[u] ← d[u] ;
L.append(u) ;
début
pour chaque v voisin de u
pour chaque s sommet de
faire
G faire si couleur[v ] = BLANC
couleur[s] ← BLANC ; alors
π[s] ← NULL ; π[v ] ← u ;
fin Visiter(v ) ;
t[u] ← min(t[u], t[v ]);
temps ← 0 ;
fin
CFC ← [ ] ; sinon
L ← [] ; si v in L alors
pour chaque s sommet de t[u] ←
G faire min(t[u], d[v ]);
si couleur[s] = BLANC fin
alors fin
Visiter(s) ; fin
fin couleur[u] ← NOIR ;
f [u] ← temps ← temps + 1 ;
fin si t[u] = d[u] alors
fin CFC.append(L[u : ]);
L ← L[ : u];
fin
Algorithme de Tarjan – exemple