**迷宫(Maze)**指的是充满复杂通道,很难找到从其内部到达入口或从入口到达中心的道路,道路复杂难辨,人进去不容易出来的建筑物。
假设一个迷宫,它长这样(我自己画的,你也可以通过改变下面的矩阵从而改变迷宫的形状)。
起始点是红色小方块,终点是绿色的小方块,其中蓝色的■代表墙。
我们可以把迷宫抽象成一个矩阵,其中1代表墙,0代表有路,那么有
使用numpy模块的矩阵,不仅仅是它比双重list代表的矩阵好,还有的是把元素设置为int8,每个元素在-127到128变化即可(实际上根本用不到那么多),况且int8只占一个字节。
定义四个方向
我们理一下思路,走迷宫的决策是:
- 标记当前位置
- 从栈中弹出一个位置和要走的方向,也就是当前位置和未知方向
- 看看未知方向,是否可以走。
- 如果有可以走,把当前位置和下一个未知方向压入栈。把新位置和一个未知方向压入栈,返回1步骤,如果未知方向不可以走,再探查下一个未知方向。如果发现是死路,退到之前的位置再看看。
- 下一个未知点是终点,搜索结束。返回路径
- 一直退到出发点直到栈长度为0,说明没有路径可以走到终点。
更多Python视频、源码、资料加群531509025免费获取
为什么要标记当前位置,我用一个小漫画说明
现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。
分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!