查找最短路径时,广度优先搜索如何工作?
我做了一些研究,我似乎错过了这个算法的一小部分。我了解广度优先搜索的工作原理,但我不明白它究竟如何使我到达特定的路径,而不仅仅是告诉我每个节点可以去哪里。我想解释我的困惑的最简单方法是提供一个例子:
例如,假设我有一个这样的图表:
我的目标是从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?
另外,请注意,我实际上并没有使用树,因此没有“父”节点,只有子节点。