![]() |
1
3
虽然最终结果(路径)可能是相同的,但bfs和dfs(不是发布的特定实现)之间的根本区别在于搜索机制。
通过观察代表探测节点的灰点,可以看到bfs的性质,它类似于洪水。
|
![]() |
2
2
第一种方法根本不是DFS,至少在DFS算法的规范定义中是这样。它只是BFS,其中有人用堆栈替换队列。然而,这种实现足以“模拟”DFS,从某种意义上说,它可以按类似DFS的顺序发现图顶点。它可以被称为“伪DFS”,如果你愿意的话,因为DFS类似于发现顺序,但是规范的DFS算法远不止这些。 回溯 顺序(即 "gray" vertex becomes "black" vertex 同时,第二种方法是经典DFS算法的显式递归实现。 在任何情况下,无论是真df还是伪df,都不存在访问顶点的“一个真实顺序”。两种实现都可以产生相同的顶点访问顺序。在你的情况下,没有人会费心去确保这一点。输出的差异是由前一个实现访问中的邻居这一简单事实造成的 颠倒 顺序-从最后到第一。所有的邻居首先被推到一个堆栈中,然后一个接一个地弹出以供访问。堆栈的后进先出行为是产生反转的原因。同时,后一种实现方式是访问他们家乡的邻居 向前地 顺序-从头到尾。 如果将后一个实现中的循环替换为
在两个实现中,您应该得到相同的访问顺序(相同的输出)。 |
![]() |
quantummidget · 正在查找BFS父关系数组 7 年前 |
![]() |
I'm not human · Prolog查找不相关的图形节点 7 年前 |
![]() |
WIZARD_ · 无向非加权图的最大顶点对数 7 年前 |
|
user9137770 · 邻接列表与邻接矩阵的区别 7 年前 |
![]() |
Sook Yee Lim · 在给定邻接矩阵的情况下求两个图的交并? 7 年前 |
|
DK100 · 在广度优先搜索中处理重复节点 7 年前 |
![]() |
Keith Pham · 最大化给定预算的子图“价值” 7 年前 |
![]() |
Mathochist · 在配对列表中查找最大配对数 7 年前 |