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

时间:2014-01-10 21:44:10

标签: algorithm time-complexity breadth-first-search space-complexity

我只是想检查一下我对Russell和Norvig中给出的算法和计算的理解是否正确。

我使用传教士和食人族作为测试时间和空间复杂性的问题。计算深度并不是什么大不了的事。我总是在深度11找到解决方案。我无法解决的是分支因素。

Russell和Norvig第82页说:

  

“探索集和O(b^(d-1))节点中将有O(b^d)个节点   在边境...“

我的程序在探索的集合和边界中的8502节点中显示14006个节点。

以下是我的思维过程的方式:如果我根据Russell和Norvig获取节点数并取d根,我应该得到分支因子。现在我不知道我在想什么是正确的。我想出来了。

所以我取8502的第10个(d-1)根并获得2.47(大约),然后取14006的第11个(d)根并获得{{1 (大约)。所以我的结论是分支因子b大致为2.39

我是否完全达到了标记,还是我完全错了?这是我现在正在展开的那些事情之一。但是我很想知道我是错还是对。

1 个答案:

答案 0 :(得分:1)

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