🎨 外观

滑块大师🧩

就是那个经典的「8 数码 / 华容道」拼图。玩着玩着,你会摸到 AI 解谜背后的三件法宝:把问题形式化用估值找方向用不变量一眼判生死

💡 建议按 1 → 2 → 3 顺序闯关:每关玩之前先做「🧮 玩之前先猜一猜」,通关后有 💡 提示点破背后的数学,最后用一页 🧠 数学思维总结把整条主线串起来。
取材自《人工智能·现代方法》的 8 数码(滑块问题)。适合中小学 AI / 信息科技启蒙、课堂演示与亲子探究。

123
第 1 关 · 滑动入门

🧩 把数字滑回顺序

3×3 的格子里有 8 个数字滑块和 1 个空格。点击紧挨空格的滑块(电脑上也可用方向键 ↑↓←→),它就会滑进空格。🎯 任务:把左边拼成右边的目标,动作越少越好。

玩之前🧮 先猜一猜

开局时空格在正中央。如果用广度优先搜索往外走一步,第一层会冒出几个不同的新局面?

✅ 是 4 个。空格能往上下左右各换一格,就有 4 种走法 → 4 个新局面。这个数叫分支因子:空格在只有 2、在有 3、在中心有 4。下面右上角的「可走方向」会随空格位置变,玩的时候盯着看!
动作代价(步数)0
可走方向4
已归位0/8
当前局面
🎯 目标

🟨 黄色 = 此刻能滑动的滑块 🟩 绿色 = 已经归位 本题最优解 10 步,挑战用最少步数复原!

⭐️⭐️⭐️

复原成功!🎉

你用了 0 步(最优 10 步)。

💡 你刚把一个拼图变成了 AI 的「搜索问题」:每一种摆法是一个状态,滑一下是一个动作(代价 1),从开局走到目标、步数最少的那条路就是最优解。这套「状态 / 动作 / 转移 / 目标 / 代价」的拆法,能套到几乎所有 AI 问题上。
📖 知识卡:用六要素形式化「滑块问题」

AI 不会「看着拼图凭感觉推」。它会先把问题形式化成六个要素,之后任何搜索算法都能上手:

要素在本游戏里是什么
状态9 个格子上「空格 + 1~8」的一种摆法(一个排列)。
初始状态开局那张图(左边)。
动作空格朝 上/下/左/右 滑一格 —— 只需 4 个词。
转移模型状态 + 动作 → 新状态(空格与相邻滑块交换)。
目标状态右边的有序排列。
动作代价每滑一次 = 1,所以总代价 = 总步数。
为什么说「空格在动」,而不是「滑块在动」?

现实里是滑块在动,但课本让空格来执行 L/R/U/D。两者是对偶的(把空格左移=把它左边那块右移),可合法动作数都一样(2~4 个)。差别在词汇表:以滑块建模要写「第几块朝哪滑」,最多 8×4=32 种;以空格建模只要 4 种。简洁近一个数量级 —— 这就是好的形式化。

123
第 2 关 · 曼哈顿距离

🧭 给局面打分 · 贪心 vs 最优

给每个局面打一个分数 h =「8 块滑块各自离自己目标格的距离之和」。h 越小越接近成功。边玩边盯着 h 看 —— 你会撞见一个反直觉的真相。

玩之前🧮 先猜一猜

这一关开局的分数 h(初始) = 4。那么本题最少几步能复原?

至少 4 步,实际要 8 步。h 是一个「下界」:它只保证「步数 ≥ h」,绝不会高估,但常常偏小。本题 h=4 而真实最优 = 8,差了一倍。把下界当成答案,是最常见的坑。下面亲手验证一下!
步数0
当前 h4
趋势
当前局面
🎯 目标

🟨 = 能滑动的滑块。试试看:开局两块能动的滑块,滑哪一块 h 都会变大——这就是「贪心机器人」会卡死的地方。

⭐️⭐️⭐️

复原成功!🎉

你用了 0 步(最优 8 步)。

💡 看这条 h 曲线:4→5→6→5→4→3→2→1→0。开头两步 h 不降反升 —— 为了给右下角的滑块腾路,必须先把已经归位的滑块「逆行」推开。只顾眼前让 h 最快下降的「贪心」会当场卡死(开局没有任何一步能让 h 变小);最优解反而要求你先吃亏、再翻盘。这就是「贪心 ≠ 最优」。
📖 知识卡:什么是「可采纳的启发式」?

启发式 h 就是给一个局面估个「还差多远」的分。好的启发式要可采纳:永远不高估真实步数,即 h ≤ 真实最少步数。这样用 A* 搜索才保证找到最优解。

曼哈顿距离 h₂ = 每块滑块「横向格数差 + 纵向格数差」之和
  • 为什么不高估?每滑一步,只挪动一块、且只挪一格,最多让总曼哈顿距离减 1。要把 h 降到 0,至少需要 h 步。
  • 为什么常偏小?它假装每块滑块都能独立走最短路,忽略了滑块之间互相挡道、要绕行让位。本关 h=4 但真实 8,差距就来自「逆行让路」。
  • 还有更弱的:「错位片数 h₁」= 不在目标格的滑块个数。它也不高估,但 h₂ ≥ h₁,所以曼哈顿信息更足、搜索更省。

📌 一句话:h 是下界,是「指南针」不是「答案」。它告诉你大概该往哪走,但真正多远,还得搜。

123
第 3 关 · 可解性实验室

⚖️ 不用试,就判断能不能解

惊人的事实:一半的局面根本拼不回去!有没有办法不用瞎试就判定?有 —— 数一个叫「逆序数」的东西,看它是奇是偶。下面亲手做实验。

玩之前🧮 先猜一猜

拿一个复原的局面,随手挑两块滑块对调一下。新局面还能复原吗?

一定不能!对调两块 = 一次「对换」,会让逆序数的奇偶翻一次,于是局面从可解的那一半,掉进不可解的另一半。下面用「交换模式」亲手验证:随便换两块,下方的判定立刻从 ✅ 变 ❌。
逆序数0
奇偶
点两块滑块来交换
✅ 可解:能复原成目标

交换模式:点两块滑块直接对调位置(这不是合法滑动,但能让你看见奇偶怎么翻)。滑动模式:只能合法滑动,逆序数奇偶永远不变 —— 这就是它能当判据的原因。

📖 知识卡:逆序数 · 一条守恒律判生死
逆序数怎么数?

从左到右、从上到下读出 8 块滑块的编号(跳过空格),数一数有多少对「大数排在小数前面」。比如读成 3 1 2 …:3 排在 1、2 前面,就是 2 对逆序。

定理:合法滑动,逆序数奇偶永不变
  • 横移:空格和同行邻块换位,滑块的前后次序没变 → 逆序数不变。
  • 纵移:一块滑块越过另两块,逆序数变化 ±2 或 0 → 奇偶不变
能否复原 ⟺ 当前逆序数 与 目标逆序数 同奇偶

目标局面逆序数 = 0(偶)。所以对 3×3:逆序数是偶数 ⟺ 可解

由此推出两件大事
  • 状态空间一分为二:9! = 362880 个局面,按奇偶各占一半(181440 个)。你只能在自己那一半里游走,另一半永远到不了。
  • 交换两块必翻盘:对调是一次对换,奇偶翻转 → 可解变不可解。所以拼图掉地上被人塞错一块,可能就真的拼不回去了。

📌 这类「找一个每步必翻一次的奇偶量」的招式,叫不变量论证:不用搜索,一刀砍掉半个世界。

123
通关总结

🧠 三关下来,你练了哪些数学思维?

同样是滑一个拼图,越往后越像数学。把这条主线拎出来——这正是 AI 解决「搜索问题」的通用套路。

把问题形式化

先用状态 / 动作 / 转移 / 目标 / 代价六要素把现实问题翻译成 AI 能算的形式。选「空格在动」而非「滑块在动」,动作词汇从 32 种压到 4 种 —— 好形式化让问题更简洁。

状态空间会爆炸

3×3 拼图就有 9! = 362880 种局面。穷举行不通,这就是 AI 问题难的根源,也是为什么需要「估值」来指方向。

启发式 = 下界

曼哈顿距离 h 给局面打分,只低估、不高估(h ≤ 真实步数)。它是指南针不是答案:本关 h=4 而真实 8。可采纳的启发式,才能保证 A* 找到最优解。

贪心 ≠ 最优

只顾眼前让 h 最快下降,会在「局部极小」卡死。真正的最优解常要求你先逆行、吃点亏,才能翻盘。眼前最优,不等于全局最优。

不变量一眼判生死

找到一个「每步必翻一次」的奇偶量(逆序数),它的奇偶就守恒。靠它不用搜索就能砍掉半个状态空间,判定一个局面到底有没有解。

🔌

再玩一个?

同一套「状态 / 动作 / 代价 / 最优」的思路,还能解布线、导航、整理……去游戏厅里换个皮接着玩。