美文网首页
Astar求取最短路径

Astar求取最短路径

作者: 碧影江白 | 来源:发表于2018-10-15 20:18 被阅读31次

Astar主要用于求取网格形的地图中,两个点之间的最短距离,地图中会有各种形状的障碍物干扰。
在求两个点的最短路径时,从起始点向终点进行探索时,选择的点的权重为该点到起始点的距离加上该点到终点的距离(为了避免为求得到某一点的最近距离而在障碍物旁边停留太多,如图一)

图一

从起始点开始,每次都在该点旁边找一个权重最小的点,作为选中的点,再在选中的点旁边再找一个权重最小的,进行选中。

具体的步骤如下:

1.首先把起始位置点加入到一个称为“open List”的列表,在寻路的过程中,目前,我们可以认为open List这个列表会存放许多待测试的点,这些点是通往目标点的关键,以后会逐渐往里面添加更多的测试点,同时,为了效率考虑,通常这个列表是个已经排序的列表。
  2.如果open List列表不为空,则重复以下工作:
  (1)找出open List中通往目标点代价最小的点作为当前点;
  (2)把当前点放入一个称为close List的列表;
  (3)对当前点周围的4个点每个进行处理(这里是限制了斜向的移动),如果该点是可以通过并且该点不在close List列表中,则处理如下;
  (4)如果该点正好是目标点,则把当前点作为该点的父节点,并退出循环,设置已经找到路径标记;
  (5)如果该点也不在open List中,则计算该节点到目标节点的代价,把当前点作为该点的父节点,并把该节点添加到open List中;
  (6)如果该点已经在open List中了,则比较该点和当前点通往目标点的代价,如果当前点的代价更小,则把当前点作为该点的父节点,同时,重新计算该点通往目标点的代价,并把open List重新排序;
  3.完成以上循环后,如果已经找到路径,则从目标点开始,依次查找每个节点的父节点,直到找到开始点,这样就形成了一条路径。

另:两点之间的距离为距离采用曼哈顿距离,它计算从当前格子到目的格子之间水平和垂直的方格的数量总和,例如在平面上,坐标(x1,y1)的点和坐标(x2,y2)的点的曼哈顿距离为:
|x1-x2|+|y1-y2|

相关文章

  • Astar求取最短路径

    Astar主要用于求取网格形的地图中,两个点之间的最短距离,地图中会有各种形状的障碍物干扰。在求两个点的最短路径时...

  • Shortest-Path Algorithms

    Bellman-Ford Problem: 求取单源最短路径,可判断有无负环 Complexity: O(VE) ...

  • 图的应用-最短路径求解

    图的最短路径   图的最短路径是一个起点到一个终点之间最短的路径。  用于解决最短路径问题的算法被称做“最短路径算...

  • Dijstra算法详解

    常用的机器人导航算法中求取最短路径的算法除了A算法以外,Dijstra(迪杰克斯拉)算法也是广泛使用的一种算法。通...

  • Yen的K条最短路径算法(KSP)

    一、问题介绍 1.求K条最短路径的必要性 最短路径问题分为: 单源最短路径 所有顶点对间的最短路径 共同的缺陷:这...

  • 最短路径算法

    最短路径算法可以分为两类:单源最短路径问题:从某固定源点出发,求其到所有其他顶点的最短路径。多源最短路径问题:求任...

  • 最短路径 之 Dijkstra 算法

    • 最短路径 之 Floyd 算法• 最短路径 之 Bellman 算法 Dijkstra算法是用于求解单源最短路...

  • 数据结构第二季 Day11 图 Kruskal算法、Dijkst

    一、最短路径基础知识 1、最短路径的定义是什么? 最短路径(Shortest Path):两顶点之间权值之和最小的...

  • 图 求解最短路径 时间复杂度 空间复杂度 单源最短路径 多源最短路径 条数最短(点权为1) 边权之和最小或最大(花...

  • 最短路径问题

    无权图单源最短路径 有权图单源最短路径 有权图单源最短路径和无权图最短路径不一样,不能单从节点数来看,比如上图中,...

网友评论

      本文标题:Astar求取最短路径

      本文链接:https://www.haomeiwen.com/subject/jbjqzftx.html