Академический Документы
Профессиональный Документы
Культура Документы
PROJET
2006-2007
PLAN
1. 2. 3. 4. 5. 6. Parcours en profondeurs sur les arbres Quelques Dfinitions sur les Graphes Exemple de parcours de graphe Algorithme du parcours en profondeur Des Applications sur les graphes Complexit
Reprsentation par listes d'adjacences La reprsentation par listes d'adjacences d'un graphe G = (S;A) consiste en un tableau l de |S| listes, une pour chaque sommet de G Pour chaque s de S, la liste d'adjacences l[s] est une liste des sommets t, tels que l'arc (s; t) appartient A. Autrement dit, l[s] est constitue de tous les sommets adjacents s dans G. Cette reprsentation ne consomme qu'une quantit de mmoire en O(S +A). Toutefois, pour dterminer si un arc donne est pressent dans le graphe, il n'existe pas d'autre moyen que de parcourir la liste d'adjacence associe au sommet d'origine de l'arc.
Principe Cest une procdure essentiellement rcursive. Pour la mettre en oeuvre on utilisera un tableau de boolens marque index par les sommets du graphe. Ce tableau est initialis faux. Un parcours de G partir dun sommet s de G est ralis par la procdure suivante :
Implmentation de lAlgorithme
Procdure Parcours-Profondeur (don G:matrice;s,n:entier,don_res marque:tab) Dbut Pour i de 1 n faire /* n est le cardinal de lensemble des sommets */ marque[i] faux Fin pour marque(s) vrai /*s est lindice du sommet du graphe*/ Parcours-sous-graphe(G,s,m,marque) Fin Parcours-profondeur
Procdure Parcours-sous-graphe(don G:matrice;i,m:entier;don_res marque:tab) Var: j:entier Dbut Pour j de 1 jusqu m faire si marque[j]=faux alors marque[j] vrais Parcours-sous-graphe(G,j,m,marque) fin si Fin pour Fin Parcours-sous-graphe /*G est une matrice n*m contenant les liste dadjacence des sommets*/
Remarque Cette procdure appele sur le sommet x marquera tous les sommets de la composante connexe de x. Pour effectuer un parcours complet du graphe il faudra relancer la procdure partir dun sommet non marqu de G jusqu`a de que tous les sommets soient marqus.
Calcule du tableau des dates de dcouverte des sommets le tableau des parents:
Algorithme de parcours en profondeur des sommets accessibles depuis s(0) DFS(S,A, s(0) ) (Manire itrative): Init_pile(P) Pour s(i) dans S faire // s(i) appartient S T[s(i)] Nil couleur[s(i)]blanc Fin pour tps 0 Dec[s(0)] tps Empile(P,s(0))
Couleur [s(0)] gris Tans que est _ vide (P) =faux faire tps tps+1 s(i)sommet (P)
Pour s(j) dans S faire // s(j) appartient S Si (s(j) dans succ (s(i))) et (couleur[s(j)]=blanc) Alors empile (P, s(j)) couleur[s(j)] gris T[s(j)]s(i) Dec [s(j)]tps
Sinon depile (P, s(i)) couleur[s(i)]noir fin[s(i)]tps Finsi Fin Tant Fin DFS
3 2 5
1 4 6
b
2
b 5 b 7
b
1 b 4 b 6
On empile le 1.
0
s(i)=1 tps=0
Nil
1 2 3 4
5 6 7
Pile
Fin
Dec
b
2
b 5 b 7
g b 1 b 4 b 6
On empile le 2.
0 1
Nil 1
1 2 3
4
5
Pile
6
7
Fin
Dec
b g b 2
b 5 b 7
b 1 b 4 b 6
On empile le 3.
0 1 2 Nil 1 2
1 2 3 4 5
2 1
Pile
6
7
Fin
Dec
gb g b 2
b 5 b 7
g b 1 b 4 b 6
On empile le 5.
0 1 2 Nil 1 2
1 2 3 4
5 3
2
1
5 6 7
Pile
Fin
Dec
gb g b 2
b 5
b 1 b 4 b 6 7
On dpile le 5 .
0 1 2 4 3 Nil 1 2 3
1 2 3 4 5 6 7
3 2 1
Pile
Fin
Dec
g b g b 2
b 5
b 1 b 4 b 6 7
On dpile le 3.
0 1 2 Nil 1 2
1 2
s(i)=3 tps=5
5
2 1
3
4
5
6 7
Pile
Fin
Dec
g b g b 2
n b 5 b 7 g n
b 1 b 4 b 6
On empile le 4.
0 1 2 6 3 Nil 1 2 2 3
1 2 3 4 5 6 7
4 2 1
5 4
Pile
Fin
Dec
n g b g b 2
g b 5
g b 1
g b
4
7 b 6
On empile le 6.
0 1 2 6 3 7 Nil 1 2 2 3 4
1 2 3 4 5 6 7
4
2 1
5 4
Pile
Fin
Dec
n g b g b 2
g b 5
b 1
g b
4
g b
6
5 4 8
2 1
Pile
0 1 2 6 3 7
Nil 1 2 2 3 4
1 2 3
4
5
6
7
Fin
Dec
n g b g b 2
g b 5
b 1
g b
4
7 g b 6 n
On empile le 7.
0 1 2 6 3 7 9 Nil 1 2 2 3 4 4
1 2 3 4 5 6 7
7
4 2 1
5 4 8
Pile
Fin
Dec
n g b g b 2
g b 5
b 1
g b
g b
4
7 g b 6 n
On dpile le 7.
0 1 2 6 3 7 9 Nil 1 2 2 3 4 4
1 2 3
4 2
5
4 8 10
4
5
Pile
6
7
Fin
Dec
n g b g b 2
g b 5
g b
1
g b
g b
4
7 g b 6 n
On dpile le 4.
Pile
5 11 4 8 10
0 1 2 6 3 7 9
Nil 1 2 2 3 4 4
2
3 4
5
6 7
Fin
Dec
n g b g b 2
g b 5
g b
1
g b
g b
4
7 g b 6 n
On dpile le 2.
0 1 2 6 3 7 9 Nil 1 2 2 3 4 4
1
2
Pile
12 5 11 4 8 10
3
4 5 6 7
Fin
Dec
n g b n g b 2
g b 5
g b
1
g b
g b
4
7 g b 6 n
Pile Vide
13 12 5 11 4 8 10
0 1 2 6 3 7 9
Nil 1 2 2 3 4 4
1 2 3 4 5 6 7
Fin
Dec
n g b n g b 2
g b 5
g b
1
g b
g b
4
7 g b 6 n
6.Complexit
Soit G dordre n m artes. On suppose que G est reprsent par listes dadjacence. Chaque sommet est paramtre de la procdure une et une seule fois donc il y a n appels rcursifs. A chaque sommet visit, tous les sommets adjacents `a x sont tests pour le tableau marque ce qui se fait globalement en un temps proportionnel `a m. Lalgorithme demande donc un temps O(n) pour les appels et un temps O(m) pour les marques. Donc le temps de calcul est de lordre de O(max(n,m)).