几种算法集合
首先是A*算法,是寻找最短路径算法中应用最为广泛的算法之一
其核心思想是f=g+h
也就是g:当前代价+h:预估代价
当前代价也就是该点到父节点的距离再加上父节点到起点的距离
预估代价用曼哈顿距离来计算,也就是该点到终点的曼哈顿距离。
算法原理:
1.从起点开始,遍历周围八个点,并把周围八个点放入开启列表中,除去已经遍历过的点(当然,第一步不需要除去),除去在地图外的点,除去是障碍物的点。
2.在开启列表中寻找距离最小的点,并把这个点从开启列表中移除,放入关闭列表中
3.从放入关闭列表中的这个点继续向周围遍历,选出在开始列表所有元素中最小的点放入关闭列表,依次继续
4.直至遍历到了终点,并通过终点回溯到起点,即是最短路径。
Dijkstra
核心思想是贪心算法
每次遍历到始点距离最近且未访问过的顶点的邻接节点,用于带权重的图,而不能是带负权重的图。
1.引入两个集合,一个s集合,一个u集合,s集合表示已经求出最短路径的点,u集合表示未求出最短路径的点
2.初始化两个集合,s集合初始化只有起点,u集合初始化为起点到各节点的距离(如果没有连线,就是无穷∞)
3.然后从u集合中选出最短距离并放入s集合中
4.更新u集合,如果新的路径距离比原来路径距离小的话就更新
5.重复上述3.4步骤,直至到达终点,从终点进行回溯
浙公网安备 33010602011771号