A*算法(A-star Algorithm)搜索最短路径(含C/C++语言实现代码)

目录

  • 基本介绍
  • 基本原理
  • 有关定义和变量介绍
  • 具体搜索过程
  • 结束条件
  • 与Dijkstra算法的比较
  • 实现代码
    • 运行结果
  • 参考文章

基本介绍

  在我们的日常生活中由许多方面都会涉及到 “最短路径” 的搜索问题,比如ROS机器人中根据给定地图进行全局路径规划,或者游戏中NPC的移动计算,线上游戏的的BOT计算等。A*算法作为一种较为高效的算法经常被应用在以上环境中。
A*算法(A-star Algorithm)搜索最短路径(含C/C++语言实现代码)_第1张图片

基本原理

  A*算法实现的基本原理是将地图虚拟化并划分成小方块(单元格)以便使用二维数组进行保存,然后搜索当前点周围的点,并从中选择一个新的点作为当前点继续搜索,直至搜索至终点。

有关定义和变量的介绍

  • 实际代价G:表示从起点出发移动到地图上当前单元格的移动耗费。例如,我们可以采用从起点开始,经过多少次上下左右移动才移动到指定点作为实际代价G。
  • 预估代价H:表示从当前单元格移动到终点的预估耗费。在实际编程中,我们通常采用曼哈顿距离(Manhattan Distance)作为预估代价H,当然也可以采用欧几里得距

你可能感兴趣的:(算法,算法,数据结构,c++,图论)