目录

​​一,普通迷宫​​

​​1,普通迷宫的尝试法​​

​​2,尝试法的本质(选读)​​

​​3,尝试法的优劣​​

​​4,岔路标记法​​

​​二,带圈迷宫​​

​​三,普通迷宫的另类搜索算法(选读)​​


最近给8岁的娃买了本复杂迷宫的图书,发现通过微信视频来传授技巧是不太方便的。

于是决定写下本文,让娃她妈先学习本文,再手把手教娃。

我将对部分章节贴上“选读”的标签,缺乏基础的家长直接跳过这些章节即可。

一,普通迷宫

1,普通迷宫的尝试法

一般人解普通迷宫都是“尝试法”:碰到岔路随便试一条,遇到死路往回走。

2,尝试法的本质(选读)

尝试法其实就是​​DFS深度优先搜索算法​​。

3,尝试法的优劣

优点:思路简单自然,孩子几乎无师自通可以想到这个方法。

缺点:岔路一多就忘了前面的信息。

4,岔路标记法

一般人试迷宫的时候都是画线,往回走的时候又擦线。

我的建议是只在岔路口做标记。

puzzle(104)迷宫_算法

在岔路口把所有方向画上箭头,然后把尝试的这条路对应的箭头画上标记(我用的是圆圈,其实不画也行,对于简单迷宫无所谓,只有结构复杂的迷宫才需要)。

 puzzle(104)迷宫_深度优先_02

 继续往前走,遇到岔路就标记。puzzle(104)迷宫_搜索算法_03

 遇到死路就往回退,退回到岔路口就换另外一条路。

puzzle(104)迷宫_微信_04

 遇到新的岔路口要把从哪边来的也画清楚。

puzzle(104)迷宫_微信_05

 为了节省篇幅,我把一些一眼就能看出来的死路直接打叉叉,这样往回走的时候就看得清楚了。

puzzle(104)迷宫_微信_06

 下一个岔路口:

puzzle(104)迷宫_深度优先_07

 继续:

puzzle(104)迷宫_微信_08

继续:

puzzle(104)迷宫_微信_09

 这样就找到答案了。

 puzzle(104)迷宫_搜索算法_10

 小结:

迷宫太简单了,没太显示出往回走的操作。

画完图之后突然又觉得,要教娃这样的标记法可能也没那么简单。

二,带圈迷宫

迷宫如果带圈,可能会让人不知所措。

puzzle(104)迷宫_深度优先_11

我总结出岔路标记法的一个应对方案:只要走到岔路口,一律视为死路,往回走

puzzle(104)迷宫_深度优先_12

 当前岔路口我画了红色圈圈,再往前走就会再次到这个岔路口,这种情况就直接往回走。

三,普通迷宫的另类搜索算法(选读)

如果一个迷宫不含圈,那么可以这么解决:

一直沿着左边界走

这个方法对于含圈迷宫无效,而且可能没有很简单的应对方案。

这个方法属于规则表述很简单,但是思路其实并不是最自然的,甚至对于不含圈迷宫来说,这个方法的正确性,也不那么显然。