任何 DFS(深度优先搜索)树的算法 DFS 深度
Algorithms DFS depth of any DFS (Depth First Search) tree
以某个顶点为根的任何 DFS(深度优先搜索)树的深度至少与以同一顶点为根的任何 BFS 树的深度相同。对还是错?
我不明白这句话是什么意思,深度是什么?是否要求堆栈深度?
请举例说明
树的深度。意思是,树中从根到另一个节点的最短路径的最大长度。
(搜索)树的深度是该树从根到叶的最长路径(以边数表示)的长度。
问题是要求您比较两种搜索算法,DFS 和 BFS,更具体地说,比较它们从同一顶点开始的搜索树。
这是一个示例图(它是无向的):
假设选择的根顶点是"a"。我们可以想象一个 DFS 按以下顺序访问顶点:a-b-c-d-e。在e处没有更多的邻居还没有被访问过,所以DFS算法回溯到d然后扩展到 f。然后它再次回溯到根,却发现没有其他顶点可以访问。
所以DFS的搜索树是:
最长的路径有4条边,所以我们说这棵搜索树的深度是4:
- a-b-c-d-e
- a-b-c-d-f
让我们使用 BFS 进行搜索。在第一轮中,访问了 a 的所有邻居:
- a-b
- a-d
- a-e
然后将这些路径中的每一个扩展到尚未访问的相邻顶点:
- a-b-c
- a-d-f
在 e 没有更多的扩展可能。所有的顶点都被访问过。 BFS搜索树如下:
BFS就这样找到了这些路径,其中最长的有2条边,所以这棵搜索树的深度为2:
- a-b-c
- a-d-f
- a-e
所以在这种情况下DFS搜索树的深度大于BFS搜索树的深度
由你来证明你永远不会出现 BFS 搜索树比 DFS 搜索树更深的情况(对于相同的图和相同的起始顶点)。
以某个顶点为根的任何 DFS(深度优先搜索)树的深度至少与以同一顶点为根的任何 BFS 树的深度相同。对还是错?
我不明白这句话是什么意思,深度是什么?是否要求堆栈深度?
请举例说明
树的深度。意思是,树中从根到另一个节点的最短路径的最大长度。
(搜索)树的深度是该树从根到叶的最长路径(以边数表示)的长度。
问题是要求您比较两种搜索算法,DFS 和 BFS,更具体地说,比较它们从同一顶点开始的搜索树。
这是一个示例图(它是无向的):
假设选择的根顶点是"a"。我们可以想象一个 DFS 按以下顺序访问顶点:a-b-c-d-e。在e处没有更多的邻居还没有被访问过,所以DFS算法回溯到d然后扩展到 f。然后它再次回溯到根,却发现没有其他顶点可以访问。
所以DFS的搜索树是:
最长的路径有4条边,所以我们说这棵搜索树的深度是4:
- a-b-c-d-e
- a-b-c-d-f
让我们使用 BFS 进行搜索。在第一轮中,访问了 a 的所有邻居:
- a-b
- a-d
- a-e
然后将这些路径中的每一个扩展到尚未访问的相邻顶点:
- a-b-c
- a-d-f
在 e 没有更多的扩展可能。所有的顶点都被访问过。 BFS搜索树如下:
BFS就这样找到了这些路径,其中最长的有2条边,所以这棵搜索树的深度为2:
- a-b-c
- a-d-f
- a-e
所以在这种情况下DFS搜索树的深度大于BFS搜索树的深度
由你来证明你永远不会出现 BFS 搜索树比 DFS 搜索树更深的情况(对于相同的图和相同的起始顶点)。