益智8兼容国家

时间:2015-05-14 23:21:19

标签: prolog 8-puzzle

我需要知道是否有任何算法允许事先知道,而不是搜索初始集合的每个可能的解决方案,如果我们可以达到第二个给定集合。

例如:

[1,0,2,3,5,6,4,8,7] - > [2,3,4,5,8,0,7,1,6]

如果第二个集合可以从第一个集合,则此算法将返回True ,否则返回False。

我想了一下它,我当然可以说,如果初始集是可解的(可以按顺序放置所有的正方形),那么第二个,那么这个算法将返回True,因为:< / p>

[1,2,3,4,5,6,7,0,8]&lt; - &gt; [1,2,3,4,5,6,7,8,0] &lt; - &gt; [1,2,3,4,5,0,7,8,6]

对于任何可解决的拼图,可以反转以获得原始集。

另一方面,如果其中一个集合是可解的而第二个集合是不可解的,那么算法肯定会返回False,因为如果你能够在无法解决的集合上找到可解的集合而不是我们会有矛盾的话。 / p>

现在,真正的问题是两个集合都无法解决。出于某种原因,我认为给定一个无法解决的集合,可以达到任何其他无法解决的集合配置,因为当集合可解决时会发生什么。但我无法找到证据或任何文件!有人可以开导我吗?

1 个答案:

答案 0 :(得分:1)

由于存在有限数量的电路板状态(9!= 362,880),电路板状态对之间的转换数量有限(9!^ 2 = 131,681,894,400 = 17 GB信息)。如此蛮力,永远幸福。