Un graphe est non orienté quand les sommets sont reliés entre eux par de simples traits (des arcs).
d(a)
pour le sommet a) d'un sommet correspond à son nombre de voisins.
*Un graphe est orienté lorsque les sommets sont reliés entre eux par des flèches (des arêtes).
d-(a)
pour le sommet a) et le nombre de successeurs correspond à son degrés sortant (noté d+(a)
pour le sommet a).Par exemple, pour le graphe:
+-----+ +-----+
| 1 |------------------->| 2 |
+-----+ +-----+
|
|
|
v
+-----+
| 3 |
+-----+
La matrice d'adjacence correspondante est (la première ligne est le point de départ):
Graphe orienté | Graphe non-orienté |
---|---|
|
|
Et la liste d'adjacence correspondante est:
Graphe orienté | Graphe non orienté |
---|---|
|
|
Coloration: Pour représenter le parcours, l'algorithme utilise la coloration avec la convention:
- Blanc: Le sommet x n'est pas visité.
- Gris: Le sommet x est visité pour la première fois ou bien un de ses voisins n'est pas visité.
- Noir: Sommet et voisins visités.
procédure PeL(Entrée: G = <S, A> : Graphe) var p, d début // p et d sont des tableaux et stockent la liste // des prédécesseurs de x et la date à laquelle x // a été traité. pour x dans S faire c(x) = Blanc p(x) = Nil d(x) = +∞ fin // c(x) représente la couleur de x d(S) = 0 c(S) = Gris F = {S} tant que F != Ø faire x = tete(F) pour y dans Adj(x) faire si c(y) = Blanc alors p(y) = x d(y) = d(x) + 1 c(y) = Gris Enfiler(F, y) fin fin c(x) = Noir Defiler(F) fin tant que fin
procédure PeP(Entrée: G = <S, A> : Graphe) var p, d, f début pour x dans S faire p(x) = Nil c(x) = Blanc fin temps = 0; // Variable globale pour x dans S faire si c(x) = Blanc alors visiter(x); fin fin fin procédure visiter(Entrée: S : Sommet) début c(x) = Gris temps = temps + 1; d(x) = temps pour y dans Adj(x) faire si c(y) = Blanc alots p(y) = x visiter(y) fin fin c(x) = Noir temps = temps + 1; f(x) = temps fin