【发布时间】:2015-05-14 23:21:19
【问题描述】:
我需要知道是否有任何算法可以预先知道,而无需搜索初始集合的所有可能解决方案,如果我们可以达到第二个给定集合。
例如:
[1,0,2,3,5,6,4,8,7] -> [2,3,4,5,8,0,7,1,6]
如果第二个集合可以从第一个集合到达,则此算法将返回 True,否则返回 False。
我想了一下,我可以肯定地说,如果初始集合是可解的(可以将所有正方形按顺序排列),第二个也是如此,那么这个算法将返回 True,因为:
[1,2,3,4,5,6,7,0,8] [1,2,3,4,5,6,7,8,0] [1,2,3,4,5,0,7,8,6]
对于任何给定的可解谜题,可以将其反转以获得原始集合。
另一方面,如果其中一个集合是可解的,而第二个是不可解的,那么算法肯定会返回 False,因为如果您可以从不可解集开始达到可解集,那么我们就会产生矛盾。
现在,真正的问题是当两个集合都无法解决时。出于某种原因,我很肯定给定一个不可解的集合,有可能达到任何其他不可解的集合配置,因为当集合是可解的时候就会发生这种情况。但我找不到证据或任何文件!有人能启发我吗?
【问题讨论】:
标签: prolog sliding-tile-puzzle