迷宫问题以及状态空间搜索的实现,有赖于栈和队列这些数据结构的支持。
1. 解迷宫问题
解迷宫问题是一种常见智力游戏,也可以视为许多实际问题的反映和抽象。例如:
- 在公路网或铁路网上查找可行的或最优的路线;
- 电子地图的路径检索;
- 计算机网络传输的路由检索;
对于迷宫问题,一般是给定一个迷宫图,包括图中的一个入口点和出口点,要求在图中找到一条从入口到出口的路径。各种具体的迷宫可能具有不同的表面结构,给出的迷宫图各式各样,但问题实质都差不多,都可视为寻路问题。
不难看出,搜索从入口到出口的路径,这种问题具有递归性质:
- 从迷宫的入口开始检查,这是初始的当前位置;
- 如果当前位置就是出口,问题解决;
- 如果从当前位置已无路可走,当前正在进行的探查失败,需要按照一定方式另行继续搜索,这是迷宫搜索的技术或策略问题;
- 从可行方向中取一个方向前进一步,从那里继续探索通往出口的路径;