gpt4 book ai didi

algorithm - 对有向图进行 DFS 和 BFS

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:48:11 25 4
gpt4 key购买 nike

假设我们有一个图表,例如:

graph

如果你想要一条从 0 到 5 的路径,如果我们在这个图上执行 DFS 和 BFS,我们将以什么顺序访问节点(假设最低的元素总是先被压入)。我无法概念化这些算法如何适用于带循环的图形,我希望有人可以概述每个程序在这样的图形上所采用的过程。

最佳答案

用于处理循环的常用技术是拥有一组已经访问过的顶点。在将顶点推送到队列/堆栈之前检查它是否被访问过。如果是则不做任何操作,否则从将其添加到已访问集合开始,然后继续遍历图。

从上到下堆叠。

DFS:

empty stack
visiting 0: stack: 2, 1, visited: 0
visiting 2: stack: 5, 3, 1 visited: 0, 2
visiting 5: stack: 4, 3, 1 visited: 0, 2, 5
visiting 4: stack: 3, 2, 3, 1 visited: 0, 2, 4, 5
visiting 3: stack: 4, 2, 3, 1 visited: 0, 2, 3, 4, 5
visiting 4: (nothing to do) - stack: 2, 3, 1 visited: 0, 2, 3, 4, 5
visiting 2: (nothing to do) - stack: 3, 1 visited: 0, 2, 3, 4, 5
visiting 3: (nothing to do) - stack: 3, 1 visited: 0, 2, 3, 4, 5
visiting 1: stack: 3, 0 visited: 0, 1, 2, 3, 4, 5
visiting 3: (nothing to do) - stack: 1 visited: 0, 1, 2, 3, 4, 5
visiting 1: (nothing to do) - stack empty visited: 0, 1, 2, 3, 4, 5
DONE

以类似的方式为 BFS 做。

关于algorithm - 对有向图进行 DFS 和 BFS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16261059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com