我正在寻找一种算法来解决“滑动拼图”,这是一种拼图,您将图像分成 4x4 帧中的 16 块,您尝试重新组装以获得打乱的起始位置。这个特殊的谜题有一个限制,行只向右移动(并环绕),整行一次移动,列只向上移动(并环绕),整个列一次移动,都在一个平铺步骤中。数学太复杂了?有没有人遇到过这种问题?
问问题
26830 次
此链接将为您提供答案。他们谈论启发式使用的不同距离函数。A* 更容易找到其开源实现。
对于几乎任何问题,解决此类问题的一种“简单/简单”方法是将拼图状态表示为图形,并使用图形搜索/路径查找算法(DFS、BFS、Dijkstra、A* 等) . 也许有一些天才的特殊算法更适合这个问题,但你可能需要相当多的洞察力才能比 A* / 双向 dijkstra 更好。