很久以前就知道了A*算法,但是从未认真读过相关的文章,也没有看过代码,只是脑子里有个模糊的概念。这次决定从头开始,研究一下这个被人推崇备至的简单方法,作为学习人工智能的开始。 这篇文章非常知名,国内应该有不少人翻译过它,我没有查找,觉得翻译本身也是对自身英文水平的锻炼。经过努力,终于完成了文档,也明白的A*算法的原理。毫无疑问,作者用形象的描述,简洁诙谐的语言由浅入深的讲述了这一神奇的算法,相信每个读过的人都会对此有所认识。 《游戏算法整理——A*寻路初探》 A*算法是游戏开发中常用的一种路径寻找算法,尤其在人工智能和游戏寻路系统中扮演着重要角色。它以其高效性和准确性著称,能帮助游戏角色或玩家在复杂环境中找到从起点到终点的最短路径。 A*算法的核心思想在于通过评估每个节点的F值来决定搜索路径。F值由两部分组成,G值和H值。G值代表从起点A到当前节点的实际代价,而H值则是从当前节点到终点B的预估代价,通常使用启发式函数进行估算。启发式函数是一种预测性策略,它并不保证精确,但可以显著减少搜索的范围,提高效率。 在实际应用中,我们首先将起点A加入开启列表,并将其所有可达的邻居节点加入开启列表,同时记录起点A为这些邻居节点的父节点。然后,每次从开启列表中选取F值最小的节点,将其从开启列表移到关闭列表,同时更新其邻居节点的G值和F值。邻居节点的G值由其父节点的G值加上从父节点到邻居节点的代价,F值则等于G值加上H值。 对于代价计算,通常采用曼哈顿距离或欧几里得距离的近似值。例如,在一个网格环境中,水平或垂直移动的成本设为10,对角线移动的成本设为14,这是因为对角线移动的距离是水平或垂直移动的√2倍。这样设置可以保持代价的比例关系,避免了计算平方根的复杂性。 在搜索过程中,A*算法会不断重复这一过程,直到找到终点B并将其添加到关闭列表,或者开启列表为空,表明不存在路径。当找到终点后,可以通过回溯每个节点的父节点来构建最优路径,从终点B逆向追溯到起点A。 A*算法的高效性在于其启发式特性,能够在大规模环境中快速找到合适的路径。不过,选择合适的启发式函数至关重要,过于乐观的估计可能导致过多无用的搜索,而过于保守的估计则可能增加搜索时间。 A*算法是游戏开发中寻找路径的基石,通过合理地评估和选择节点,能够在复杂环境中找到最佳路径。掌握A*算法不仅能够提升游戏体验,也是深化对人工智能和算法理解的关键一步。
剩余22页未读,继续阅读
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 光储并网VSG系统Matlab simulink仿真模型,附参考文献 系统前级直流部分包括光伏阵列、变器、储能系统和双向dcdc变器,后级交流子系统包括逆变器LC滤波器,交流负载 光储并网VSG系
- file_241223_024438_84523.pdf
- 质子交膜燃料电池PEMFC Matlab simulink滑模控制模型,过氧比控制,温度控制,阴,阳极气压控制
- IMG20241223015444.jpg
- 模块化多电平变器(MMC),本模型为三相MMC整流器 控制策略:双闭环控制、桥臂电压均衡控制、模块电压均衡控制、环流抑制控制策略、载波移相调制,可供参考学习使用,默认发2020b版本及以上
- Delphi 12 控件之FlashAV FFMPEG VCL Player For Delphi v7.0 for D10-D11 Full Source.7z
- Delphi 12 控件之DevExpressVCLProducts-24.2.3.exe.zip
- Mysql配置文件优化内容 my.cnf
- 中国地级市CO2排放数据(2000-2023年).zip
- smart200光栅报警程序