Vous êtes sur la page 1sur 75

University of Monastir

Théorie des Graphes et Optimisation:


Graphes Orientés

Brahim Hnich

Department of Computer Science


Spring 2016–1017

April 2017

. . . .... .... .... . . . . .


The Scientific Method

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
2
The Scientific Method

Ibn al-Haytham (Alhazen), 965–1039 Iraq. A polymath, considered by


some to be the father of modern scientific methodology, due to his
emphasis on experimental data and reproducibility of its results.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
3
Plan

1 Definition

2 Arborescences

3 Recherche d’un parcours dans un graphe


Parcours en largeur
Parcours en profondeur
Méthode de recherche de parcours en profondeur
Intervalles de traitement
Classification des arcs
Tri topologique d’un graphe
Recherche de composantes fortement connexes

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
4
Definition

Graphe orienté

Definition
Un graphe orienté G(SO, AR) est déterminé par un ensemble
SO = {s1 , s2 , . . . , sn } dont les éléments sont appelés sommets et un
ensemble AR = {a1 , a2 , . . . , am } dont les éléments sont appelés arcs.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
5
Definition

Graphe orienté
Definition
Une chaı̂ne est une séquence d’arcs (ou d’arêtes) telle que chaque arc (ou
arête) ait une extrémité commune avec le suivant.

Definition
Un chemin est une chaı̂ne telle que tous les arcs sont orientés dans le
même sens.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
6
Definition

Graphe orienté
Definition
Un cycle est une chaı̂ne telle que la séquence n’utilise pas deux fois le
même arc (ou arête) et le premier et le dernier arc (ou arête) de la
séquence ont une extrémité commune.

Definition
Un circuit est un cycle tel que tous les arcs sont orientés dans le même
sens. Les notions de chemin et de circuit s’appliquent exclusivement aux
graphes orientés.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
7
Definition

Graphe orienté

Definition
Un graphe est connexe si pour toute paire (si , sj ) de sommets distincts, il
existe une chaı̂ne joignant si et sj .

Definition
Un graphe orienté est fortement connexe si chaque sommet est accessible
depuis n’importe quel autre. En d’autres termes, un graphe orienté est
fortement connexe si pour toute paire (s, s) de sommets distincts, il existe
un chemin allant de s à s.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
8
Definition

Graphe orienté
Definition
La composante connexe d’un sommet s, notée CC(s), est le
sous-ensemble de sommets tels qu’il existe une chaı̂ne entre deux sommets
quelconques de CC(s).

Definition
La composante fortement connexe d’un sommet d’un graphe orienté, notée
CF C(s), définit les sommets accessibles mutuellement par un chemin.

Les composantes fortement connexes sont les classes d’équivalence de la


relation entre sommets ”sont accessibles mutuellement”.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
9
Arborescences

Qu’est-ce qu’une arborescence?

Definition
Une arborescence est un arbre orienté G dont tous les sommets sont de
degré entrant égal à 1 à l’exception d’un seul, appelé racine, pour lequel le
degré entrant est nul.

Dans une arborescence, tout sommet sj accessible depuis si (si ̸= sj )


est désigné descendant de si tandis que si est désigné ancêtre de sj .

Soit un arc a reliant le sommet si au sommet sj , si est désigné père


de sj et sj le fils de si .

Si deux sommets ont le même père, on dit qu’ils sont frères.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
10
Arborescences

Qu’est-ce qu’une arborescence?

Dans une arborescence finie, il existe trois types de sommets:


la racine (sans père),

les feuilles (sans fils),

les noeuds (un père et au moins un fils).

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
11
Arborescences

Qu’est-ce qu’une arborescence?

Soit une arborescence et s un de ses sommets, le sous-graphe de


l’arborescence composé des descendants de s est une arborescence de
racine s.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
12
Arborescences

Qu’est-ce qu’une arborescence?

Soit un arbre fini non orienté, pour tout sommet s il existe une
orientation qui en fait une arborescence de racine s.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
13
Arborescences

Qu’est-ce qu’une arborescence?

Le nombre de fils d’un sommet est appelé le degré de ce sommet

La longueur du chemin entre la racine de larborescence et un sommet


définit la profondeur de ce sommet.

La plus grande profondeur détermine la hauteur de larborescence.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
14
Arborescences

Arborescence binaire
Une arborescence binaire est une arborescence où chaque sommet a
au plus deux fils:
un fils gauche
un fils droit
Dans une arborescence binaire, la position du fils est importante:
gauche ou droite.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
15
Arborescences

Arborescence binaire

Une arborescence binaire est complète, si chaque sommet qui a des


fils, a un fils gauche et un fils droit.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
16
Arborescences

Arborescence binaire

Une arborescence peut être représentée par un tableau. Le ieme


élément du tableau définit le sommet ”père” du sommet i la racine de
l’arborescence est représentée par le symbole ”ˆ”.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
17
Recherche d’un parcours dans un graphe

Recherche d’un parcours dans un graphe

Graphe non orienté: Identifier les sommets accessibles depuis un


sommet donné d’un graphe. En d’autres termes, il s’agit d’identifier
toutes les chaı̂nes contenant le sommet choisi.
Graphe orienté: Identifier tous les chemins qui ont pour origine le
sommet choisi.
Cette recherche de parcours est un problème fréquent de la théorie de
parcours, elle peut s’effectuer de deux manières:
parcours en largeur
parcours en profondeur.

Les résultats de ces parcours sont des arborescences qui identifient les
sommets accessibles depuis un sommet donné.
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
18
Recherche d’un parcours dans un graphe Parcours en largeur

Distance

Dans un graphe orienté, on définit la distance en arc, notée


DA (si , sj ), le nombre d’arcs minimum nécessaire pour relier si à sj
ou ∞ s’il n’existe pas de chemin reliant si à sj .

De la même façon, on définit cette distance dans un graphe non


orienté par le nombre minimum d’arêtes reliant si à sj ou ∞ s’il
n’existe aucune chaı̂ne entre si et sj .

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
19
Recherche d’un parcours dans un graphe Parcours en largeur

Description

Le parcours recherche les sommets accessibles depuis un sommet


donné.

De plus, il calcule la distance en arc entre ce sommet et tous les


sommets accessibles (à partir de ce sommet).

Le résultat de ce parcours est formalisé d’une part par une


arborescence, désignée arborescence en largeur, contenant tous les
sommets accessibles depuis un sommet donné et, dautre part, par un
tableau mémorisant les distances en arc.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
20
Recherche d’un parcours dans un graphe Parcours en largeur

Exemple
Soit le graphe orienté suivant:

La recherche d’un parcours en largeur à partir du sommet s1 est fourni par


les deux tableaux suivants:
AL : représentation de l’arborescence en largeur
s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12
ˆ s3 s4 s1 s4 s5 s2 s7 s7 s6 – –
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
21
Recherche d’un parcours dans un graphe Parcours en largeur

Exemple
Soit le graphe orienté suivant:

La recherche d’un parcours en largeur à partir du sommet s1 est fourni par


les deux tableaux suivants:
△L : représentation de la distance en arc
s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12
0 3 2 1 2 3 4 5 5 4 ∞ ∞
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
22
Recherche d’un parcours dans un graphe Parcours en largeur

Méthode de recherche d’un parcours en largeur

La méthode pour construire un parcours en largeur s’appuie sur un


sous-ensemble de sommets SO qui identifie les sommets accessibles.

Le tableau, noté AL , représente larborescence en largeur

tandis que le tableau, noté △L , mémorise les distances en arc.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
23
Recherche d’un parcours dans un graphe Parcours en largeur

L’algorithme

1 Initialiser SO = ∅, AL [s] = −− et △L [s] = ∞ pour tous les sommets


du graphe
2 Choisir un sommet si du graphe
1 AL [si ] = ˆ
2 △L [s] = 0
3 Ajouter si à SO
3 Rechercher les sommets adjacents (vers l’extérieur dans un graphe
orienté) à SO Pour tous les sommets sk trouvés:
1 AL [sk ] = predecesseur[sk ]
2 △L [sk ] = △L [predecesseur[sk ]] + 1
3 Ajouter les sommets sk à SO
4 Recommencer la recherche jusqu’à ce qu’il n’existe plus de sommets
adjacents (vers l’extérieur dans un graphe orienté) à SO.
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
24
Recherche d’un parcours dans un graphe Parcours en largeur

Exemple1
En reprenant le graphe de l’exemple précédent, la première étape initialise la recherche du
parcours en largeur à partir de s1 .

AL

s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12


ˆ – – – – – – – – – – –

△L

s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12


0 ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞
1
le code des couleurs: arc traversant la coupure, arc de l’arborescence en largeur,
. . . . . . . . . . . . . . . . . . . .
sommet de l’arborescence en largeur, sommet à ajouter dans
. . . l’arborescence
. . . . . . . . . . en
. . largeur.
. . . . .
25
Recherche d’un parcours dans un graphe Parcours en largeur

Exemple2
L’étape suivante identifie le sommet s4 comme étant le successeur de s1 .

AL

s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12


ˆ – – s1 – – – – – – – –

△L

s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12


0 ∞ ∞ 1 ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞

2
le code des couleurs: arc traversant la coupure, arc de l’arborescence en largeur,
. . . . . . . . . . . . . . . . . . . .
sommet de l’arborescence en largeur, sommet à ajouter dans
. . . l’arborescence
. . . . . . . . . . en
. . largeur.
. . . . .
26
Recherche d’un parcours dans un graphe Parcours en largeur

Exemple3
L’étape suivante identifie les sommets s3 et s5 à partir des arcs adjacents vers l’extérieur au
sous-ensemble SO.

AL

s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12


ˆ – s4 s1 s4 – – – – – – –

△L

s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12


0 ∞ 2 1 2 ∞ ∞ ∞ ∞ ∞ ∞ ∞
3
le code des couleurs: arc traversant la coupure, arc de l’arborescence en largeur,
. . . . . . . . . . . . . . . . . . . .
sommet de l’arborescence en largeur, sommet à ajouter dans
. . . l’arborescence
. . . . . . . . . . en
. . largeur.
. . . . .
27
Recherche d’un parcours dans un graphe Parcours en largeur

Exemple4
Les étapes suivantes poursuivent la construction du parcours en largeur.

AL

s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12


ˆ s3 s4 s1 s4 s5 – – – – – –

△L

s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12


0 3 2 1 2 3 ∞ ∞ ∞ ∞ ∞ ∞

4
le code des couleurs: arc traversant la coupure, arc de l’arborescence en largeur,
. . . . . . . . . . . . . . . . . . . .
sommet de l’arborescence en largeur, sommet à ajouter dans
. . . l’arborescence
. . . . . . . . . . en
. . largeur.
. . . . .
28
Recherche d’un parcours dans un graphe Parcours en largeur

Exemple5

AL

s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12


ˆ s3 s4 s1 s4 s5 s2 – – s6 – –

△L

s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12


0 3 2 1 2 3 4 ∞ ∞ 4 ∞ ∞

5
le code des couleurs: arc traversant la coupure, arc de l’arborescence en largeur,
. . . . . . . . . . . . . . . . . . . .
sommet de l’arborescence en largeur, sommet à ajouter dans
. . . l’arborescence
. . . . . . . . . . en
. . largeur.
. . . . .
29
Recherche d’un parcours dans un graphe Parcours en largeur

Exemple6

AL

s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12


ˆ s3 s4 s1 s4 s5 s2 s7 s7 s6 – –

△L

s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12


0 3 2 1 2 3 4 5 5 4 ∞ ∞

6
le code des couleurs: arc traversant la coupure, arc de l’arborescence en largeur,
. . . . . . . . . . . . . . . . . . . .
sommet de l’arborescence en largeur, sommet à ajouter dans
. . . l’arborescence
. . . . . . . . . . en
. . largeur.
. . . . .
30
Recherche d’un parcours dans un graphe Parcours en largeur

Exemple7
Il n’existe plus d’arête traversante, le parcours est donc terminé.

AL

s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12


ˆ s3 s4 s1 s4 s5 s2 s7 s7 s6 – –

△L

s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12


0 3 2 1 2 3 4 5 5 4 ∞ ∞

7
le code des couleurs: arc traversant la coupure, arc de l’arborescence en largeur,
. . . . . . . . . . . . . . . . . . . .
sommet de l’arborescence en largeur, sommet à ajouter dans
. . . l’arborescence
. . . . . . . . . . en
. . largeur.
. . . . .
31
Recherche d’un parcours dans un graphe Parcours en largeur

Exemple8
Suite à ce traitement, le parcours en largeur depuis le sommet s1 peut être représenté par
l’arborescence suivante :

AL

s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12


ˆ s3 s4 s1 s4 s5 s2 s7 s7 s6 – –

△L

s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12


0 3 2 1 2 3 4 5 5 4 ∞ ∞
8
le code des couleurs: arc traversant la coupure, arc de l’arborescence en largeur,
. . . . . . . . . . . . . . . . . . . .
sommet de l’arborescence en largeur, sommet à ajouter dans
. . . l’arborescence
. . . . . . . . . . en
. . largeur.
. . . . .
32
Recherche d’un parcours dans un graphe Parcours en profondeur

Parcours en profondeur

Le parcours en profondeur est un parcours qui cherche à descendre plus


profondément dans le graphe chaque fois que c’est possible. Ce parcours
construit une forêt en profondeur composée de plusieurs arborescences en
profondeur.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
33
Recherche d’un parcours dans un graphe Parcours en profondeur

Algorithme de recherche de parcours en profondeur


Les étapes de la construction de ce parcours sont les suivantes:
1 Etape initiale : Tous les sommets sont coloriés en Couleur1.
2 Etape 1 : Un sommet colorié en Couleur1 est choisi arbitrairement et
il est colorié en Couleur2 et devient le sommet courant. Ce sommet
est racine dune arborescence en profondeur.
3 Etape 2 : Si le sommet courant a un sommet successeur (ou voisin)
colorié en Couleur1, on le colorie en Couleur2 et on ajoute ce sommet
dans l’arborescence en profondeur et il devient le sommet courant.
4 Etape 3 : S’il n’existe aucun sommet successeur Couleur1, le sommet
est marqué en Couleur3 et on remonte au sommet père dans
l’arborescence en profondeur qui devient le sommet courant.
Ce parcours reprend à partir de l’étape 2 jusqu’à ce que tous les sommets
accessibles à partir du sommet défini à l’étape 1 aient été découverts. A la
fin du parcours, s’il reste des sommets coloriés en Couleur1 on
recommence à l’étape 1. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
34
Recherche d’un parcours dans un graphe Parcours en profondeur

Exemple

Soit le graphe orienté suivant:

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
35
Recherche d’un parcours dans un graphe Parcours en profondeur

Exemple9

L’étape initiale consiste à colorier en bleu tous les sommets du graphe.

9
le code des couleurs: sommet non découvert, sommet découvert mais existence de
sommets successeurs (ou voisins) non découverts, sommet totalement exploré, arc
adjacent vers l’exterieur d’un sommet en cours de traitement (autre qu’un arc de
. . . . . . . . . . . . . . . . . . . .
l’arborescence en profondeur), arc de l’arborescence en profondeur.
. . . . . . . . . . . . . . . . . . . .
36
Recherche d’un parcours dans un graphe Parcours en profondeur

Exemple10

Il s’agit ensuite de choisir un sommet, le sommet choisi est s2 (étape 1);


ce sommet devient la racine d’une arborescence et le sommet courant.

10
le code des couleurs: sommet non découvert, sommet découvert mais existence de
sommets successeurs (ou voisins) non découverts, sommet totalement exploré, arc
adjacent vers l’exterieur d’un sommet en cours de traitement (autre qu’un arc de
. . . . . . . . . . . . . . . . . . . .
l’arborescence en profondeur), arc de l’arborescence en profondeur.
. . . . . . . . . . . . . . . . . . . .
37
Recherche d’un parcours dans un graphe Parcours en profondeur

Exemple11

L’étape suivante (étape 2) consiste à découvrir un successeur non


découvert de s2 : s1 , s5 ou s7 ; le sommet choisi est s1 et il devient le
sommet courant.

11
le code des couleurs: sommet non découvert, sommet découvert mais existence de
sommets successeurs (ou voisins) non découverts, sommet totalement exploré, arc
adjacent vers l’exterieur d’un sommet en cours de traitement (autre qu’un arc de
. . . . . . . . . . . . . . . . . . . .
l’arborescence en profondeur), arc de l’arborescence en profondeur.
. . . . . . . . . . . . . . . . . . . .
38
Recherche d’un parcours dans un graphe Parcours en profondeur

Exemple12

L’étape suivante (étape 2) consiste à découvrir un successeur non


découvert de s1 : s4 ; ce sommet devient le sommet courant.

12
le code des couleurs: sommet non découvert, sommet découvert mais existence de
sommets successeurs (ou voisins) non découverts, sommet totalement exploré, arc
adjacent vers l’exterieur d’un sommet en cours de traitement (autre qu’un arc de
. . . . . . . . . . . . . . . . . . . .
l’arborescence en profondeur), arc de l’arborescence en profondeur.
. . . . . . . . . . . . . . . . . . . .
39
Recherche d’un parcours dans un graphe Parcours en profondeur

Exemple13

L’étape suivante (étape 2) consiste à découvrir un successeur non


découvert de s4 : s3 ou s5 ; le sommet s5 est choisi et il devient le sommet
courant.

13
le code des couleurs: sommet non découvert, sommet découvert mais existence de
sommets successeurs (ou voisins) non découverts, sommet totalement exploré, arc
adjacent vers l’exterieur d’un sommet en cours de traitement (autre qu’un arc de
. . . . . . . . . . . . . . . . . . . .
l’arborescence en profondeur), arc de l’arborescence en profondeur.
. . . . . . . . . . . . . . . . . . . .
40
Recherche d’un parcours dans un graphe Parcours en profondeur

Exemple14

L’étape suivante (étape 2) consiste à découvrir un successeur non


découvert de s5 : s6 ; ce sommet devient le sommet courant.

14
le code des couleurs: sommet non découvert, sommet découvert mais existence de
sommets successeurs (ou voisins) non découverts, sommet totalement exploré, arc
adjacent vers l’exterieur d’un sommet en cours de traitement (autre qu’un arc de
. . . . . . . . . . . . . . . . . . . .
l’arborescence en profondeur), arc de l’arborescence en profondeur.
. . . . . . . . . . . . . . . . . . . .
41
Recherche d’un parcours dans un graphe Parcours en profondeur

Exemple15

L’étape suivante (étape 2) consiste à découvrir un successeur non


découvert de s6 : s10 ; ce sommet devient le sommet courant.

15
le code des couleurs: sommet non découvert, sommet découvert mais existence de
sommets successeurs (ou voisins) non découverts, sommet totalement exploré, arc
adjacent vers l’exterieur d’un sommet en cours de traitement (autre qu’un arc de
. . . . . . . . . . . . . . . . . . . .
l’arborescence en profondeur), arc de l’arborescence en profondeur.
. . . . . . . . . . . . . . . . . . . .
42
Recherche d’un parcours dans un graphe Parcours en profondeur

Exemple16

Le sommet s10 n’a pas de successeur, le sommet est donc colorié en vert
(étape 3) et le sommet s6 devient le sommet courant.

16
le code des couleurs: sommet non découvert, sommet découvert mais existence de
sommets successeurs (ou voisins) non découverts, sommet totalement exploré, arc
adjacent vers l’exterieur d’un sommet en cours de traitement (autre qu’un arc de
. . . . . . . . . . . . . . . . . . . .
l’arborescence en profondeur), arc de l’arborescence en profondeur.
. . . . . . . . . . . . . . . . . . . .
43
Recherche d’un parcours dans un graphe Parcours en profondeur

Exemple17

Le sommet s6 n’a pas de successeur (non découvert), le sommet est donc


colorié en vert (étape 3) et le sommet s5 devient le sommet courant.

17
le code des couleurs: sommet non découvert, sommet découvert mais existence de
sommets successeurs (ou voisins) non découverts, sommet totalement exploré, arc
adjacent vers l’exterieur d’un sommet en cours de traitement (autre qu’un arc de
. . . . . . . . . . . . . . . . . . . .
l’arborescence en profondeur), arc de l’arborescence en profondeur.
. . . . . . . . . . . . . . . . . . . .
44
Recherche d’un parcours dans un graphe Parcours en profondeur

Exemple18

L’étape suivante (étape 2) consiste à découvrir un successeur non


découvert de s5 : s3 ; ce sommet devient le sommet courant.

18
le code des couleurs: sommet non découvert, sommet découvert mais existence de
sommets successeurs (ou voisins) non découverts, sommet totalement exploré, arc
adjacent vers l’exterieur d’un sommet en cours de traitement (autre qu’un arc de
. . . . . . . . . . . . . . . . . . . .
l’arborescence en profondeur), arc de l’arborescence en profondeur.
. . . . . . . . . . . . . . . . . . . .
45
Recherche d’un parcours dans un graphe Parcours en profondeur

Exemple19

Le sommet s3 n’a pas de successeur (non découvert), le sommet est donc


colorié en vert (étape 3) et le sommet s5 devient le sommet courant.

19
le code des couleurs: sommet non découvert, sommet découvert mais existence de
sommets successeurs (ou voisins) non découverts, sommet totalement exploré, arc
adjacent vers l’exterieur d’un sommet en cours de traitement (autre qu’un arc de
. . . . . . . . . . . . . . . . . . . .
l’arborescence en profondeur), arc de l’arborescence en profondeur.
. . . . . . . . . . . . . . . . . . . .
46
Recherche d’un parcours dans un graphe Parcours en profondeur

Exemple20

Le sommet s5 n’a pas de successeur (non découvert), le sommet est donc


colorié en vert (étape 3) et le sommet s4 devient le sommet courant.

20
le code des couleurs: sommet non découvert, sommet découvert mais existence de
sommets successeurs (ou voisins) non découverts, sommet totalement exploré, arc
adjacent vers l’exterieur d’un sommet en cours de traitement (autre qu’un arc de
. . . . . . . . . . . . . . . . . . . .
l’arborescence en profondeur), arc de l’arborescence en profondeur.
. . . . . . . . . . . . . . . . . . . .
47
Recherche d’un parcours dans un graphe Parcours en profondeur

Exemple21

Le sommet s4 n’a pas de successeur (non découvert), le sommet est donc


colorié en vert (étape 3) et le sommet s1 devient le sommet courant.

21
le code des couleurs: sommet non découvert, sommet découvert mais existence de
sommets successeurs (ou voisins) non découverts, sommet totalement exploré, arc
adjacent vers l’exterieur d’un sommet en cours de traitement (autre qu’un arc de
. . . . . . . . . . . . . . . . . . . .
l’arborescence en profondeur), arc de l’arborescence en profondeur.
. . . . . . . . . . . . . . . . . . . .
48
Recherche d’un parcours dans un graphe Parcours en profondeur

Exemple22

Le sommet s1 n’a pas de successeur (non découvert), le sommet est donc


colorié en vert (étape 3) et le sommet s2 devient le sommet courant.

22
le code des couleurs: sommet non découvert, sommet découvert mais existence de
sommets successeurs (ou voisins) non découverts, sommet totalement exploré, arc
adjacent vers l’exterieur d’un sommet en cours de traitement (autre qu’un arc de
. . . . . . . . . . . . . . . . . . . .
l’arborescence en profondeur), arc de l’arborescence en profondeur.
. . . . . . . . . . . . . . . . . . . .
49
Recherche d’un parcours dans un graphe Parcours en profondeur

Exemple23

L’étape suivante (étape 2) consiste à découvrir un successeur non


découvert de s2 : s7 ; ce sommet devient le sommet courant.

23
le code des couleurs: sommet non découvert, sommet découvert mais existence de
sommets successeurs (ou voisins) non découverts, sommet totalement exploré, arc
adjacent vers l’exterieur d’un sommet en cours de traitement (autre qu’un arc de
. . . . . . . . . . . . . . . . . . . .
l’arborescence en profondeur), arc de l’arborescence en profondeur.
. . . . . . . . . . . . . . . . . . . .
50
Recherche d’un parcours dans un graphe Parcours en profondeur

Exemple24

L’étape suivante (étape 2) consiste à découvrir un successeur non


découvert de s7 : s8 ou s9 ; le sommet choisi est s9 et il devient le sommet
courant.

24
le code des couleurs: sommet non découvert, sommet découvert mais existence de
sommets successeurs (ou voisins) non découverts, sommet totalement exploré, arc
adjacent vers l’exterieur d’un sommet en cours de traitement (autre qu’un arc de
. . . . . . . . . . . . . . . . . . . .
l’arborescence en profondeur), arc de l’arborescence en profondeur.
. . . . . . . . . . . . . . . . . . . .
51
Recherche d’un parcours dans un graphe Parcours en profondeur

Exemple25

Le sommet s9 n’a pas de successeur (non découvert), le sommet est donc


colorié en vert (étape 3) et le sommet s7 devient le sommet courant.

25
le code des couleurs: sommet non découvert, sommet découvert mais existence de
sommets successeurs (ou voisins) non découverts, sommet totalement exploré, arc
adjacent vers l’exterieur d’un sommet en cours de traitement (autre qu’un arc de
. . . . . . . . . . . . . . . . . . . .
l’arborescence en profondeur), arc de l’arborescence en profondeur.
. . . . . . . . . . . . . . . . . . . .
52
Recherche d’un parcours dans un graphe Parcours en profondeur

Exemple26

L’étape suivante (étape 2) consiste à découvrir un successeur non


découvert de s7 : s8 ; ce sommet devient le sommet courant.

26
le code des couleurs: sommet non découvert, sommet découvert mais existence de
sommets successeurs (ou voisins) non découverts, sommet totalement exploré, arc
adjacent vers l’exterieur d’un sommet en cours de traitement (autre qu’un arc de
. . . . . . . . . . . . . . . . . . . .
l’arborescence en profondeur), arc de l’arborescence en profondeur.
. . . . . . . . . . . . . . . . . . . .
53
Recherche d’un parcours dans un graphe Parcours en profondeur

Exemple27

Le sommet s8 n’a pas de successeur (non découvert), le sommet est donc


colorié en vert (étape 3) et le sommet s7 devient le sommet courant.

27
le code des couleurs: sommet non découvert, sommet découvert mais existence de
sommets successeurs (ou voisins) non découverts, sommet totalement exploré, arc
adjacent vers l’exterieur d’un sommet en cours de traitement (autre qu’un arc de
. . . . . . . . . . . . . . . . . . . .
l’arborescence en profondeur), arc de l’arborescence en profondeur.
. . . . . . . . . . . . . . . . . . . .
54
Recherche d’un parcours dans un graphe Parcours en profondeur

Exemple28

Le sommet s7 n’a pas de successeur (non découvert), le sommet est donc


colorié en vert (étape 3) et le sommet s2 devient le sommet courant.

28
le code des couleurs: sommet non découvert, sommet découvert mais existence de
sommets successeurs (ou voisins) non découverts, sommet totalement exploré, arc
adjacent vers l’exterieur d’un sommet en cours de traitement (autre qu’un arc de
. . . . . . . . . . . . . . . . . . . .
l’arborescence en profondeur), arc de l’arborescence en profondeur.
. . . . . . . . . . . . . . . . . . . .
55
Recherche d’un parcours dans un graphe Parcours en profondeur

Exemple29
Le sommet s2 n’a pas de successeur (non découvert), le sommet est donc
colorié en vert (étape 3). Le sommet défini à l’étape 1 étant colorié en
vert, le parcours à partir de ce sommet est terminé. Il reste des sommets
non découverts dans le graphe (s11 et s12 ). On choisit s12 comme racine
d’une nouvelle arborescence (étape 1) et ce sommet devient le sommet
courant.

29
le code des couleurs: sommet non découvert, sommet découvert mais existence de
sommets successeurs (ou voisins) non découverts, sommet totalement exploré, arc
adjacent vers l’exterieur d’un sommet en cours de traitement. . (autre
. . . . . qu’un
. . . . arc
. . . de
. . . . . .
. . . . . . . . . . . . . . . . . . . .
l’arborescence en profondeur), arc de l’arborescence en profondeur. 56
Recherche d’un parcours dans un graphe Parcours en profondeur

Exemple30

L’étape suivante (étape 2) consiste à découvrir un successeur non


découvert de s12 : s11 ; ce sommet devient le sommet courant.

30
le code des couleurs: sommet non découvert, sommet découvert mais existence de
sommets successeurs (ou voisins) non découverts, sommet totalement exploré, arc
adjacent vers l’exterieur d’un sommet en cours de traitement (autre qu’un arc de
. . . . . . . . . . . . . . . . . . . .
l’arborescence en profondeur), arc de l’arborescence en profondeur.
. . . . . . . . . . . . . . . . . . . .
57
Recherche d’un parcours dans un graphe Parcours en profondeur

Exemple31

Le sommet s11 n’a pas de successeur (non découvert), le sommet est donc
colorié en vert (étape 3) et le sommet s12 devient le sommet courant.

31
le code des couleurs: sommet non découvert, sommet découvert mais existence de
sommets successeurs (ou voisins) non découverts, sommet totalement exploré, arc
adjacent vers l’exterieur d’un sommet en cours de traitement (autre qu’un arc de
. . . . . . . . . . . . . . . . . . . .
l’arborescence en profondeur), arc de l’arborescence en profondeur.
. . . . . . . . . . . . . . . . . . . .
58
Recherche d’un parcours dans un graphe Parcours en profondeur

Exemple32

Le sommet s12 n’a pas de successeur (non découvert), le sommet est donc
colorié en vert (étape 3) et il n’existe plus de sommet non découvert (bleu)
dans le graphe. Le parcours est donc terminé.

32
le code des couleurs: sommet non découvert, sommet découvert mais existence de
sommets successeurs (ou voisins) non découverts, sommet totalement exploré, arc
adjacent vers l’exterieur d’un sommet en cours de traitement (autre qu’un arc de
. . . . . . . . . . . . . . . . . . . .
l’arborescence en profondeur), arc de l’arborescence en profondeur.
. . . . . . . . . . . . . . . . . . . .
59
Recherche d’un parcours dans un graphe Parcours en profondeur

Exemple
Ce parcours à donc permis d’identifier les deux arborescences en
profondeur suivante:

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
60
Recherche d’un parcours dans un graphe Parcours en profondeur

Intervalles de traitement

Lors du parcours en profondeur il est intéressant de mémoriser, pour


chaque sommet s du graphe,
l’instant de découverte (coloriage en Couleur2), noté Id [s]
l’instant de fin de traitement (coloriage en Couleur3), noté If [s]

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
61
Recherche d’un parcours dans un graphe Parcours en profondeur

Intervalles de traitement

La définition des intervalles de traitement remplace l’utilisation des


couleurs.
L’instant de fin du dernier sommet traité doit être égal à deux fois le
nombre de sommets du graphe.
Il est à noter que les valeurs définies dans les intervalles correspondent
au numéro des étapes identifiées lors du parcours en profondeur.
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
62
Recherche d’un parcours dans un graphe Parcours en profondeur

Intervalles de traitement
Théorème des parenthèses
Dans un parcours en profondeur dans graphe G = (S, A), pour tous
sommets quelconques si et sj , une seule des conditions suivantes est
vérifiée:
les intervalles [Id [si ], If [si ]] et [Id [sj ], If [sj ]] sont complètement
disjoints,
l’intervalle [Id [si ], If [si ]] est inclus dans [Id [sj ], If [sj ]] et si est un
descendant de sj dans l’arborescence en profondeur,
l’intervalle [Id [sj ], If [sj ]] est inclus dans [Id [si ], If [si ]] et sj est un
descendant de si dans l’arborescence en profondeur.

Corollaire (imbrication des intervalles des descendants)


Le sommet si est un descendant du sommet sj dans la forêt en profondeur
d’un graphe G si et seulement si Id [sj ] < Id [si ] <. I.f .[s. i.] . <. .I.f. [s. j. ].. . . . . . . .
. . . . . . . . . . . . . . . . . . . .
63
Recherche d’un parcours dans un graphe Parcours en profondeur

Intervalles de traitement

Le schéma suivant montre l’imbrication des intervalles dans le parcours en


profondeur de l’exemple précédent:

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
64
Recherche d’un parcours dans un graphe Parcours en profondeur

Classification des arcs

Une propriété intéressante du parcours en profondeur est que le


parcours peut servir à classer les arcs (ou arêtes) d’un graphe. Il est
possible de définir quatre types d’arcs en fonction de la forêt en
profondeur obtenue par un parcours en profondeur sur G:
les arcs de liaison sont les arcs de la forêt,
les arcs retour sont les arcs du graphe reliant un sommet à un ancêtre
dans la forêt en profondeur; les boucles sont considérées comme des
arcs retour,
les arcs avant sont les arcs du graphe qui ne sont pas des arcs de liaison
et qui relient un sommet à un descendant dans la forêt en profondeur,
les arcs couvrants sont tous les autres arcs; ils peuvent relier deux
sommets frères dune arborescence ou ils peuvent relier des sommets
appartenant à des arborescences en profondeur différentes.
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
65
Recherche d’un parcours dans un graphe Parcours en profondeur

Classification des arcs

En reprenant le parcours défini dans l’exemple précédent, la


classification des arcs est représentée par le graphe suivant:

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
66
Recherche d’un parcours dans un graphe Parcours en profondeur

Classification des arcs

Dans un parcours en profondeur d’un graphe non orienté, chaque


arête est soit une arête de liaison, soit une arête de retour.
Un graphe orienté G est sans circuit si et seulement si un parcours en
profondeur de G ne génère aucun arc retour.. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
67
Recherche d’un parcours dans un graphe Parcours en profondeur

Tri topologique d’un graphe

Le parcours en profondeur peut être utilisé pour effectuer un tri


topologique dun graphe orienté sans circuit.

Le tri topologique d’un graphe orienté acyclique G = (S, A) consiste


à ordonner linéairement tous ses sommets de telle sorte que si G
contient un arc entre si et sj , si apparaisse avant sj .

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
68
Recherche d’un parcours dans un graphe Parcours en profondeur

Algorithme: Tri topologique d’un graphe

Ce tri seffectue suivant les étapes suivantes:


1 Réaliser un parcours en profondeur pour calculer les instants de fin de
traitement de chaque sommet du graphe.

2 Classer les sommets par ordre décroissant des instants de fin de


traitement.

3 Reconstruire le graphe.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
69
Recherche d’un parcours dans un graphe Parcours en profondeur

Tri topologique d’un graphe


Exemple

L’exemple suivant montre un tri topologique:

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
70
Recherche d’un parcours dans un graphe Parcours en profondeur

Recherche de composantes fortement connexes

La recherche des composantes fortement connexes dans un graphe


orienté s’appuie sur les deux propriétés suivantes:
Si deux sommets se trouvent dans la même composante fortement
connexe, aucun chemin entre ces deux sommets ne sort de la
composante connexe.

Lors d’un parcours en profondeur quelconque, tous les sommets


appartenant à la même composante fortement connexe se trouvent sur
la même arborescence en profondeur.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
71
Recherche d’un parcours dans un graphe Parcours en profondeur

Algorithme: Recherche de composantes fortement


connexes

Cette recherche s’effectue suivant les étapes suivantes:


1 Réaliser un parcours en profondeur pour calculer les instants de fin de
traitement de chaque sommet du graphe.

2 Classer les sommets par ordre décroissant des instants de fin de


traitement.

3 Construire le graphe transposé du graphe G33 .

4 Réaliser un parcours en profondeur sur le graphe transposé en


s’appuyant sur les sommets classés par instants de fin.

33
Le graphe transposé Gt d’un graphe G est le graphe tel que, pour tout arc a de Gt ,
. . . . . . . . . . . . . . . . . . . .
il existe un arc b de G tel que o(a) = d(b) et d(a) = o(b).. . . . . . . . . . . . . . . . . . . .
72
Recherche d’un parcours dans un graphe Parcours en profondeur

Recherche de composantes fortement connexes


Exemple

L’exemple suivant montre la recherche des composantes fortement


connexes dans le graphe traité en exemple de recherche de parcours en
profondeur:

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
73
Recherche d’un parcours dans un graphe Parcours en profondeur

Recherche de composantes fortement connexes


Exemple

Le parcours en profondeur précédent permet de classer les sommets du


graphe de la façon suivante : s12 , s11 , s2 , s7 , s8 , s9 , s1 , s4 , s5 , s3 , s6 , s10 .
La recherche des composantes connexes s’effectue à partir du grpahe
transposé en tenant compte de l’ordre défini.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
74
Recherche d’un parcours dans un graphe Parcours en profondeur

Recherche de composantes fortement connexes


Exemple

Ce parcours identifie 5 arborescences en profondeur de racines s12 , s2 , s7 ,


s6 et s10 34 .

34
5 composantes fortement connexes: CF C(s12 ) = {s11 , s12 } CF C(s2 ) =
{s1 , s2 , s3 , s4 , s5 } CF C(s7 ) = {s7 , s8 , s9} CF C(s6 ) =. {s
. 6.} . CF . . {s
. .10 .}
. . . . . . . . . . . . . . . . . . . .
. . . C(s . ). =
. . . 10 . . .
75

Vous aimerez peut-être aussi