【发布时间】:2015-11-25 00:46:41
【问题描述】:
参考 Russel 和 Norvig 的第 3.5 节: 在一个网格上,每个状态有四个后继,所以包含重复状态的搜索树有 4^d 个叶子;但是在任何给定状态的 d 步内只有大约 2d^2 个不同的状态。
这里不同状态的含义是什么。有人可以通过考虑 d 的各种值来解释我,比如 1、2、3、4。
【问题讨论】:
标签: algorithm search math graph artificial-intelligence
参考 Russel 和 Norvig 的第 3.5 节: 在一个网格上,每个状态有四个后继,所以包含重复状态的搜索树有 4^d 个叶子;但是在任何给定状态的 d 步内只有大约 2d^2 个不同的状态。
这里不同状态的含义是什么。有人可以通过考虑 d 的各种值来解释我,比如 1、2、3、4。
【问题讨论】:
标签: algorithm search math graph artificial-intelligence
这里不同状态的含义是什么。
distinct state 的意思是一个唯一的单元格,你只计算网格中的每个单元格一次。
不同状态数量的粗略上限:
首先,查看大小为2d+1 X 2d+1 的子网格,从中间的节点开始。很容易看出,在d 步骤内(从中心)可以到达此子网格之外的任何单元格。此外,这个子网格中的单元格数量为(2d+1)*(2d+1) ~= 4d^2,因此我们找到了一个简单的上界,它明显优于朴素的4^d。
但是有很多单元格仍然无法到达(例如,您无法在d 范围内从中间(即索引(d,d))到(0,0),因此我们可以得到更严格的界限。
方法 1:组合学:
如果我们说我们只能“向上和向右”移动,那么我们可以遍历的可到达单元格的数量是sum { CC(i,2) | i=0,1,...,d }。这里CC代表stars and bars解决方案,定义为:
CC(n,k) = Choose(n+k-1,k-1) = (n+k-1)!/(n!*(k-1)!)
分配公式时,我们得到:
sum{ (i+1)!/(i)!1! | i=1,...,d} = sum { (i+1) | i=1,...,d}
以上是算术级数之和,总和为(d)(d+1)/2
但是,请注意,通过只允许“向上和向右”移动,我们只允许到达网格的右上四分之一,并且我们希望也允许其他四分之一。从对称性来看,对于每个季度,可达到的单元格数量与上述相同,此外 - 添加原始单元格(我们开始的一个),因此我们总共得到:
#reachable_cells(d) = 4* (d)(d+1)/2 = 2d(d+1) + 1 ~= 2d^2
方法 2 几何:
查看以下大小为7 X 7 的示例矩阵:
6 5 4 3 4 5 6
5 4 3 2 3 4 5
4 3 2 1 2 3 4
3 2 1 0 1 2 3
4 3 2 1 2 3 4
5 4 3 2 3 4 5
6 5 4 3 4 5 6
这个矩阵包含距离中心最多为 3 的所有节点。
如果你仔细看,你会发现每个距离实际上都是围绕中心形成一个正方形,边长为d。 (所以对于d=1,在 0 附近有一个边长为 1 的正方形,对于 d=2,有一个边长为 2 的正方形,依此类推)
在正方形中,周长为4a - 其中a 是边的长度。
因此,从中心最多可通过d 步骤到达的唯一单元格的数量是任何此类矩形上的单元格数量。
边长为i的矩形上的单元格数为4i,我们需要对每个可能存在i<d的矩形求和,我们得到:
#reachable_cells(d) = sum { 4i | i=1,....,d } = 4 sum{ i | i=1,...,d}
这又是算术级数的总和(又加上原点),我们得到:
#reachable_cells(d) = 4 * d(d+1)/2 + 1 = 2d(d+1) + 1 ~= 2d^2
示例:
6 5 4 3 4 5 6
5 4 3 2 3 4 5
4 3 2 1 2 3 4
3 2 1 0 1 2 3
2 3 2 1 2 3 4
5 4 3 2 3 4 5
6 5 4 3 4 5 6
在上面,您有 7X7 矩阵,它包含距离中心不超过 3 的所有单元格,如您所见 - 通过计算可到达状态的数量并查看它是否适合论坛:
#reachable_cells(0) = 2*0*1 + 1 = 1
#reachable_cells(1) = 2*1*2 + 1 = 5
#reachable_cells(2) = 2*2*3 + 1 = 13
#reachable_cells(3) = 2*3*4 + 1 = 25
【讨论】: