Я провел некоторое исследование, и, похоже, я пропустил небольшую часть этого алгоритма. Я понимаю, как работает Breadth-First Search, но я не понимаю, как именно это приведет меня к определенному пути, а не просто говорит мне, где может идти каждый отдельный node. Я думаю, что самый простой способ объяснить мое замешательство - это пример:
Так, например, скажем, у меня есть такой граф:
И моя цель - получить от A до E (все ребра не имеют веса).
Я начинаю с A, потому что это мое происхождение. Я ставлю в очередь A, а затем немедленно отменил A и исследовал его. Это дает B и D, потому что A подключен к B и D. Таким образом, очереди B и D.
Я деактивирую B и исследую его и обнаруживаю, что он приводит к A (уже изученному) и C, поэтому я ставлю в очередь C. Затем я вычеркнул D и обнаружил, что это приводит к E, моей цели. Затем я удаляю C и обнаруживаю, что это также приводит к E, моей цели.
Я логически знаю, что самый быстрый путь - A- > D- > E, но я не уверен, как именно помогает поиск по ширине - как я должен записывать пути таким образом, что когда я закончу, я могу проанализировать результатов и увидеть, что кратчайший путь A- > D- > E?
Также обратите внимание, что я фактически не использую дерево, поэтому нет "родительских" узлов, а только детей.