先看空格,再移动它上下左右的数字。下面用一个确定的局面演示完整8步;这不是适用于所有题目的固定口诀。
从这个局面开始,一步步还原
图中的“空”表示唯一空格。每幅图都是完成该步之后的状态,深绿色标出刚移动的数字;说明写的是数字移动的方向。例如,把5向上移,空格就会来到5原来的位置。
本例依次移动的数字是 5 → 8 → 7 → 4 → 1 → 2 → 3 → 6。不要只记数字顺序:先对照起点。如果你的棋盘不同,照搬这组操作就不成立。
为什么这个例子只需要8步?
我们逐步验证了相邻关系和最终排列,并从该起点按步数逐层枚举,最早在第8步到达完成状态。因此8步是这个起点的最短解,不是每道3×3题的步数。
换一道题,先问三个具体问题
- 我下一步想移动哪个数字? 一次只选一个小目标,例如让1回到左上角。
- 空格能到它的哪一侧? 数字只能滑入空格,不能越过别的数字。
- 绕行后能否把原来的区域送回来? 暂时挪走一个正确数字可能是必要步骤,不必每一步都让更多数字归位。
先看第一行,再看剩余区域,有助于缩小观察范围。但“第一行排好就永远不动”不是通用保证;遇到剩余方块互相卡住,需要扩大周转区域。
只剩7和8互换,为什么一直还原不了?
对于这里的3×3棋盘、1至8按顺序、空格在右下角这一目标,可以数“逆序对”:忽略空格,把数字按行写成一排。前面的数比后面的数大,就记一对。
1、2、3、4、5、6、8、7中,只有“8在7前面”这一对,是奇数,所以无解;逆序对总数为偶数的有效3×3排列才可还原到本页目标。
横向移动不改变忽略空格后的数字顺序;在3列棋盘里,竖向移动会跨过两个数字,因此逆序对的奇偶性不变。这也解释了为什么只交换7和8会改变可解性。
这个判断限定3×3及上述目标排列。不要直接套到4×4数字华容道;偶数宽棋盘还要考虑空格所在行。重复数字、缺少数字或多个空格也不属于这里讨论的有效棋盘。
为什么花间一刻的初始题目都有解?
本站关卡从完成状态出发,按合法相邻滑动打乱,并保留还原路径。沿合法操作继续滑动不会把一个可解棋盘变成不可解棋盘;如果卡住,通常是路线需要调整。
把图解留在手边
可以用浏览器的打印菜单保存为PDF,或收藏这篇文章。打印版会保留题图和步骤,去掉导航及统计提示。转发时可用文末的分享按钮。
数学规则参考:普林斯顿大学八数码课程说明。本页题例、逐步图解及代码核验由花间一刻制作。