深度优先搜索-遍历随机邻居的优势

问题描述

深度优先搜索允许以任意顺序遍历相邻的顶点。 与以递增方式选择邻居相比,选择随机邻居有什么优势吗?

请考虑下图的浏览顺序:

Sample graph

0 -> 9 -> 8 -> 7 ..
0 -> 1 -> 8 -> 7 ..

随机选择能否带来更好的结果?

解决方法

首先,DFS对任意顺序不负责。

遍历节点的方式取决于两件事:

  1. 在邻接表中推入相邻节点的顺序(通常受输入中提供的边的顺序影响。)

  2. 您决定遍历的自定义顺序(如前所述,排序顺序)。

回答您的问题:

  1. 选择在邻接表中推送相邻节点的顺序不会影响复杂性。

  2. 如果您决定遍历已排序的相邻节点,则需要相应地维护邻接表,但这要付出V * log(V)的额外因素。

总时间复杂度= O(V + E)+ O(V * log(V))。

O(V + E)=>用于DFS。

O(V * log(V))=>用于优先级队列/对邻接表进行排序。

在这里,V =图中的节点数,E =边数。

,

我可以找到一种有优势的情况吗?

是的。容易。如果我有一个连通图,则可以保证随机选择遍历最终到达每个节点。保证按顺序遍历最终会循环结束。

总体上有优势吗?

不。例如,在所连接的示例中,简单的“保持追踪我们去过的地方”使两者都可以触及。哪个首先找到目标节点将是一个偶然的问题。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...