一张方格纸,带孩子玩懂最短路径

作者:浩哥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。