深度优先搜索:迷宫路径探索与最短路线算法

需积分: 0 0 下载量 194 浏览量 更新于2024-07-01 收藏 586KB PDF 举报
在岳宇轩的迷宫实验中,他运用了深度优先搜索算法来解决老鼠走迷宫的问题。数据结构的核心部分是堆栈(栈)的使用,堆栈minPath被设计用于存储最短路径。实验过程分为以下几个步骤: 1. **路径判断与初始化**: 首先,检查起点(start)是否合法,包括位置是否越界或位于墙壁上。由于原始方法过于繁琐,建议在地图边缘添加一圈虚拟墙壁,以便统一处理所有节点的判断。 2. **堆栈操作**: - 当起点合法时,将其压入堆栈s。 - 定义minPath栈,用于存储当前找到的最短路径。 - 使用FillStack函数尝试填充路径,如果找到出口则返回true,否则返回false。这个函数是核心逻辑,负责路径的探索和出口检测。 3. **路径长度检查**: - 如果FillStack成功,检查路径长度,若为2表示找到最短路径,立即输出。 - 否则,将当前路径赋给minPath,然后通过RidirectStack函数调整路径方向,以寻找可能更短的路径。RidirectStack负责路径方向的修正,直到无更多改进为止。 4. **复制路径和释放内存**: - 堆栈不能直接复制,需要使用额外的栈将路径内容倒序存入,再将这些内容回填到原栈。同时,确保在填充过程中更新minPath以保持最短路径。 5. **实验总结**: - 岳宇轩在实验中意识到堆栈操作的细节,如不能直接复制栈,而是通过倒序复制和填充的方式实现。他还强调了提炼的两个关键函数FillStack和RidirectStack的作用,前者用于路径填充,后者用于路径方向的修正,这两个函数在路径探索和优化中起到了核心作用。 在整个实验过程中,深度优先搜索的递归性质和堆栈的数据结构特性得到了充分应用,帮助找到了迷宫中的最短路径。同时,岳宇轩通过实践锻炼了自己的算法设计和编程技巧,特别是在处理复杂路径搜索和路径优化问题上。