如何计算有效分支因子?
How to calculate effective branching factor?
我想计算树的 有效分支因子 以评估我在 A* 搜索中的启发式算法的质量.
post here 对公式提供了很好的解释:
N+1=1+B∗+(B∗)^2+⋯+(B∗)^d,出现在 AI: A Modern Approach(斯图尔特·罗素和彼得·诺维格的)书中。其中,N为搜索节点数,求解深度为
d 和 "b* 是深度为 d 的均匀树必须具有的分支因子
包含 N +1 个节点
我对书中给出的例子感到非常困惑。他们说:
For example, if A* finds a solution at depth 5 using 52 nodes, then
the effective branching factor is 1.92.
他们是怎么得出这个值的?正如所解释的 here 该公式的近似值由 B∗≈N^(1/d) 给出。
将该公式与书中示例中的值一起使用,我得到 2.20 = 52 ^ (1/5),这与书中作为解决方案给出的值相去甚远(顺便说一句,没有提到是一个近似值)。
那么,我的问题是他们是如何得出 1.92 这个值的?我错过了什么?
方程 B∗ ≈ N^(1/d)
对 N+1 = 1+B∗+(B∗)^2+⋯+(B∗)^d
的近似仅对 B∗
的较大值是准确的。真正的公式是((B∗)^(d+1) - 1) / (B∗ - 1) = N+1
。当 B∗
不显着大于 1
时,近似值的误差可能非常高。
如果您在方程 53 = ((B∗)^(d+1) - 1) / (B∗ - 1)
中求解 B∗
,例如使用 Newton's method 或其他数值求解器,则真实值(至 6 s.f)为B∗ ≈ 1.916729
,或者课本上的B∗ ≈ 1.92
。
我想计算树的 有效分支因子 以评估我在 A* 搜索中的启发式算法的质量.
post here 对公式提供了很好的解释: N+1=1+B∗+(B∗)^2+⋯+(B∗)^d,出现在 AI: A Modern Approach(斯图尔特·罗素和彼得·诺维格的)书中。其中,N为搜索节点数,求解深度为 d 和 "b* 是深度为 d 的均匀树必须具有的分支因子 包含 N +1 个节点
我对书中给出的例子感到非常困惑。他们说:
For example, if A* finds a solution at depth 5 using 52 nodes, then the effective branching factor is 1.92.
他们是怎么得出这个值的?正如所解释的 here 该公式的近似值由 B∗≈N^(1/d) 给出。
将该公式与书中示例中的值一起使用,我得到 2.20 = 52 ^ (1/5),这与书中作为解决方案给出的值相去甚远(顺便说一句,没有提到是一个近似值)。
那么,我的问题是他们是如何得出 1.92 这个值的?我错过了什么?
方程 B∗ ≈ N^(1/d)
对 N+1 = 1+B∗+(B∗)^2+⋯+(B∗)^d
的近似仅对 B∗
的较大值是准确的。真正的公式是((B∗)^(d+1) - 1) / (B∗ - 1) = N+1
。当 B∗
不显着大于 1
时,近似值的误差可能非常高。
如果您在方程 53 = ((B∗)^(d+1) - 1) / (B∗ - 1)
中求解 B∗
,例如使用 Newton's method 或其他数值求解器,则真实值(至 6 s.f)为B∗ ≈ 1.916729
,或者课本上的B∗ ≈ 1.92
。