

Graphe de départ. Ce graphe est celui que nous avons utilisé lorsque nous avons vu l'algorithme DFS, mais ici les étiquettes des sommets portent des lettres aléatoires au lieu de chiffres afin d'éviter toute confusion.

Nous utilisons ici les mémes variables que lors des explications sur l'algorithme DFS, mais comme la place manquait sur les images, une seule lettre sera utilisée pour les variables :
Comme nous démarrons avec le sommet R, nous le considérons comme visité (voir colonne V), et son numéro d'ordre d'exploration est 1.

Nous sommes dans la boucle si ∃ y : (x,y) ∈ A ∧ visitedVertices[j]=false
L'exploration DFS découvre le sommet E. Nous affectons la valeur 1 (indice du sommet E dans le tableau X) à la variable j
visitedVertices[j] := true; devient visitedVertices[1] := true; afin de marquer le sommet E comme "visité".

k := k+1; devient k := 1+1;.
Nous devons incrémenter le compteur k (ordre d'exploration) qui possède donc à présent la valeur 2 car un nouveau sommet (E) a été découvert.

verticesOrders[j] := k; devient verticesOrders[1] := 2;
Nous utilisons la valeur du compteur k (2) pour affecter au sommet E son ordre d'exploration dans le tableau N à l'indice 1.

previousVertices[j] := i; devient previousVertices[1] := 0;
Nous affectons pour le tableau P à l'indice 1 l'indice du sommet précédent. C'est depuis ce sommet que E a été découvert.

i := j; devient i := 1;.
Comme nous allons continuer notre exploration, nous devons nous souvenir du chemin emprunté.
Cela est possible en affectant la valeur de j (1) à la variable i (anciennement 0).

Nous sommes dans la boucle si ∃ y : (x,y) ∈ A ∧ visitedVertices[j]=false
L'exploration DFS découvre le sommet A. Nous affectons la valeur 5 (indice du sommet A dans le tableau X) à la variable j
visitedVertices[j] := true; devient visitedVertices[5] := true; afin de marquer le sommet A comme "visité".

k := k+1; devient k := 2+1;.
Nous devons incrémenter le compteur k (ordre d'exploration) qui possède donc à présent la valeur 3 car un nouveau sommet (A) a été découvert.

verticesOrders[j] := k; devient verticesOrders[5] := 3;
Nous utilisons la valeur du compteur k (3) pour affecter au sommet A son ordre d'exploration dans le tableau N à l'indice 5.

previousVertices[j] := i; devient previousVertices[5] := 1;
Nous affectons pour le tableau P à l'indice 5 l'indice du sommet précédent. C'est depuis ce sommet que A a été découvert.

i := j; devient i := 5;.
Comme nous allons continuer notre exploration, nous devons nous souvenir du chemin emprunté.
Cela est possible en affectant la valeur de j (5) à la variable i (anciennement 1).

Nous sommes dans la boucle si ∃ y : (x,y) ∈ A ∧ visitedVertices[j]=false
L'exploration DFS découvre le sommet L. Nous affectons la valeur 2 (indice du sommet L dans le tableau X) à la variable j
visitedVertices[j] := true; devient visitedVertices[2] := true; afin de marquer le sommet L comme "visité".

k := k+1; devient k := 3+1;.
Nous devons incrémenter le compteur k (ordre d'exploration) qui possède donc à présent la valeur 4 car un nouveau sommet (L) a été découvert.

verticesOrders[j] := k; devient verticesOrders[2] := 4;
Nous utilisons la valeur du compteur k (4) pour affecter au sommet L son ordre d'exploration dans le tableau N à l'indice 2.

previousVertices[j] := i; devient previousVertices[2] := 5;
Nous affectons pour le tableau P à l'indice 2 l'indice du sommet précédent. C'est depuis ce sommet que L a été découvert.

i := j; devient i := 2;.
Comme nous allons continuer notre exploration, nous devons nous souvenir du chemin emprunté.
Cela est possible en affectant la valeur de j (2) à la variable i (anciennement 5).

si ∃ y : (x,y) ∈ A ∧ visitedVertices[j]=false
Ce test de boucle échoue car il ne reste plus de sommet non visité qui soit suivant de L. Nous devons donc "fermer" ce dernier en affectant la valeur true dans le tableau F à l'indice 2.
closedVertices[i] := true; devient closedVertices[2] := true;

La variable i a été modifiée, et nous sommes entrés une nouvelle fois dans la boucle tant_que i > -1 faire...
La condition si closedVertices[2] = false, alors n'est pas respectée, le sommet courant (L) est fermé (valeur true dans le tableau F à l'indice 2), nous affectons à i la valeur du sommet précédent de L (A à l'indice 5)
i := previousVertices[i] devient i := 5

si ∃ y : (x,y) ∈ A ∧ visitedVertices[j]=false
Ce test de boucle échoue car il ne reste plus de sommet non visité qui soit suivant de A. Nous devons donc "fermer" ce dernier en affectant la valeur true dans le tableau F à l'indice 5.
closedVertices[i] := true; devient closedVertices[5] := true;

La variable i a été modifiée, et nous sommes entrés une nouvelle fois dans la boucle tant_que i > -1 faire...
La condition si closedVertices[5] = false, alors n'est pas respectée, le sommet courant (A) est fermé (valeur true dans le tableau F à l'indice 5), nous affectons à i la valeur du sommet précédent de A (E à l'indice 1)
i := previousVertices[i] devient i := 1

Nous sommes dans la boucle si ∃ y : (x,y) ∈ A ∧ visitedVertices[j]=false
L'exploration DFS découvre le sommet M. Nous affectons la valeur 7 (indice du sommet M dans le tableau X) à la variable j
visitedVertices[j] := true; devient visitedVertices[7] := true; afin de marquer le sommet M comme "visité".

k := k+1; devient k := 4+1;.
Nous devons incrémenter le compteur k (ordre d'exploration) qui possède donc à présent la valeur 5 car un nouveau sommet (M) a été découvert.

verticesOrders[j] := k; devient verticesOrders[7] := 5;
Nous utilisons la valeur du compteur k (5) pour affecter au sommet M son ordre d'exploration dans le tableau N à l'indice 7.

previousVertices[j] := i; devient previousVertices[7] := 1;
Nous affectons pour le tableau P à l'indice 7 l'indice du sommet précédent. C'est depuis ce sommet que M a été découvert.

i := j; devient i := 7;.
Comme nous allons continuer notre exploration, nous devons nous souvenir du chemin emprunté.
Cela est possible en affectant la valeur de j (7) à la variable i (anciennement 1).

Nous sommes dans la boucle si ∃ y : (x,y) ∈ A ∧ visitedVertices[j]=false
L'exploration DFS découvre le sommet B. Nous affectons la valeur 8 (indice du sommet B dans le tableau X) à la variable j
visitedVertices[j] := true; devient visitedVertices[8] := true; afin de marquer le sommet B comme "visité".

k := k+1; devient k := 5+1;.
Nous devons incrémenter le compteur k (ordre d'exploration) qui possède donc à présent la valeur 6 car un nouveau sommet (B) a été découvert.

verticesOrders[j] := k; devient verticesOrders[8] := 6;
Nous utilisons la valeur du compteur k (6) pour affecter au sommet B son ordre d'exploration dans le tableau N à l'indice 8.

previousVertices[j] := i; devient previousVertices[8] := 7;
Nous affectons pour le tableau P à l'indice 8 l'indice du sommet précédent. C'est depuis ce sommet que B a été découvert.

i := j; devient i := 8;.
Comme nous allons continuer notre exploration, nous devons nous souvenir du chemin emprunté.
Cela est possible en affectant la valeur de j (8) à la variable i (anciennement 7).

si ∃ y : (x,y) ∈ A ∧ visitedVertices[j]=false
Ce test de boucle échoue car il ne reste plus de sommet non visité qui soit suivant de B. Nous devons donc "fermer" ce dernier en affectant la valeur true dans le tableau F à l'indice 8.
closedVertices[i] := true; devient closedVertices[8] := true;

La variable i a été modifiée, et nous sommes entrés une nouvelle fois dans la boucle tant_que i > -1 faire...
La condition si closedVertices[8] = false, alors n'est pas respectée, le sommet courant (B) est fermé (valeur true dans le tableau F à l'indice 8), nous affectons à i la valeur du sommet précédent de B (M à l'indice 7)
i := previousVertices[i] devient i := 7

Nous sommes dans la boucle si ∃ y : (x,y) ∈ A ∧ visitedVertices[j]=false
L'exploration DFS découvre le sommet K. Nous affectons la valeur 9 (indice du sommet K dans le tableau X) à la variable j
visitedVertices[j] := true; devient visitedVertices[9] := true; afin de marquer le sommet K comme "visité".

k := k+1; devient k := 6+1;.
Nous devons incrémenter le compteur k (ordre d'exploration) qui possède donc à présent la valeur 7 car un nouveau sommet (K) a été découvert.

verticesOrders[j] := k; devient verticesOrders[9] := 7;
Nous utilisons la valeur du compteur k (7) pour affecter au sommet K son ordre d'exploration dans le tableau N à l'indice 9.

previousVertices[j] := i; devient previousVertices[9] := 7;
Nous affectons pour le tableau P à l'indice 9 l'indice du sommet précédent. C'est depuis ce sommet que K a été découvert.

i := j; devient i := 9;.
Comme nous allons continuer notre exploration, nous devons nous souvenir du chemin emprunté.
Cela est possible en affectant la valeur de j (9) à la variable i (anciennement 7).

si ∃ y : (x,y) ∈ A ∧ visitedVertices[j]=false
Ce test de boucle échoue car il ne reste plus de sommet non visité qui soit suivant de K. Nous devons donc "fermer" ce dernier en affectant la valeur true dans le tableau F à l'indice 9.
closedVertices[i] := true; devient closedVertices[9] := true;

La variable i a été modifiée, et nous sommes entrés une nouvelle fois dans la boucle tant_que i > -1 faire...
La condition si closedVertices[9] = false, alors n'est pas respectée, le sommet courant (K) est fermé (valeur true dans le tableau F à l'indice 9), nous affectons à i la valeur du sommet précédent de K (M à l'indice 7)
i := previousVertices[i] devient i := 7

si ∃ y : (x,y) ∈ A ∧ visitedVertices[j]=false
Ce test de boucle échoue car il ne reste plus de sommet non visité qui soit suivant de M. Nous devons donc "fermer" ce dernier en affectant la valeur true dans le tableau F à l'indice 7.
closedVertices[i] := true; devient closedVertices[7] := true;

La variable i a été modifiée, et nous sommes entrés une nouvelle fois dans la boucle tant_que i > -1 faire...
La condition si closedVertices[7] = false, alors n'est pas respectée, le sommet courant (M) est fermé (valeur true dans le tableau F à l'indice 7), nous affectons à i la valeur du sommet précédent de M (E à l'indice 1)
i := previousVertices[i] devient i := 1

si ∃ y : (x,y) ∈ A ∧ visitedVertices[j]=false
Ce test de boucle échoue car il ne reste plus de sommet non visité qui soit suivant de E. Nous devons donc "fermer" ce dernier en affectant la valeur true dans le tableau F à l'indice 1.
closedVertices[i] := true; devient closedVertices[1] := true;

La variable i a été modifiée, et nous sommes entrés une nouvelle fois dans la boucle tant_que i > -1 faire...
La condition si closedVertices[1] = false, alors n'est pas respectée, le sommet courant (E) est fermé (valeur true dans le tableau F à l'indice 1), nous affectons à i la valeur du sommet précédent de E (R à l'indice 0)
i := previousVertices[i] devient i := 0

Nous sommes dans la boucle si ∃ y : (x,y) ∈ A ∧ visitedVertices[j]=false
L'exploration DFS découvre le sommet C. Nous affectons la valeur 3 (indice du sommet C dans le tableau X) à la variable j
visitedVertices[j] := true; devient visitedVertices[3] := true; afin de marquer le sommet C comme "visité".

k := k+1; devient k := 7+1;.
Nous devons incrémenter le compteur k (ordre d'exploration) qui possède donc à présent la valeur 8 car un nouveau sommet (C) a été découvert.

verticesOrders[j] := k; devient verticesOrders[3] := 8;
Nous utilisons la valeur du compteur k (8) pour affecter au sommet C son ordre d'exploration dans le tableau N à l'indice 3.

previousVertices[j] := i; devient previousVertices[3] := 0;
Nous affectons pour le tableau P à l'indice 3 l'indice du sommet précédent. C'est depuis ce sommet que C a été découvert.

i := j; devient i := 3;.
Comme nous allons continuer notre exploration, nous devons nous souvenir du chemin emprunté.
Cela est possible en affectant la valeur de j (3) à la variable i (anciennement 0).

Nous sommes dans la boucle si ∃ y : (x,y) ∈ A ∧ visitedVertices[j]=false
L'exploration DFS découvre le sommet S. Nous affectons la valeur 6 (indice du sommet S dans le tableau X) à la variable j
visitedVertices[j] := true; devient visitedVertices[6] := true; afin de marquer le sommet S comme "visité".

k := k+1; devient k := 8+1;.
Nous devons incrémenter le compteur k (ordre d'exploration) qui possède donc à présent la valeur 9 car un nouveau sommet (S) a été découvert.

verticesOrders[j] := k; devient verticesOrders[6] := 9;
Nous utilisons la valeur du compteur k (9) pour affecter au sommet S son ordre d'exploration dans le tableau N à l'indice 6.

previousVertices[j] := i; devient previousVertices[6] := 3;
Nous affectons pour le tableau P à l'indice 6 l'indice du sommet précédent. C'est depuis ce sommet que S a été découvert.

i := j; devient i := 6;.
Comme nous allons continuer notre exploration, nous devons nous souvenir du chemin emprunté.
Cela est possible en affectant la valeur de j (6) à la variable i (anciennement 3).

si ∃ y : (x,y) ∈ A ∧ visitedVertices[j]=false
Ce test de boucle échoue car il ne reste plus de sommet non visité qui soit suivant de S. Nous devons donc "fermer" ce dernier en affectant la valeur true dans le tableau F à l'indice 6.
closedVertices[i] := true; devient closedVertices[6] := true;

La variable i a été modifiée, et nous sommes entrés une nouvelle fois dans la boucle tant_que i > -1 faire...
La condition si closedVertices[6] = false, alors n'est pas respectée, le sommet courant (S) est fermé (valeur true dans le tableau F à l'indice 6), nous affectons à i la valeur du sommet précédent de S (C à l'indice 3)
i := previousVertices[i] devient i := 3

si ∃ y : (x,y) ∈ A ∧ visitedVertices[j]=false
Ce test de boucle échoue car il ne reste plus de sommet non visité qui soit suivant de C. Nous devons donc "fermer" ce dernier en affectant la valeur true dans le tableau F à l'indice 3.
closedVertices[i] := true; devient closedVertices[3] := true;

La variable i a été modifiée, et nous sommes entrés une nouvelle fois dans la boucle tant_que i > -1 faire...
La condition si closedVertices[3] = false, alors n'est pas respectée, le sommet courant (C) est fermé (valeur true dans le tableau F à l'indice 3), nous affectons à i la valeur du sommet précédent de C (R à l'indice 0)
i := previousVertices[i] devient i := 0

Nous sommes dans la boucle si ∃ y : (x,y) ∈ A ∧ visitedVertices[j]=false
L'exploration DFS découvre le sommet Z. Nous affectons la valeur 4 (indice du sommet Z dans le tableau X) à la variable j
visitedVertices[j] := true; devient visitedVertices[4] := true; afin de marquer le sommet Z comme "visité".

k := k+1; devient k := 9+1;.
Nous devons incrémenter le compteur k (ordre d'exploration) qui possède donc à présent la valeur 10 car un nouveau sommet (Z) a été découvert.

verticesOrders[j] := k; devient verticesOrders[4] := 10;
Nous utilisons la valeur du compteur k (10) pour affecter au sommet Z son ordre d'exploration dans le tableau N à l'indice 4.

previousVertices[j] := i; devient previousVertices[4] := 0;
Nous affectons pour le tableau P à l'indice 4 l'indice du sommet précédent. C'est depuis ce sommet que Z a été découvert.

i := j; devient i := 4;.
Comme nous allons continuer notre exploration, nous devons nous souvenir du chemin emprunté.
Cela est possible en affectant la valeur de j (4) à la variable i (anciennement 0).

si ∃ y : (x,y) ∈ A ∧ visitedVertices[j]=false
Ce test de boucle échoue car il ne reste plus de sommet non visité qui soit suivant de Z. Nous devons donc "fermer" ce dernier en affectant la valeur true dans le tableau F à l'indice 4.
closedVertices[i] := true; devient closedVertices[4] := true;

La variable i a été modifiée, et nous sommes entrés une nouvelle fois dans la boucle tant_que i > -1 faire...
La condition si closedVertices[4] = false, alors n'est pas respectée, le sommet courant (Z) est fermé (valeur true dans le tableau F à l'indice 4), nous affectons à i la valeur du sommet précédent de Z (R à l'indice 0)
i := previousVertices[i] devient i := 0

si ∃ y : (x,y) ∈ A ∧ visitedVertices[j]=false
Ce test de boucle échoue car il ne reste plus de sommet non visité qui soit suivant de R. Nous devons donc "fermer" ce dernier en affectant la valeur true dans le tableau F à l'indice 0.
closedVertices[i] := true; devient closedVertices[0] := true;

L'algorithme prend effectivement fin avant d'entrer dans la boucle tant_que i > -1 faire..., car la condition n'est pas respectée :-1 (indice du précédent de R) n'est pas > que -1 (nous testons avec le plus petit index du tableau moins un, donc -1 dans le cas d'un langage pour lequel le premier indice d'un tableau est 0).

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher les interactions avec les réseaux sociaux sur ces pages.
23 mots clés dont 13 définis manuellement (plus d'information...).
Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher le nuage de mots clés.
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.
Recherche (afficher)
Utilisateur (masquer)
Navigation (masquer)
Apparence (afficher)
Stats (afficher)
Citation (masquer)