15 拼图启发式算法

3

《15拼图》是模拟包含启发式算法的经典问题。该问题常用的启发式算法包括计算错误放置的方块数和查找每个方块与其在目标配置中的位置之间曼哈顿距离之和。请注意,这两种方法都是可接受的,即它们永远不会高估剩余移动次数,这确保了某些搜索算法(例如A*)的最优性。

  • 您认为哪种启发式算法是合适的,A*似乎很好用,您有例子吗?也许是用cjava实现的示例?

不管代码怎样,只要提供启发式建议或您的意见即可。 - edgarmtze
3
与使用A*算法解决15数码问题相关的问题。 - jfs
2个回答

8

启发式算法

我的选择启发式算法是找出排列中所有逆序对的和是奇数还是偶数——如果是偶数,那么15Puzzle是可解的。

排列中逆序对的数量等于其逆置排列的数量(Skiena 1990年,第29页;Knuth 1998年)。

只有当我知道它是可解的时候,才有解决它的意义。因此,任务就是减少逆序对,问题就迎刃而解了。要找到一个解决方案,不应超过80步。

更多帮助

排列的公式为:

enter image description here

0到16的阶乘为{1、2、6、24、120、720、5040、40320、362880、3628800、39916800、479001600、6227020800、87178291200、1307674368000、20922789888000}。如果需要更多,请在WolframAlpha中搜索Range[1,20]!

如果您想了解更多信息,请阅读:15Puzzle


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接