0x01 搜索策略
无信息搜索策略
1. Breadth First Search(BFS) 广度优先搜索
- 先访问的节点先扩展
- 每次扩展深度最浅的节点
- 能够用一个队列来保持待扩展的节点
2. Depth First Search(DFS) 深度优先搜索
- 后被访问的节点先进行扩展
- 每次扩展深度最深的节点
- 对于无边界的搜索问题没法保证完备性
- 能够用一个栈来保持待扩展的节点
- 累计路径耗散最小的节点先被扩展
- 若是每一步消耗为正,保证能够获得最优解
- 若单步耗散相等,此算法与BFS算法一致
- Dijkstra’s Algorithm 迪杰斯特拉算法
- 它不平等地探索全部可能的路径,它偏心低成本的路径。当移动成本不一样时,咱们使用这个代替广度优先搜索。
4. Depth Limited Search(DLS) 深度有限搜索
- 解决深度优先搜索的边界问题
- 对于无边界的搜索问题能够防止进入死循环
- 对于超过搜索深度的搜索没法保证的到解
5. Interative Deepening Search 迭代深刻搜索
- 结合广度和深度优先的搜索。不断加大深度限制,摆正深度有限搜索的完备有解性
Heuristic Search启发式搜索
1. Greedy best first search 贪婪最佳优先搜索
- 倾向于一条路径一直搜索下去
- 不能保证获得最优解
- 若是状态空间是无限的,可能不完备
2. A* A-start搜索
- 在贪婪最佳优先搜索的基础上加入评价函数,解决最优解的问题
0x02 适用策略分析
1. 流场寻路
- 广度优先搜索
- 大量物体前往同一个点的时候
- 只须要生成一次流场,就能够解决任何一点到目标点的寻路
2. A星寻路
0x03 关于A星寻路进一步优化
关于A星的进一步优化有不少方案。下面是我的感受影响最大的两个方案,能够有效改善性能和效果。web