【问题标题】:How to find branching given time and depth for iterative deepening?如何在给定时间和深度的情况下找到分支以进行迭代深化?
【发布时间】:2018-08-28 08:49:31
【问题描述】:

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

让树的空间是一棵具有统一分支 b 的树(每个节点正好有 b 个子节点)。我们正在通过迭代深化探索空间,从树的根开始。程序在 0.2 秒内找到深度为 3 的第一个解,并在 10 秒内找到深度为 5 的下一个解。我们知道第三个解决方案在深度 9。估计我们可以预计程序需要多长时间才能找到第三个解决方案。

【问题讨论】:

  • 如果你不知道从哪里开始做作业,你应该按顺序问:你的老师、助教、同学、其他人。你的老师比我们更了解你的背景以及这个练习要教给你什么,因此他们能够提供更合适的帮助。这个网站也不太适合指导类型的指导(而不是仅仅给出一个你可能不理解或从中学到很多东西的答案),这确实是在这种情况下最有益的。
  • 我投票决定将此问题作为题外话结束,因为这是数学问题,而不是编程问题。

标签: time-complexity iterative-deepening


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 2022-11-10
    • 2021-01-06
    相关资源
    最近更新 更多