迭代加深如何比仅扫描指定深度级别的节点更有效。

发布于 2024-11-27 14:33:19 字数 28 浏览 2 评论 0原文

每次迭代重新扫描n-1层节点不是多余的吗?

Isn't it redundant to rescan n-1 levels of nodes for each iteration?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

狠疯拽 2024-12-04 14:33:19

我引用人工智能:现代方法

迭代加深搜索可能看起来很浪费,因为状态会生成多次。事实证明这并不算太昂贵。原因是,在每一层具有相同(或几乎相同)分支因子的搜索树中,大多数节点都位于底层,因此上层生成多次并不重要。在迭代加深搜索中,底层(深度d)的节点生成一次,次底层的节点生成两次,依此类推,直到该节点的子节点。 root,生成d次。所以最坏情况下生成的节点总数为

N(IDS) = (d)*b+(d-1)*b^2+...+(1)*b^d

时间复杂度为 O(b^d) - 渐近与广度优先搜索相同。

I quote from Artificial Intelligence: A Modern Approach:

Iterative deepening search may seem wasteful because states are generated multiple times. It turns out this is not too costly. The reason is that in a search tree with the same (or nearly the same) branching factor at each level, most of the nodes are in the bottom level, so it does not matter much that the upper levels are generated multiple times. In an iterative deepening search, the nodes on the bottom level (depth d) are generated once, those on the next-to-bottom level are generated twice, and so on, up to the children of the root, which are generated d times. So the total number of nodes generated in the worst case is

N(IDS) = (d)*b+(d-1)*b^2+...+(1)*b^d

which gives a time complexity of O(b^d) - asymptotically the same as breadth-first search.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文