深度优先搜索生成的节点总数是多少

时间:2017-10-11 17:57:43

标签: algorithm artificial-intelligence

假设:'d'是树的有限深度; 'b'是一个分支因子; 'g'是最浅的目标节点。

据我所知,最坏的情况是目标节点位于树中最后一个右下角节点。 因此,据说生成的节点总数是O(bg),对吧? 但是,我的导师告诉我这是错误的,因为最糟糕的情况是除了根据目标节点生成的子树之外,所有树都被探索。 他提到了一些关于O(bd) - O(b(g-d))的事情.... 我不完全确定

我真的不明白他的意思,所以有人可以告诉我哪个答案是正确的吗?

1 个答案:

答案 0 :(得分:1)

我建议绘制一棵树,标记被探索的节点,并计算它们的数量。

如果您使用广度优先搜索,那么您的推理是正确的,因为您只会为每个分支达到g的深度(总共探索O(b**g)个节点)。

如果您使用深度优先搜索,那么您的教师推理是正确的,因为除了目标(探查O(b**d - b**(d-g))个节点)之外,树的所有部分都达到d的深度。

enter image description here

目标是绿色圈子。

探索蓝色节点。

未探索红色节点。

要计算探索的数量,我们会计算树中的总数,然后取走红色的数据。

深度= 2 = d

目标深度= 1 = g

分支因子= b = 3

请注意,我已调用树O(b**d)中的节点总数。严格来说,总数为b**d + b**(d-1) + b**(d-2) + ... + 1,但这是O(b**d)