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

时间:2010-11-23 21:24:56

标签: algorithm big-o

我不明白以下复杂性是如何产生的。

espeacialy b(b ^ d-1)的时间复杂度

时间复杂度: 总麻木了。生成的节点: 1 + b + b2 + ... + bd + b(b ^ d-1)= O(b ^(d + 1)) 空间复杂度:O(b ^(d + 1))

,其中 b - 搜索树的最大分支因子 d - 最低成本解决方案的深度

3 个答案:

答案 0 :(得分:3)

在根目录中,您将b个节点展开为搜索树中的下一个元素。如果没有解决方案,则这些解决方案将从每个节点扩展出b个节点。这将一直持续到找到解决方案,该解决方案将处于深度d

因此:O(b ^ d)

(我不确定你从哪里得到+1,但是......)

答案 1 :(得分:2)

如果算法在选择进行扩展而不是生成时将目标测试应用于节点,则在检测到目标之前将扩展深度为d的整个节点层,时间复杂度为O(b ^ (d + 1))。

答案 2 :(得分:2)

在BFS中,我们使用队列来保持访问路径的路径。图中的每个顶点最多访问一次。因此队列大小是最大V。因此,如果图中顶点数的函数为O(| V |),则空间复杂度。关于时间复杂度,我们运行一个循环来遍历图中的所有顶点。这是O(| V |)。此外,对于找到的每个顶点,我们需要检查所有邻居,以及它所连接的边数。这给了我们O(| E |)。因此,复杂性可以用符号O(| V | + | E |)来解释。