如何找到给定时间和深度进行迭代加深的分支?

时间:2018-08-28 08:49:32

标签: time-complexity iterative-deepening

我的教授提出了以下问题,我真的不知道如何开始解决这个问题。任何帮助都非常欢迎。

让树的空间为具有均匀分支b的树(每个节点恰好具有b个子节点)。从树的根部开始,我们正在迭代加深探索空间。程序在0.2秒内找到3深度处的第一个解,在10秒内找到5深度处的下一个解。我们知道第三个解决方案的深度为9。估计找到该第三个解决方案大约需要多少时间。

1 个答案:

答案 0 :(得分:1)

记住学校的数学和几何级数之和。

树看起来像(例如b = 3个孩子的例子)

         N
  N      N      N
N N N  N N N  N N N    

K个顶级节点数为(1 + b + b^2 + b^3... + b^(k-1)

S(k) = (b^k - 1) / (b - 1)

我们可以看到k = 3和k = 5

S(5) / S(3) = 10 / 0.2

(b^5 - 1) / (b^3 - 1) = 10 / 0.2 = 50

近似值(对于很小的幂,忽略-1项)

b^5 / b^3 = b^2 ~ 50

要找到k = 9的结果

b^9 / b^5 =  b^4 ~ 2500

时间是10*2500 = 25000 seconds ~ 7 hours