THEORIE DES GRAPHES
PARCOURS EN PROFONDEUR
TRI TOPOLOGI QUE
ELABORE PAR:
Sghaier Bechir
Marzougui Imed
PLAN DE L’EXPOSEE
1 PARCOURS EN PROFONDEUR
2 TRI TOPOLOGIQUE
I. Introduction
II. Parcours en profondeur
1. Définition
2. Principe
3.Algorithme
4. Application
5. Implémentation sur machine
1. Définition
2. Principe
3.Algorithme
4. Application
Parcours en profondeur
I. Introduction
En théorie de graphe un parcours de graphe est un algorithme
consistant à explorer les sommets d’un graphe de proche en
proche à partir d’un sommet initial.
Il existe de nombreux algorithmes de parcours. Les plus
couramment décrits sont le parcours en profondeur et le
parcours en largeur.
II. Parcours en profondeur
1- Définition:
L’algorithme de parcours en profondeur (DFS: Depth First
Search) est un algorithme de parcours d’arbre et plus
généralement de parcours de graphe. il se décrit
naturellement de manière récursive son application la plus
simple consiste à déterminer s’il existe un chemin d’un
sommet à un autre.
2- Principe
Le nom d’algorithme en profondeur est du au fait qu’il
explore à fond les chemins un par un : pour chaque
sommet, il marque le sommet actuel, et il prend le premier
sommet voisin jusqu’à ce que un sommet n’ait plus de voisin
( ou que tous ces voisins soient marqués ), et revient alors
au sommet père.
Pour cette raison on va utiliser une méthode de marquage
utilisant 3 couleurs qui sont blanc, gris et noir.
⮚Initialement associer le blanc à tous les sommets du
graphe (ne sont pas encore visités)
⮚ Lorsqu’un sommet est visité on lui associe le gris
⮚Le sommet reste en gris tant qu’il existe des successeurs
de ce sommet qui sont en blanc
⮚On associe le noir au sommet lorsque tous ces successeurs
sont en gris ou en noir.
3- Algorithme
Structures de données nécessaires pour implémenter
l’algorithme :
Solution itérative
3- Algorithme Solution itérative
A B
E
D
H
F
I
G
J
C
Tournage à la main
PILE
A B
E
D
H
F
I
G
J
C
Tournage à la main
1
A
PILE
A B
E
D
H
F
I
G
J
C
Tournage à la main
1
B
2
A
PILE
A B
E
D
H
F
I
G
J
C
Tournage à la main
1
F
2
B
3
A
PILE
A B
E
D
H
F
I
G
J
C
Tournage à la main
1
G
2
F
3
B
4
A
PILE
A B
E
D
H
F
I
G
J
C
Tournage à la main
1
C
2
G
3
F
4
B
5
A
PILE
A B
E
D
H
F
I
G
J
C
Tournage à la main
1
C
2
G
3
F
4
B
5/6
A
PILE
A B
E
D
H
F
I
G
J
C
Tournage à la main
1 2
G
3 F
4
B
5/6
A
PILE
A B
E
D
H
F
I
G
J
C
Tournage à la main
1
J
2
G
3
F
4
B
5/6
A
7
PILE
A B
E
D
H
F
I
G
J
C
Tournage à la main
1
J
2
G
3
F
4
B
5/6
A
7/8
PILE
A B
E
D
H
F
I
G
J
C
Tournage à la main
1 2
G
3 F
4
B
5/6
A
7/8
PILE
A B
E
D
H
F
I
G
J
C
Tournage à la main
1 2
G
3
F
4/9
B
5/6
A
7/8
PILE
A B
E
D
H
F
I
G
J
C
Tournage à la main
1 2
3
F
4/9
B
5/6
A
7/8
PILE
A B
E
D
H
F
I
G
J
C
Tournage à la main
1 2
3
F
4/9
B
5/6
A
7/8
10
I
PILE
A B
E
D
H
F
I
G
J
C
Tournage à la main
1 2
3
F
4/9
B
5/6
A
7/8
10
I
11
H
PILE
A B
E
D
H
F
I
G
J
C
Tournage à la main
1 2
3
F
4/9
B
5/6
A
7/8
10
I
11
H
12 D
PILE
A B
E
D
H
F
I
G
J
C
Tournage à la main
1 2
3
F
4/9
B
5/6
A
7/8
10
I
11
H
12
D
13
E
PILE
A B
E
D
H
F
I
G
J
C
Tournage à la main
1 2
3
F
4/9
B
5/6
A
7/8
10
I
11
H
12
D
13/14
E
PILE
A B
E
D
H
F
I
G
J
C
Tournage à la main
1 2
3
F
4/9
B
5/6
A
7/8
10
I
11
H
12/15 D
13/14
PILE
A B
E
D
H
F
I
G
J
C
Tournage à la main
1 2
3
F
4/9
B
5/6
A
7/8
10
I
11/16
H
12/15
13/14
PILE
A B
E
D
H
F
I
G
J
C
Tournage à la main
1 2
3
F
4/9
B
5/6
A
7/8
10/17
I
11/16
12/15
13/14
PILE
A B
E
D
H
F
I
G
J
C
Tournage à la main
1 2
3/18
F
4/9 B
5/6
A
7/8
10/17
11/16
12/15
13/14
PILE
A B
E
D
H
F
I
G
J
C
Tournage à la main
1 2/19
3/18 4/9
B
5/6
A
7/8
10/17
11/16
12/15
13/14
PILE
A B
E
D
H
F
I
G
J
C
Tournage à la main
1/20 2/19
3/18 4/9
5/6
A
7/8
10/17
11/16
12/15
13/14
PILE
A B
E
D
H
F
I
G
J
C
Tournage à la main
1/20 2/19
3/18 4/9
5/6
7/8
10/17
11/16
12/15
13/14
PILE
4- Applications du parcours en profondeurs
le parcours en profondeur permet de:
● Déterminer un arbre couvrant dans un graphe non
orienté connexe.
● Déterminer les composantes connexes dans un
graphe non orienté.
● Déterminer les composantes fortement connexes
dans graphe orienté.
Déterminer un arbre couvrant
Les arêtes sélectionnées lors du parcours DFS(G,s) forme un
arbre couvrant
A B
E
D
H
F
I
G
J
C
[1,20] [2,19]
[3,18]
[4,9]
[5,6]
[7,8]
[10,17]
[11,16]
[12,15]
[13,14]
A B F G G F I H D
π
B F G C J I H D E
Solution récursive
5. Exercice
Parcourir en profondeur le graphe suivant en
commençant avec le sommet A et donner un arbre
couvrant A
B C E
D F G
Pile
A
B C E
D F G
Correction
1
A
Pile
A
B C E
D F G
Correction
1
B
2
A
Pile
A
B C E
D F G
Correction
1
D
2
B
3
A
Pile
A
B C E
D F G
Correction
1
D
2
B
3/4
A
Pile
A
B C E
D F G
Correction
1
2
B
3/4
A
5
F
Pile
A
B C E
D F G
Correction
1
2
B
3/4 A
5
F
6 E
Pile
A
B C E
D F G
Correction
1
2
B
3/4 A
5
F
6/7 E
Pile
A
B C E
D F G
Correction
1
2
B
3/4 A
5/8
F
6/7
Pile
A
B C E
D F G
Correction
1
2/9
B
3/4 A
5/8
6/7
Pile
A
B C E
D F G
Correction
1
2/9
3/4 A
5/8
6/7
10
C
Pile
A
B C E
D F G
Correction
1
2/9
3/4 A
5/8
6/7
10
C
11
G
Pile
A
B C E
D F G
Correction
1
2/9
3/4 A
5/8
6/7
10
C
11/12
G
Pile
A
B C E
D F G
Correction
1
2/9
3/4 A
5/8
6/7
10/13 C
11/12
Pile
A
B C E
D F G
Correction
1/14
2/9
3/4 A
5/8
6/7
10/13
11/12
Tri Date Début:
A
B C E
D F G
Correction
1/14
2/9
3/4
5/8
6/7
10/13
11/12
A B D F E C G
Tri Date Fin:
A
B C E
D F G
Correction
1/14
2/9
3/4
5/8
6/7
10/13
11/12
A C G B F E D
Arbre couvrant:
A
B C E
D F G
Correction
6- Implémentation sur machine
Exécution directe avec python sur machine
Sommets
name
neighbors[]
découverts
finish
coleur
add_neighbors(v)
Graphe
listSommets{}
add_Sommets(s)
add_edge(u,v)
class
instance
variable
Fonctions
neighbors[]:
ListSommets{}
A:B,E ‘A’-->sommet A
B:A,F ‘B’-->sommet B
C:G ‘C’-->sommet C
D:E,H ‘D’-->sommet D
E:A,D,H
….
Tri topologique
Problématique
Le problème du tri topologique est un problème d’ordonnancement des tâches dont
certains doit être faits avant d’autres : on a une liste de choses à faire, certaines ont
besoin d’être faites avant d’autres.
On utilise la théorie des graphes pour représenter ces tâches puis on va appliquer un
tri topologique pour avoir une listes des tâches ordonnées.
On représente ces contraintes par un graphe orienté acyclique dont les sommets
sont les tâches et les arêtes sont les couples (u, v) tels que la tâche u doit être
effectuée avant la tâche v.
⚫ un tri topologique d'un graphe acyclique orienté est un ordre total sur
l'ensemble des sommets,dans lequel s précède t pour tout arc d'un
sommet s à un sommet t.
1. Définition
Tri topologique
Entrée: Un graphe orienté acyclique G = (S, A)
Sortie : Une liste L constituée des sommets de G telle que si
(u, v) G, alors u apparaît avant v dans
∈ L
Une façon de réaliser un tri topologique de G est de faire un parcours
en profondeur, et de placer les sommets dans une pile à la fin de leur
visite.
Donnée: un graphe G orienté
E
A
D
C
F B
Objectif: une liste L des sommets de G
contrainte: (u,v)  L =…u,…v…….. . Interdit
acyclique.
E
A
D
C
F B
L1 = A,B,C,D,E,F
Donnée: un graphe G orienté acyclique
Objectif: une liste L des sommets de G
Contrainte: (u,v)  L =…u,…v…… .
E
A
D
C
F B
L1 = A,B,C,D,E,F
Donnée: un graphe G orienté acyclique
Objectif: une liste L des sommets de G
Contrainte: (u,v)  L =…u,…v…. .
E
A
D
C
F B
L1= A,B,C,D,E,F
Donnée: un graphe G orienté acyclique
Objectif: une liste L des sommets de G
contrainte: (u,v)  L =…u,…v…….. .
E
A
D
C
F B
L1 = A, B, C, D, E,
F
Donnée: un graphe G orienté acyclique
Objectif: une liste L des sommets de G
contrainte: (u,v)  L =…u,…v…….. .
L1= A, B, C, D, E,
E
A
D
C
F B
L2 = A, E, D, C, B, F
Ordre topologique de G.
Donnée: un graphe G orienté acyclique
Objectif: une liste L des sommets de G
contrainte: (u,v)  L =…u,…v…….. .
E
A
D
C
F B
Non visité
En cours de visite
Visité
Règle:lorsqu’un
sommet devient « visité
» le placer en tête d’une
pile.
2. Principe
E
A
D
C
F B
Pile:
E
A
D
C
F B
E
A
D
C
F B
E
A
D
C
F B
Pile:
E
A
D
C
F B
Pile :
E
A
D
C
F B
E
A
D
C
F B E
A
D
C
F B
Pile : B
D
Pile :
E
A
D
C
F B
B
D
E
A
D
C
F B
E
A
D
C
F B
Pile :
E
A
D
C
F B
E
A
D
C
F B
B
D
F
C
Pile :
E
A
D
C
F B
E
A
D
C
F B
F
C
A
B
D
E
A
D
C
F B
Pile :
F
C
A
B
D
E
E
A
D
C
F B
E
A
D
C
F B
Pile :
F
C
A
B
D
Liste topologique: E, A, C, F, D, B
E
Début
Soit P une pile vide
G graphe avec s sommet
Pour chaque sommet s de G
faire
Couleur[s] Blanc
FinPour
Pour chaque sommet s de g
faire
Si couleur[s] = Blanc Alors
Parcour(G,s,couleur,P)
FinSi
FinPour
Parcour(G,s,couleur,P)
Début
Couleur[s] Gris
Pour chaque successeur v de
s Faire
Si couleur[v]=Blanc Alors
Parcour(G,v,couleur,P)
FinSi
FinPour
Couleur[s] Noir
Empiler(P,s)
fin
3. Algorithme
1. Cassez les œufs délicatement, séparez les blancs des jaunes.
2. Fouettez les jaunes et le sucre jusqu’à ce que le mélange devienne légèrement mousseux.
3. Ajoutez le mascarpone tout en mélangeant jusqu’à obtention d’un crème homogène.
4. Battez les blancs en neige, incorporez-les à la crème en soulevant la masse pour garder un maximum d’air.
5. Mélangez le café dans une assiette creuse, trempez rapidement dedans les biscuits sans les imbiber totalement.
6. Placez une première couche de biscuits au fond d’un plat rectangulaire.
7. Couvrez avec la moitié de la crème au mascarpone puis à nouveau de biscuits trempés au café pour terminer par la
seconde moitié de crème au mascarpone.
⚫la recette du tiramisù.
4. Application
oeufs
sucre
mascarpone
biscuits
farine
Blanc en neige
Couche 1
cacao
Couche 2
café
Théorie de
graphe
œufs
sucre
mascarpone
biscuits
farine
Blanc en neige
Couche 1
cacao
Couche 2
café
Tri Topologique
cacao
couche2
Blanc en neige
Couche 1
café
biscuits
mascarpone
farine
sucre
Oeufs

graphprojectfinaletheoriendesrapheds .pptx