最佳答案
我做了一些研究,我似乎遗漏了这个算法的一小部分。我知道一个广度优先搜索是如何工作的,但我不知道它到底是如何把我带到一个特定的路径,而不是仅仅告诉我每个单独的节点可以去哪里。我想解释我的困惑最简单的方法就是举个例子:
举个例子,假设我有一个这样的图:
我的目标是从 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?
另外,请注意,我实际上并没有使用树,因此没有“父”节点,只有子节点。