【发布时间】:2020-05-24 14:46:15
【问题描述】:
这类似于How to trace the path in a Breadth-First Search?,但该帖子的答案中描述的方法似乎不适用于我的情况。
这里的路径,我本质上是指从开始状态到结束状态的一系列连接节点。
考虑一个顶点 V={a,b,c} 和边 = {{a,b},{a,c}} 的无向图,并假设我们必须按字母顺序遍历后继图。我们从节点 a 开始,结束状态是访问所有 3 个节点。
广度优先搜索将首先访问边缘a->b,然后是边缘a->c。所以解决路径是a->b->a->c。由于b 和c 之间没有边,我们必须回到a(所以我们必须遍历边b->a)。在上述链接帖子的答案中,接受的解决方案只会输出a->c。
我想不出一种方法来修改传统的 bfs 算法来做到这一点。我对 dfs 有同样的问题,但我现在想从 bfs 开始。
【问题讨论】:
-
a->b->a->c表示访问的节点序列。路径不是那个顺序。从a到c的路径不经过b,而是直接经过a>c。 -
但是如果你按字母顺序遍历后继者,从
a到c的路径将必须经过b。 -
没错。您正在遍历以搜索路径。遍历序列确实是
a->b->a->c。找到的路径是a->c -
请回复贴出的两个答案
标签: search graph depth-first-search breadth-first-search graph-traversal