广度优先搜索可用于有向无环图吗?

时间:2014-09-15 04:22:00

标签: algorithm breadth-first-search

广度优先搜索可用于有向无环图吗?

例如,你从根节点开始(假设它有3个连接的节点,边缘都从根指向它们),在BFS之后,你从有向边缘后面的根访问第一个连接节点,你得到了回到根节点并访问第二个连接节点,如果它是一个无向图,但你不能在有向图的情况下,所以我假设BFS不能用于有向无环图?

此外,一行节点1 -> 2 -> 3 -> 4可以被视为有向无环图,是否正确?

感谢

2 个答案:

答案 0 :(得分:0)

简答:是的

为了更准确地回答您的问题,如果给定节点没有指向根的边,那么您不必“必须”返回根,就像其他人在评论中所说的那样。

图是否有环的事实并不重要,因为在 BFS 算法中,应该在您访问节点时标记一个节点。该标记然后用于不使节点第二次入队(即仅访问一次),因此循环在某种程度上被打破了。 只需检查 pseudo-code on Wikipedia

是的,您提到的“节点线”是 DAG,但非常特殊。

P.S :很抱歉挖掘这个问题,但我问自己,搜索互联网,看到它,继续搜索并找到一些答案,所以我认为它可以在未来帮助其他人。

答案 1 :(得分:-1)

1 - > 2 - > 3 - > 4 是DAG

BFS意味着快速搜索。如果您从节点u启动bfs,将找到可从u访问的每个节点,但找不到那些无法从u访问的节点。

示例G(V,E)图 V = {1,2,3,4} E = {(1,2),(1,3),(4,1)} 如果你从节点1运行bfs,将发现节点2和3 但是4将是未被发现的

但如果你从4运行bfs,将会发现每个节点

因此,如果您知道DAG的拓扑排序,您可以按拓扑顺序从节点运行bfs,将发现每个节点并正确计算它们的级别。