[迷宫中的算法实践]迷宫问题算法综述
最近听闻数据结构与算法实践课的老师又出了和上年一样的选题,不禁想起了去年自己完成作业时的点点滴滴,遗憾当时没有写博客的习惯,之前的一些心得这一年实践的过去也逐渐淡忘了,突然就有了总结一下的想法,希望能有新的收获吧。
由于当时也没注意保存,软件完成过程中的一些文档早已丢失了,幸运的是Winform版源码还在,Unity3D版程序也还幸存,虽然由于时间紧张只完成了大概框架,但美观程度也远非Winform可以相比的,先上几张软件图吧:
生成算法
软件实现了普利姆算法、递归回溯算法、递归分割算法和深度遍历图算法四种算法来完成迷宫的生成,前两种算法生成的迷宫本质上是一个二维矩阵网络形式的生成树,也就是说其中没有回路,同时从左下角的起点到迷宫中的每一点都有且仅有一条路径,递归分割法虽然不是生成树算法但是同样属于没有回路的迷宫生成算法,深度遍历图算法则来源于知网上的一篇论文,属于图的深度遍历算法,生成的迷宫随机性更强,路径也不止一条,但不得不说的确扮相比较差。
普利姆算法迷宫(Prim)
递归分割算法(Recursive division)
递归回溯(Recursive backtracker)
深度遍历图(Deep traversal graph)
寻路算法
至于寻路算法,软件实现了深度优先遍历、广度优先遍历、和A-Star三种算法,前两种自不必说,A-Star算法是一种启发式搜索算法,移动时会评估向周围八个方向行走的预期代价,实时选出更小代价的移动方向,不过因为生成的迷宫均为正方形迷宫且起点和终点固定为左上和右下,所以在本项目中,A-Star算法并未发挥出它应有的机智,效率与广度优先基本相同。后两种算法可以寻找到最短路径,而深度优先则并不能展示。图中绿色为正确路线,蓝色为寻路过程中经过的路线。。(PS:设定为深度广度四方向移动,A-Star八方向移动)
深度优先遍历(DFS)
广度优先遍历(BFS)
A-Star
因为实例中的迷宫入口出口位置的特殊性,广度优先在寻路过程中基本要走完全称,显得有些不太机智
本文章属于综述,后面的算法会分篇分别阐述。
作者:叫我玮仔
出处:http://www.cnblogs.com/WayneShao/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!