目录
一,普通迷宫
1,普通迷宫的尝试法
一般人解普通迷宫都是“尝试法”:碰到岔路随便试一条,遇到死路往回走。
2,尝试法的本质
尝试法其实就是DFS深度优先搜索算法。
3,尝试法的优劣
优点:思路简单自然,孩子几乎无师自通可以想到这个方法。
缺点:岔路一多就忘了前面的信息。
4,岔路标记法
一般人试迷宫的时候都是画线,往回走的时候又擦线。
我的建议是只在岔路口做标记。
在岔路口把所有方向画上箭头,然后把尝试的这条路对应的箭头画上标记(我用的是圆圈,其实不画也行,对于简单迷宫无所谓,只有结构复杂的迷宫才需要)。
继续往前走,遇到岔路就标记。
遇到死路就往回退,退回到岔路口就换另外一条路。
遇到新的岔路口要把从哪边来的也画清楚。
为了节省篇幅,我把一些一眼就能看出来的死路直接打叉叉,这样往回走的时候就看得清楚了。
下一个岔路口:
继续:
继续:
这样就找到答案了。
小结:
迷宫太简单了,没太显示出往回走的操作。
画完图之后突然又觉得,要教娃这样的标记法可能也没那么简单。
5,另类搜索算法
如果一个迷宫不含圈,那么可以这么解决:
一直沿着左边界走。
这个方法对于含圈迷宫无效,而且可能没有很简单的应对方案。
这个方法属于规则表述很简单,但是思路其实并不是最自然的,甚至对于不含圈迷宫来说,这个方法的正确性,也不那么显然。
二,带圈迷宫
迷宫如果带圈,可能会让人不知所措。
我总结出岔路标记法的一个应对方案:只要走到岔路口,一律视为死路,往回走。
当前岔路口我画了红色圈圈,再往前走就会再次到这个岔路口,这种情况就直接往回走。
三,视野迷宫
taptap迷宫解谜的黑夜模式,只有一个固定的视野。
解法和普通迷宫其实没有本质区别。