游戏开发中的人工智能——A*路径寻找算法

转载至 阅读笔记-游戏开发中的人工智能-第7章-A*路径寻找算法

1. 简述

    A*是当今游戏软件开发中十分常用的一种路径寻找算法。A*算法之所以会如此吸引人,是因为它可以保证在任何起点及任何终点间找到最佳的路径。我们可以尽量使用A*算法,除了某些特殊情况的场景。例如,如果起点和终点之间没有障碍物,有明确的视线,那么视线移动算法即快速又有效,就没有必要使用A*算法了。如果CPU的功能不强,A*算法会耗用不少CPU运算能力,尤其是,需要同时为许多游戏角色寻找路径的时候,A*算法可能不是最佳的选择。下面几个部分,逐步的讨论使用A*算法的步骤。

2. 定义搜索域

    无论是连续环境还是砖块环境,如果其中点数量太大,那么A*算法不切实际。但是通过简化搜索区域,A*算法会变得可行。
    ·连续环境的搜索域简化
       在游戏环境中放置节点,来简化搜索域。节点数量越少,路径寻找速度越快。
       我们需要节点间连接关系的数据清单。
     
    ·砖块环境的搜索域简化
       可以使用一个节点代替若干个砖块。搜索路径时,只搜索环境中的几个或一个大砖块,而不是搜索整个环境,如果在一部分范围内都找不到合理的路径,就认为没有合理的路径。
       砖块环境中,每个砖块都是彼此相邻的,因此不需要连接数据清单。
       
 3. A*算法大致思路
    A*算法有点类似于从其实点开始一圈一圈向外炸开的感觉。如下图:
    
      但是注意到,虽然小虫子到周围8八个位置的移动成本都是1,但是这八个位置到人类角色的移动成本是不同的,因此,我们将这两个成本加和,作为总的移动成本。在计算位置到目的地的移动成本时,不考虑障碍物的因素。这样我们每次优先考虑从总的移动成本最小的位置开始炸开,对于炸开过的位置和障碍物都不会考虑。这样即使某些位置的总的移动成本小但是有障碍物的破坏,导致其可能会先被炸开,但是由于障碍物的存在,我们也不会继续炸开了,会选择更优的路径。
      下图就是一个最终的炸开的形式:
      
      最后一步是根据炸开的记录找到最短路径,炸开的位置很多,我们记录所有被炸位置的母位置,等到炸到目标位置时,从目标位置开始依次寻找其母位置,逐步找到起始位置,这些母位置构成的路径就是移动成本最小的路径。
        
4. A*算法伪代码   

把起始节点加进open list
while (open list 不空) {
  当前节点 = open list中成本最低的节点
  if (当前节点 == 目标节点) {
       路径完成
       从目标节点开始寻找其母节点,直到母节点是起始节点位置,得到路径
  }
  else {
      把当前节点移入到close list
      检视当前节点的每个相邻节点
       for (每个相邻节点)
         if (该节点不在open list中 and 该节点不在closed list中 and 该节点不是障碍物) {
              把该节点移进open list
              计算其成本
              记录该节点的母节点为当前节点
          }
   }
}
if (还没有找到路径) {
  无法从起始点到达目的地
}

 

5. 地形成本

    有时候还需要考虑其他因素,最短的路径不一定是最快的,比如不同地形的移动成本是不同的,只有在计算总的移动成本时,考虑到地形因素就可以了。当然对于金钱,燃料或其他类型的资源时,问题就会变得更加复杂一些。

6. 影响力对应

    地形成本往往是可以事先知道的,但是有些因素是无法事先知道的。例如:通过任何敌人的视线的节点,有较高的成本。这种成本无法在设计游戏软件阶段时建立,因为游戏角色的位置是会改变的。影响力对应(influence mapping)是一种改变A*节点成本的方法,根据游戏里发生的情节而定。

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: A*算法是一种用于在图形或网格查找最短路径算法,常用于路径规划和导航系统。它的主要应用领域包括: 1. 计算机图形学:在图形图像处理,A*算法常用于搜索最优路径。 2. 自动导航:A*算法可用于导航系统,规划机器人或车辆的移动路径。 3. 网络规划:A*算法可用于网络规划和路由规划,如规划互联网数据包的最优路径。 4. 游戏开发:A*算法常用于游戏开发,用于寻找游戏人物或NPC(非玩家角色)移动的最优路径。 5. 其他领域:A*算法还可用于航空航天、物流规划等领域。 ### 回答2: A*算法主要应用于路径搜索和图搜索领域。路径搜索是指在图形化界面或虚拟环境找到从一个位置到达另一个位置的最佳路径。这种情况经常在游戏开发、智能导航系统、机器人路径规划等领域出现。通过使用A*算法,我们可以在复杂的地图有效地搜索最短路径,减少时间和资源的消耗。 A*算法的另一个应用是在人工智能的图搜索。图搜索是通过图形表示来解决问题的一种方法,其一个节点可以通过边连接到其他节点。A*算法采用启发式搜索的策略,通过预测选择最有可能导向解决方案的路径,利用估价函数来指导搜索过程,以提高搜索效率。 此外,A*算法也可以用于决策系统的构建。例如,在机器人控制系统,A*算法可以用于规划机器人的行动路径,以实现特定的任务和目标。 总的来说,A*算法路径搜索和图搜索领域的广泛应用使得它成为一种非常重要的算法,在很多领域发挥着关键作用。它通过有效地搜索最佳路径,优化决策,提高效率和性能,为各种问题的解决提供了强大的工具。 ### 回答3: A*算法是一种用于图形和网络搜索的启发式搜索算法。它通过计算节点的启发式函数(估计从该节点到目标节点的代价)来指导搜索,以达到在搜索空间找到最佳路径的目标。 A*算法主要应用在路径规划领域。它可以帮助机器人、无人驾驶车辆、游戏角色等在一个图形或网络找到最佳路径。无论是在实际的物理环境还是在虚拟的游戏环境,A*算法都能提供高效且准确的路径规划。这可以在机器人导航、自动驾驶导航、游戏AI等场景发挥重要作用。 此外,A*算法还在其他领域得到了广泛的应用。例如,在自然语言处理,A*算法可以用于词义消歧和句法分析。在生物信息学,A*算法可以用于DNA序列比对和蛋白质结构预测。在计划和调度,A*算法可以用于任务分配和资源调度。 总之,A*算法的广泛应用领域包括路径规划、自然语言处理、生物信息学以及计划和调度。它的高效性和准确性使其成为许多领域首选的搜索算法

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值