首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >广度优先搜索的时空复杂度

广度优先搜索的时空复杂度
EN

Stack Overflow用户
提问于 2014-01-10 21:44:09
回答 1查看 1.2K关注 0票数 1

我只是想看看我对罗素和诺维格的算法和计算的理解是否正确。

我用传教士和食人族作为一个问题来测试时间和空间的复杂性。计算深度没什么大不了的。我总是在11深度找到解决方案,但我不能把头绕在头上的是分支因子。

拉塞尔和诺维格第82页说:

“在探索的集合中将有O(b^(d-1))节点,在前沿将有O(b^d)节点.”

我的程序显示了探索集中的8502节点和前沿的14006节点。

我的思维过程是这样的:如果我根据罗素和诺维格取节点数并取d根,我应该得到分支因子是什么。现在我不知道我的想法是否正确。我刚想出来的。

我取8502的第10 (d-1)根,得到2.47 (约),取14006的第11 (d)根,得到2.39 (约)。所以我的结论是,分支因子b大概是2.43

我到底是击中了目标,还是我完全错了?这是我现在正在做的事情之一。但我很想知道我是错是对。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-10 23:35:33

您基于探索集和边界集对分支因子的估计基本上是正确的。对于较小的深度,分支因子的估计对于边界集比探索集更合理,因为探索集包含过去访问过的所有顶点,这些顶点更像1 + b + ... + b^(d-1),而不仅仅是b^(d-1)。请注意,随着探索集的增长,您将拥有越来越多已经被探索过的相邻顶点,因此,随着深度的增加,边界集的近似b^d将变得越来越差。在极端情况下,当您探索了所有的顶点时,边框集将不包含任何顶点,因此您将b^d近似为0。但是无论如何,您的评估过程看起来很好,并且在边界集和探索集之间给出了非常一致的结果。您可能应该单独使用边界集来给出分支因子的估计。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21054959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档