一张方格纸,带孩子玩懂最短路径
作者:浩哥AI实验室
这一次的算法课,不需要先打开电脑。
拿一张方格纸,画一个 7 × 7 的小地图。
在左下角写一个 S,在右上角写一个 G。
再放上几个纽扣、豆子或小纸团当障碍物。
然后问孩子:
你怎样确定,自己找到的不只是一条能走的路,而是最短的那一条?
这就是 WHSK 104 第三课的开始。
课程地址:怎样找到回家的短路?

找到一条路,和找到最短路,是两件事
如果只要到达终点,办法很多。
可以凭感觉向着终点走。
可以碰到墙就拐弯。
也可以不断试错,最后总能找到出口。
但“最短”是一个更严格的要求。
它不只要我们给出一条路,还要说明:所有比它更短的可能,已经被排除了。
这个区别,恰好是算法思维非常值得练习的地方。
不要急着冲向终点,先把近的地方走完
课程里的办法,叫做广度优先搜索。
这个名字对小学生来说有些陌生,但它的动作其实很直观:
一圈圈向外找。
第一圈,找出从起点走 1 步能到的所有格子。
第二圈,找出走 2 步能到的所有格子。
然后是 3 步、4 步、5 步。
它不急着猜哪个方向“看起来最像答案”,而是先把同样近的所有可能都考察完。

课程页里,黄色方格是已经发现、正在等待探索的位置,浅绿色是已经处理过的位置。
当搜索第一次到达终点,所有比它更近的方格都已经被考察过了。
所以这一次到达,就一定是最短路。
这不是靠运气猫中了答案,而是算法的探索顺序给出了保证。
如果你也关心孩子怎样从“找到答案”走向“解释为什么”,可以关注“浩哥AI实验室”。这套课程会继续优先训练预测、记录和验证。
把算法从屏幕搬到餐桌上
这一课我仍然保留了“离开屏幕”的环节。
所需要的东西很简单:一张方格纸、一支铅笔、两支彩笔,再加几个可以当障碍物的小东西。
第一步,画出 7 × 7 的地图,标出 S 和 G。
第二步,放下六个障碍物。
第三步,在起点周围可以一步到达的格子里写 1。
第四步,从这些格子继续往外找,依次写上 2、3、4。
第五步,当数字第一次到达 G,再从 G 开始,每次走向数字少 1 的相邻方格,把整条路画回来。

家长在这个环节不需要会写代码。
只需要帮忙守住规则,再追问三个问题:
为什么要先涂完数字相同的一圈?
如果一个格子被到达两次,还需要再处理吗?
墙挪动一格,最短路会怎样变化?
孩子是在用手执行算法,而不是在听大人讲算法。
最后才把这套办法写成 JavaScript
课程的最后一段,仍然是三档代码陪练。
第一档只需要补上一个动作:怎样取出最早进入队列的位置。
第二档要把新发现的方格和它的完整来路放进队列。
第三档才尝试自己完成完整的最短路函数。
运行代码后,页面不只检查“有没有到达”,还会检查三件事:
有没有穿过障碍物。
每一步是不是只走一格。
得到的路是不是真的最短。
而且这些代码全部在浏览器里运行,不会把运算压力交给服务器。
这也是我现在对“ AI 时代还要不要亲手写代码”的一个阶段性答案:
不必把所有语法都当成入场券,但值得在看懂真实动作以后,亲手把办法精确地写出来。
第三课已经可以在线体验:https://howie.wang/WHSK/104/03/
公众号和视频号“浩哥AI实验室”继续分享 AI 工具、课程与真实实验;家庭教育和成长方向也会同步到视频号“浩哥AI实验室·成长研究”。公众号微信号:de8ug-vip。