假设:'d'是树的有限深度; 'b'是一个分支因子; 'g'是最浅的目标节点。
据我所知,最坏的情况是目标节点位于树中最后一个右下角节点。 因此,据说生成的节点总数是O(bg),对吧? 但是,我的导师告诉我这是错误的,因为最糟糕的情况是除了根据目标节点生成的子树之外,所有树都被探索。 他提到了一些关于O(bd) - O(b(g-d))的事情.... 我不完全确定。
我真的不明白他的意思,所以有人可以告诉我哪个答案是正确的吗?
答案 0 :(得分:1)
我建议绘制一棵树,标记被探索的节点,并计算它们的数量。
如果您使用广度优先搜索,那么您的推理是正确的,因为您只会为每个分支达到g的深度(总共探索O(b**g)
个节点)。
如果您使用深度优先搜索,那么您的教师推理是正确的,因为除了目标(探查O(b**d - b**(d-g))
个节点)之外,树的所有部分都达到d的深度。
目标是绿色圈子。
探索蓝色节点。
未探索红色节点。
要计算探索的数量,我们会计算树中的总数,然后取走红色的数据。
深度= 2 = d
目标深度= 1 = g
分支因子= b = 3
请注意,我已调用树O(b**d)
中的节点总数。严格来说,总数为b**d + b**(d-1) + b**(d-2) + ... + 1
,但这是O(b**d)
。