微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决深度优先搜索-遍历随机邻居的优势

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

请考虑下图的浏览顺序:

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 =边数。

,

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

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

总体上有优势吗?

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。