gpt4 book ai didi

algorithm - 在广度优先搜索和深度优先搜索中为什么访问的数组是全局初始化的

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:13:59 25 4
gpt4 key购买 nike

Visited 数组是指我们记录一个节点是否被访问的数组。

最佳答案

树的遍历很容易,前提是树的格式正确。您不必跟踪是否有可能在无限循环中重复某些工作,因为只有一条路径可以到达每个节点。

但是对于图可能包含循环的广义图遍历,许多琐碎的算法在遇到循环时最终会无限循环。为了保证此类算法确实终止,我们通常希望在整个遍历过程中跟踪我们访问过哪些节点,而不是重新探索我们已经访问过的节点。

这就是 visited 集合的目的(无论是数组、集合等都无关紧要)。备选方案可能是每个节点都有一个访问标志,该标志可以在遍历之前取消设置并在遍历期间设置。这避免了对全局集合的需要,但施加了自己的限制(一次只能进行一次遍历)。

visited 集合不需要是“全局”1,但确实需要在每个遍历的所有部分共享的公共(public)范围内。


1如果它是“全局的”,那么在任何有意义的范围内,同样一次只能进行一次遍历。

关于algorithm - 在广度优先搜索和深度优先搜索中为什么访问的数组是全局初始化的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52649164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com