先看空格,再移动它上下左右的数字。下面用一个确定的局面演示完整8步;这不是适用于所有题目的固定口诀。

从这个局面开始,一步步还原

图中的“空”表示唯一空格。每幅图都是完成该步之后的状态,深绿色标出刚移动的数字;说明写的是数字移动的方向。例如,把5向上移,空格就会来到5原来的位置。

起点:空格在中间。
第1步:把 5 向上移。
第2步:把 8 向右移。
第3步:把 7 向下移。
第4步:把 4 向下移。
第5步:把 1 向左移。
第6步:把 2 向左移。
第7步:把 3 向上移。
第8步:把 6 向上移。 数字全部归位。

本例依次移动的数字是 5 → 8 → 7 → 4 → 1 → 2 → 3 → 6。不要只记数字顺序:先对照起点。如果你的棋盘不同,照搬这组操作就不成立。

为什么这个例子只需要8步?

我们逐步验证了相邻关系和最终排列,并从该起点按步数逐层枚举,最早在第8步到达完成状态。因此8步是这个起点的最短解,不是每道3×3题的步数。

换一道题,先问三个具体问题

  1. 我下一步想移动哪个数字? 一次只选一个小目标,例如让1回到左上角。
  2. 空格能到它的哪一侧? 数字只能滑入空格,不能越过别的数字。
  3. 绕行后能否把原来的区域送回来? 暂时挪走一个正确数字可能是必要步骤,不必每一步都让更多数字归位。

先看第一行,再看剩余区域,有助于缩小观察范围。但“第一行排好就永远不动”不是通用保证;遇到剩余方块互相卡住,需要扩大周转区域。

只剩7和8互换,为什么一直还原不了?

这个排列只有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,或收藏这篇文章。打印版会保留题图和步骤,去掉导航及统计提示。转发时可用文末的分享按钮。

数学规则参考:普林斯顿大学八数码课程说明。本页题例、逐步图解及代码核验由花间一刻制作。