在本书AI-一种现代方法和这个链接中的答案: Search algorithm with avoiding repeated states
我有一个问题。我有点理解我们如何得到 2 d 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
在上面,你有 7×7 矩阵,它包含距离中心 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
谷歌的工程师阿米特回答了这个问题。
答案 0 :(得分:2)
这个想法是相同距离的细胞形成菱形(45°的正方形)。
当您查看3
次出现时,您有4个边,总共4 * 3 = 12个单元格:
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
对于其他距离我们得到这个:
distance occurrences
----------------------
0 1
1 4
2 8
3 12
..
n 4n
对于 n ,公式 4n 为真, n = 0 除外 1
现在,要了解距离最多且包括 n 的不同单元格的数量,我们得到此表:
distance occurrences
----------------------
0 1
1 1+4
2 1+4+8
3 1+4+8+12
..
n 1 + ∑4i, for i in [1..n]
现在 1 +Σ4i= 1 +4Σi,Σi是triangular number,这意味着我们可以简化为:
1 + 4(½n(n + 1))= 1 + 2n(n + 1),这是您在示例中给出的公式:
#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
...
#reachable_cells(n) = 2*n*(n+1) + 1