游戏AI中的搜索与寻路

来源:互联网 发布:官路淘宝txt下载 编辑:程序博客网 时间:2024/05/21 10:08

0x01 搜索策略

无信息搜索策略

1. Breadth First Search(BFS) 广度优先搜索

  • 先访问的节点先扩展
  • 每次扩展深度最浅的节点
  • 可以用一个队列来保持待扩展的节点

2. Depth First Search(DFS) 深度优先搜索

  • 后被访问的节点先进行扩展
  • 每次扩展深度最深的节点
  • 对于无边界的搜索问题无法保证完备性
  • 可以用一个栈来保持待扩展的节点

3. Uniform Cost Search(UCS) 一致代价搜索

  • 累计路径耗散最小的节点先被扩展
  • 如果每一步消耗为正,保证可以得到最优解
  • 若单步耗散相等,此算法与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星寻路

  • A-start搜索
  • 少量物体向某点移动的路径

0x03 关于A星寻路进一步优化

关于A星的进一步优化有很多方案。下面是个人感觉影响最大的两个方案,可以有效改善性能和效果。

  • 节点合并,合并临接节点。
  • theta-star 寻路算法 解决A*寻路的平滑问题
原创粉丝点击