composantes fortement connexes - irif.frfrancoisl/divers/slides-cfc.pdf · cfc, puis de trouver les...

43
Composantes fortement connexes Algorithmique – L3 Fran¸ cois Laroussinie 15 novembre 2010

Upload: dinhkiet

Post on 02-Apr-2018

216 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Composantes fortement connexes

Algorithmique – L3

Francois Laroussinie

15 novembre 2010

Page 2: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Plan

1 Definitions

2 La definition des coefficients

3 Calcul des coefficients

Page 3: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Plan

1 Definitions

2 La definition des coefficients

3 Calcul des coefficients

Page 4: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Composantes fortement connexes

G = (S ,A) : un graphe oriente.

Definition : Une composante fortement connexe (CFC) C de G

est un sous-ensemble maximal de sommets de G tel que :si u, v ∈ C, alors u →∗

G v et v →∗

G u.

Page 5: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Composantes fortement connexes

G = (S ,A) : un graphe oriente.

Definition : Une composante fortement connexe (CFC) C de G

est un sous-ensemble maximal de sommets de G tel que :si u, v ∈ C, alors u →∗

G v et v →∗

G u.

Algorithme de Tarjan (SIAM Journal of Computing, Vol. 1, No. 2,June 1972)

Page 6: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Exemple : le graphe G

Page 7: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Exemple : les CFC de G

Page 8: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Idee de l’algorithme

L’algorithme de recherche des CFC est base sur les dates d[−] et laforet GΠ calculees lors d’un parcours en profondeur.

Page 9: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Idee de l’algorithme

L’algorithme de recherche des CFC est base sur les dates d[−] et laforet GΠ calculees lors d’un parcours en profondeur.

exemple. . .

Page 10: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Exemple : un parcours en profondeur de G

Page 11: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

On en deduit la foret GΠ. . .

Page 12: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients
Page 13: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Observations

Les sommets d’une meme CFC n’apparaissent pas n’importecomment dans la foret GΠ. . .

Est-ce un hasard ?

Page 14: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Observations

Les sommets d’une meme CFC n’apparaissent pas n’importecomment dans la foret GΠ. . .

Est-ce un hasard ?

Autre essai. . .

Page 15: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Autre parcours

Page 16: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Proprietes - 1

Propriete 21 Soient v ,w ∈ S tels que v ↔∗G w ,

1 alors v et w ont un ancetre commun dans GΠ ; et

2 soit u le sommet tel que (1) u →∗

GΠv , (2) u →∗

GΠw et (3)

d[u] est maximal, alors on a : v ↔∗

G u et u ↔∗

G w .

Page 17: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Place des CFC dans la foret GΠ

Page 18: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Place des CFC dans la foret GΠ

Corollaire :

Soit C une CFC de G .Alors l’arborescence GΠ restreinte aux sommets de C est un arbre(couvrant C).

Page 19: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Idee generale de l’algorithme

⇒ calculer un coefficient r[x ] pour chaque x ∈ S a partir des datesd[−] de maniere a ce que ∀x ∈ S , on ait :r[x ] = d[x ] ssi x est la racine de sa CFC

Def : la racine d’une CFC C est le premier sommet de C a etredecouvert dans le parcours en profondeur.

Page 20: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Idee generale de l’algorithme

⇒ calculer un coefficient r[x ] pour chaque x ∈ S a partir des datesd[−] de maniere a ce que ∀x ∈ S , on ait :r[x ] = d[x ] ssi x est la racine de sa CFC

Def : la racine d’une CFC C est le premier sommet de C a etredecouvert dans le parcours en profondeur.

Les coefficients r[−] vous nous permettre de trouver les racines desCFC, puis de trouver les autres sommets de ces CFC.

Page 21: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Plan

1 Definitions

2 La definition des coefficients

3 Calcul des coefficients

Page 22: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Definition des coefficients r

∀x ∈ S , on definit le coefficient r[x ] par :

r[x ]def= min

(

{d[x ]} ∪ {d[w ] | (1) x →∗

T/R−−−−→ w ∧

(2) ∃u ∈ S .u →∗

GΠx ∧ u →∗

GΠw ∧ (3)u ↔∗

G w})

Page 23: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Definition des coefficients r

∀x ∈ S , on definit le coefficient r[x ] par :

r[x ]def= min

(

{d[x ]} ∪ {d[w ] | (1) x →∗

T/R−−−−→ w ∧

(2) ∃u ∈ S .u →∗

GΠx ∧ u →∗

GΠw ∧ (3)u ↔∗

G w})

r[x ] est le minimum entre d[x ] et les dates de decouverte dessommets w qui :

1 sont accessibles depuis x par un chemin de GΠ prolonge parun arc “retour” ou un arc “transverse”, et tels que

2 x et w ont un ancetre commun dans GΠ, et

3 u et w sont dans la meme CFC.

Page 24: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Definition des coefficients r

r[x ]def= min

(

{d[x ]} ∪ {d[w ] | (1) x →∗GΠ

T/R−−−−→ w ∧

(2) ∃u ∈ S .u →∗GΠ

x ∧ u →∗GΠ

w ∧ (3)u ↔∗G w}

)

Page 25: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Autre definition

r[x ] est le minimum entre d[x ] et les d[w ] tel que w est unsommet de la CFC de x accessible depuis x par un chemin de la

forme x →∗

T/R−−−−→ w .

Page 26: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients
Page 27: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Proprietes des coefficients r

Comme w , u et x sont dans la meme CFC, on a :

Propriete 22

Pour tout sommet x d’une CFC C de racine uC , on a :

d[uC] ≤ r[x ] ≤ d[x ]

Page 28: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Proprietes des coefficients r

Comme w , u et x sont dans la meme CFC, on a :

Propriete 22

Pour tout sommet x d’une CFC C de racine uC , on a :

d[uC] ≤ r[x ] ≤ d[x ]

Propriete 23

Un sommet x est la racine d’une composante fortement connexe si

et seulement si r(x) = d[x ].

Page 29: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Plan

1 Definitions

2 La definition des coefficients

3 Calcul des coefficients

Page 30: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Algorithme de Tarjan

On modifie l’algorithme de parcours en profondeur. . .

Les nouvelles variables utilisees sont :

• nbcfc : pour compter le nombre de CFC trouvees ;

• NumCFC[−] : un tableau donnant pour chaque sommet lenumero de sa CFC ;

• rA[−] : un tableau pour stocker les coefficients r ;

• P est une pile pour stocker des sommets de G .

Page 31: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Algorithme de Tarjan

Procedure Tarjan-CFC(G )temps := 0;nbcfc := 0;P := Pile vide;pour chaque x ∈ S faire

Couleur[x ] := blanc;NumCFC[x ] := undef;

pour chaque x ∈ S fairesi Couleur[x ] = blanc alors CFC(x);

retourner NumCFC[]

Page 32: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Procedure CFC(x)1

temps++; d[x ] := temps; Couleur[x ] := gris;2

rA[x ] := d[x ];3

P .Empiler(x);4

pour chaque (x , y) ∈ A faire5

si Couleur[y ] = blanc alors6

CFC(y);7

rA[x ] := min(rA[x ], rA[y ]);8

sinon9

si d[y ] < d[x ] ∧ y ∈ P alors10

rA[x ] := min(rA[x ], d[y ]);11

temps++; f[x ] := temps; Couleur[x ] := noir;12

si rA[x ] = d[x ] alors13

nbcfc++;14

tant que P 6= ∅ ∧ d[P .Tete()] ≥ d[x ] faire15

y := P .Tete();16

P .Depiler();17

NumCFC[y ] := nbcfc;18

Page 33: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Comment ca marche ?

Il faut montrer que les coefficients rA[−] calcules par l’algorithmesont egaux aux r[−] definis precedemment.

Quelques elements. . .

Page 34: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Comment ca marche ?

Il faut montrer que les coefficients rA[−] calcules par l’algorithmesont egaux aux r[−] definis precedemment.

Quelques elements. . .

• P contient les sommets dont la racine de leur CFC est encoregrise. Ils ont des ancetres communs dans GΠ.Les sommets de C ne sont extraits de P que lorsque uC estcoloriee en noir et que les instructions 14-18 de CFC sontexecutees.

Page 35: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Comment ca marche ?

Il faut montrer que les coefficients rA[−] calcules par l’algorithmesont egaux aux r[−] definis precedemment.

Quelques elements. . .

• P contient les sommets dont la racine de leur CFC est encoregrise. Ils ont des ancetres communs dans GΠ.Les sommets de C ne sont extraits de P que lorsque uC estcoloriee en noir et que les instructions 14-18 de CFC sontexecutees.

• l’instruction 8 permet de faire ”remonter” les valeurs de rA[y ]a son pere x dans GΠ.

Page 36: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Comment ca marche ?

Il faut montrer que les coefficients rA[−] calcules par l’algorithmesont egaux aux r[−] definis precedemment.

Quelques elements. . .

• P contient les sommets dont la racine de leur CFC est encoregrise. Ils ont des ancetres communs dans GΠ.Les sommets de C ne sont extraits de P que lorsque uC estcoloriee en noir et que les instructions 14-18 de CFC sontexecutees.

• l’instruction 8 permet de faire ”remonter” les valeurs de rA[y ]a son pere x dans GΠ.

• le test de la ligne 10 (“d[y ] < d[x ] ∧ y ∈ P”) caracterise bienles arcs (x , y) de type ”retour” ou ”transverse” t.q. y a desancetres communs avec x dans GΠ et x ↔∗

G y ? . . .

Page 37: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

le test “d[y ] < d[x ] ∧ y ∈ P” caracterise bien les arcs (x , y) detype “retour” ou “transverse” t.q. y a des ancetres communs avecx dans GΠ et x ↔∗

G y .

Page 38: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

le test “d[y ] < d[x ] ∧ y ∈ P” caracterise bien les arcs (x , y) detype “retour” ou “transverse” t.q. y a des ancetres communs avecx dans GΠ et x ↔∗

G y .

• (x , y) : 6∈ GΠ (y n’est pas blanc) et pas arc avant(d[y ] < d[x ]) ;

Page 39: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

le test “d[y ] < d[x ] ∧ y ∈ P” caracterise bien les arcs (x , y) detype “retour” ou “transverse” t.q. y a des ancetres communs avecx dans GΠ et x ↔∗

G y .

• (x , y) : 6∈ GΠ (y n’est pas blanc) et pas arc avant(d[y ] < d[x ]) ;

• x , y ∈ P ⇒ ils ont des ancetres communs dans GΠ ;

Page 40: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

le test “d[y ] < d[x ] ∧ y ∈ P” caracterise bien les arcs (x , y) detype “retour” ou “transverse” t.q. y a des ancetres communs avecx dans GΠ et x ↔∗

G y .

• (x , y) : 6∈ GΠ (y n’est pas blanc) et pas arc avant(d[y ] < d[x ]) ;

• x , y ∈ P ⇒ ils ont des ancetres communs dans GΠ ;

• x ↔∗G y :

Page 41: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

le test “d[y ] < d[x ] ∧ y ∈ P” caracterise bien les arcs (x , y) detype “retour” ou “transverse” t.q. y a des ancetres communs avecx dans GΠ et x ↔∗

G y .

• (x , y) : 6∈ GΠ (y n’est pas blanc) et pas arc avant(d[y ] < d[x ]) ;

• x , y ∈ P ⇒ ils ont des ancetres communs dans GΠ ;

• x ↔∗G y :

• direct si (x , y) est un arc retour. . .

Page 42: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

le test “d[y ] < d[x ] ∧ y ∈ P” caracterise bien les arcs (x , y) detype “retour” ou “transverse” t.q. y a des ancetres communs avecx dans GΠ et x ↔∗

G y .

• (x , y) : 6∈ GΠ (y n’est pas blanc) et pas arc avant(d[y ] < d[x ]) ;

• x , y ∈ P ⇒ ils ont des ancetres communs dans GΠ ;

• x ↔∗G y :

• direct si (x , y) est un arc retour. . .• si (x , y) est un arc transverse, soient ux et uy les racines (en

gris car dans P) de leurs CFC. . .

Page 43: Composantes fortement connexes - irif.frfrancoisl/DIVERS/slides-cfc.pdf · CFC, puis de trouver les autres sommets de ces CFC. Plan 1 D´efinitions 2 La d´efinition des coefficients

Correction de l’algorithme de Tarjan

Theoreme

L’algorithme de Tarjan, verifie les proprietes suivantes :

1 a la date f[x ], on a : rA[x ] = r[x ],

2 a la fin du traitement CFC(uC), tous les sommets y de C sontretires de la pile P et verifient : NumCFC[y ] = NumCFC[uC],

3 a la fin de Tarjan-CFC(G ), chaque CFC a recu un numerodifferent : pour deux CFC distinctes C et C′, on aNumCFC[uC] 6= NumCFC[uC′].