A*算法

博客看的:

d[v] = d[u] + w  其中d[v]表示从起点到点v的距离,w为u点到v点的距离

h[u]表示点u到终点的距离 (为曼哈顿距离)

从起点开始每次都选择d[u] + h[u]最小的相邻点为待处理结点,并且更新待处理结点相邻结点的d

并将被更新的相邻结点v的父节点变为u

if(d[v] < d[u] + w) {d[v] = d[u] + w; f[v] = u;}

注意每个点走一次,忽略障碍物,直至走到终点t,则从f[t]开始遍历f即为最优路径

 

算法设计课讲解:

d[u]为起点s沿u的前一个结点这条路径到达u的距离

h[u]为u的最小出边

每次相邻的走d[u] + h[u]最小的边即可(dijkstra是一种退化的A*,走h[u]最小的边)

 

posted @ 2021-02-24 11:30  WTSRUVF  阅读(47)  评论(0编辑  收藏  举报