🎨 外观

网格世界🧭

用三个小游戏,亲手玩懂「智能体」如何在世界里感知状态选择动作抵达目标——这正是《人工智能·现代方法》里搜索问题的入门模型。

💡
建议按 1 → 2 → 3 顺序闯关:每关玩之前先做「🧮 数学小挑战」练一练怎么数状态,通关后会有提示点破背后的数学,最后用一页 🧠 数学思维总结把整条主线串起来。
👨‍👩‍👧
适合亲子在家一起玩,也适合中小学 AI 启蒙与信息科技课堂。
123
第 1 关 · 真空吸尘器世界

🤖 把每一格都打扫干净

这是人工智能教科书的「第一课」。智能体(吸尘器)住在一排格子里,有些格子有灰尘。🎯 任务:把所有格子都打扫干净,动作越少越好。

玩之前🧮 先猜一猜

一个有 2 个格子 的吸尘器世界。要完整描述此刻的「状态」,得说清两件事:吸尘器停在哪一格每个格子是脏还是干净。这样的状态一共有多少种?

✅ 是 8 种。用乘法原理:位置 2 种 × 每格脏/净(2×2 = 2² = 4 种)= 2 × 4 = 8。一般地,n 个格子就有 n × 2ⁿ 种状态。下面玩的时候,「总状态数」会随格子数一起变,验证一下!
格子数
动作代价0
剩余灰尘0
总状态数8
🤖吸尘器🌫️灰尘(脏)已清洁
键盘: 移动,空格 吸尘
⭐️⭐️⭐️

打扫完成!🎉

💡 你刚体会了「状态」与「最优」:整个世界的所有可能局面只有 n×2ⁿ 种;而你要找的是从起点到「全干净」动作最少的那条路 —— 这就是 AI 的「搜索」。
📖 知识卡:把它写成一个「搜索问题」(读完解锁下一关)
状态(State)
哪些对象在哪些单元格中 —— 即吸尘器在哪一格 + 每个格子是脏还是净
状态数怎么算?(乘法原理)
位置数 n × 每格 2 种(脏/净)共 2ⁿ = n × 2ⁿ
只有 2 个格子时:2 × 2² = 8 个状态。一般地,n 个格子就有 n × 2ⁿ 个状态。
动作(Actions)
向左 Left、向右 Right、吸尘 Suck
转移模型(Transition)
  • Suck:当前格变干净(已干净则无变化)。
  • Left/Right:移到相邻格;已在边缘则动作无效(位置不变)。
目标状态(Goal)
所有格子都干净(吸尘器停在哪里都行)。
动作代价(Cost)
每执行一个动作代价为 1,总代价越小越好。
123
第 2 关 · 浇花机器人

🌸 用刚好够的水浇遍干花

在吸尘器世界上,我们加一个新东西:水壶。一排花圃里有干花(🥀)和已浇的花(🌸),机器人带着容量有限的水壶,每浇一盆用 1 单位水。🎯 任务:用刚好够的水把所有干花浇遍。

玩之前🧮 先猜一猜

还是 2 个格子,但机器人这次多带了一个水壶,最多装 1 单位水(C=1)。现在描述「状态」要多记一件事:水壶里还剩几滴水。这样的状态一共有多少种?

✅ 是 16 种。在吸尘器的 2 × 2² = 8 上,再乘以水量的 (C+1) = 2 种 → 8 × 2 = 16。每多一个会变化的维度,状态数就乘一次 —— 这就是 AI 里常说的「状态爆炸」。公式:n × (C+1) × 2ⁿ
关卡
动作代价0
水壶3/3
剩余干花0
总状态数
🤖机器人🥀干(待浇)🌸已浇💧水量
键盘: 移动,空格 浇水 · 目标用水恰好 = 干花数
⭐️⭐️⭐️

花儿都喝饱啦!🌷

💡 这里藏着一条「能不能成功」的判断法:只要 水量 ≥ 干花数 就一定浇得完(直线上想走到哪格都行)。加一个维度,不只让状态变多,还让「为什么能解」变清楚了。
💦 水壶空了,但还有干花没浇到。这个初始状态无解吗?想想:水量是否 ≥ 干花数。点「重新开始」再试。
📖 知识卡:水壶让问题"长大"了(读完解锁下一关)
状态(State)
哪些花是干的、机器人在哪一格水壶里还剩多少水
状态数怎么算?
位置 n × 水量 (C+1) 种 × 每盆花 2 种共 2ⁿ = n × (C+1) × 2ⁿ
只有 2 格、容量 C=1 时:2 × 2 × 2² = 16 个状态。
动作(Actions)
向左 Left、向右 Right、浇水 Water
Water 只有在当前花是干的、且水量>0 时才能用。
转移模型(Transition)
  • Water:当前花由「干」→「已浇」,水量 −1。
  • Left/Right:移到相邻格,边缘时无效。
目标状态(Goal)
所有花都「已浇」。
动作代价(Cost)
每个动作代价 1。
🔑 可解性判据
从某状态能否成功,等价于 水量 ≥ 当前干花数(一维直线无障碍,能不能走到某格是显然的)。 这就是它比吸尘器世界更深刻的地方:新增的「水量」维度,把「为什么问题可解」这件事暴露了出来。
123
第 3 关 · 图书馆整理机器人

📚 用最少的动作收好所有书

2×3 的地面网格 A B C / D E F,机器人要走到有书的格子上「收书」。🎯 任务:用最少的动作把书全部收好,挑战追平程序算出的最优解!

玩之前🧮 先猜一猜

2×3 网格里只有 BF 两格可能放着书。描述「状态」要说清三件事:机器人停在哪一格B 有没有书F 有没有书。这样的状态一共有多少种?

✅ 是 24 种乘法原理:位置 6 种 × B(有/无 2 种) × F(有/无 2 种) = 6×2×2 = 24。换加法原理也行:机器人在每个格子各有 4 种书的组合,4×6 = 24。一般是 n × 2ᵏ(n 个格子、k 个可能有书)。
书的位置
你的代价0
最优解5
剩余书本0
总状态数24
🤖机器人📕有书空格 = 无书
键盘:↑↓←→ 移动,空格 收书
⭐️⭐️⭐️

图书馆整理好啦!📗

💡 「最优解」是怎么算出来的?程序用广度优先搜索(BFS)把所有状态一层层试出来,第一次把书收完的步数就是最少步数 —— 这正是 AI 求最短动作序列的方法。
📖 知识卡:和吸尘器世界是同一个模型(读完解锁总结)
状态(State)
机器人在哪个格子 + 每个「可能有书」的格子是否还有书。
状态数怎么算?
位置 6 种(A~F)× B 有/无书 2 种 × F 有/无书 2 种:
6 × 2 × 2 = 24 个状态
加法原理理解:机器人在每个格子各有 4 种书的组合,4+4+4+4+4+4 = 24
普遍化:n 个格子、其中 k 个可能有书,状态数 = n × 2ᵏ。这里 n=6, k=2 → 6 × 2² = 24
动作(Actions)
上、下、左、右、收书(Collect)。
转移模型(Transition)
  • 向相邻格移动 → 位置变化;试图移出网格 → 位置不变。
  • 在有书的格子收书 → 该格的书消失;在没书的格子收书 → 状态不变。
目标状态(Goal)
所有格子都没有书(机器人停在哪不限)。
动作代价 & 最优解
每个动作代价 1。页面上的「最优解」由程序用广度优先搜索(BFS)实时算出 —— 这正是 AI 求最短动作序列的方法。
123
通关总结

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

同样是「指挥一个小机器人」,越往后越像数学。把这条主线拎出来——

乘法原理数状态

把一个局面拆成几个互相独立的部分,每部分的可能数相乘,就是总状态数。吸尘器:位置 × 每格脏净 = n × 2ⁿ。

加法原理也能数

按机器人所在格子分类,把各类状态数相加,结果一样。图书馆:4+4+4+4+4+4 = 6×4 = 24。两条原理是一体两面。

状态爆炸(指数增长)

每给世界加一个会变化的维度(多一格、加水壶),状态数就乘上一个倍数。格子从 2 到 4,状态从 8 飙到 64 —— 这就是 AI 问题为什么难。

搜索最优解

在海量状态里找「动作最少」的那条路,要靠广度优先搜索(BFS)一层层展开。你在图书馆挑战的「最优解」就是这么算出来的。

同一个模型,换层皮

吸尘器、浇花、图书馆,本质是同一个「位置 × 每格状态」模型,只是把「灰尘」换成「干花」「放错的书」。学会一个,就懂了一类。

🚗

再玩一个?

「寻径问题」把代价从「步数」升级成「时间 + 金钱」,是更接近真实导航的优化挑战。