J'ai fait quelques recherches, et il semble qu'il me manque une petite partie de cet algorithme. Je comprends comment fonctionne la recherche en premier lieu, mais je ne comprends pas comment elle peut m'amener à un chemin spécifique, au lieu de me dire simplement où chaque nœud individuel peut aller. Je suppose que la façon la plus simple d'expliquer ma confusion est de fournir un exemple :
Donc par exemple, disons que j'ai un graphique comme celui-ci :
Et mon objectif est d'aller de A à E (toutes les arêtes sont non pondérées).
Je commence par A, car c'est mon origine. Je mets A en file d'attente, puis je retire immédiatement A de la file d'attente et l'explore. Cela donne B et D, car A est connecté à B et D. Je mets donc B et D en file d'attente.
Je mets B en file d'attente et l'explore, et découvre qu'il mène à A (déjà exploré), et C, donc je mets C en file d'attente. Je mets ensuite D en file d'attente, et découvre qu'il mène à E, mon objectif. Je mets ensuite C en file d'attente, et je découvre qu'il mène également à E, mon objectif.
Je sais logiquement que le chemin le plus rapide est A->D->E, mais je ne suis pas sûr de l'utilité de la recherche en largeur - comment dois-je enregistrer les chemins de sorte que, lorsque je termine, je puisse analyser les résultats et voir que le chemin le plus court est A->D->E ?
Notez également que je n'utilise pas réellement un arbre, il n'y a donc pas de nœuds "parents", seulement des enfants.
3 votes
"Notez également que je n'utilise pas réellement un arbre, donc il n'y a pas de nœuds "parents", seulement des enfants" - vous devrez évidemment stocker le parent quelque part. Pour DFS vous le faites indirectement à travers la pile d'appel, pour BFS vous devez le faire explicitement. Je crains que vous ne puissiez rien y faire :)