搜索算法中的不同状态

时间:2016-06-21 20:41:01

标签: algorithm search artificial-intelligence

在本书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

谷歌的工程师阿米特回答了这个问题。

1 个答案:

答案 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Σitriangular 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