游戏AI中的搜索与寻路

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星的进一步优化有不少方案。下面是我的感受影响最大的两个方案,能够有效改善性能和效果。web