如何解决深度优先搜索-遍历随机邻居的优势
深度优先搜索允许以任意顺序遍历相邻的顶点。 与以递增方式选择邻居相比,选择随机邻居有什么优势吗?
请考虑下图的浏览顺序:
0 -> 9 -> 8 -> 7 ..
0 -> 1 -> 8 -> 7 ..
随机选择能否带来更好的结果?
解决方法
首先,DFS对任意顺序不负责。
遍历节点的方式取决于两件事:
-
在邻接表中推入相邻节点的顺序(通常受输入中提供的边的顺序影响。)
-
您决定遍历的自定义顺序(如前所述,排序顺序)。
回答您的问题:
-
选择在邻接表中推送相邻节点的顺序不会影响复杂性。
-
如果您决定遍历已排序的相邻节点,则需要相应地维护邻接表,但这要付出V * log(V)的额外因素。
总时间复杂度= O(V + E)+ O(V * log(V))。
O(V + E)=>用于DFS。
O(V * log(V))=>用于优先级队列/对邻接表进行排序。
在这里,V
=图中的节点数,E
=边数。
我可以找到一种有优势的情况吗?
是的。容易。如果我有一个连通图,则可以保证随机选择遍历最终到达每个节点。保证按顺序遍历最终会循环结束。
总体上有优势吗?
不。例如,在所连接的示例中,简单的“保持追踪我们去过的地方”使两者都可以触及。哪个首先找到目标节点将是一个偶然的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。