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]最小的边)

自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。
原文地址:https://www.cnblogs.com/WTSRUVF/p/14440373.html