接Java — A*算法(一)
下面好好说说运算公式F=G+H咯。
假设现在在由4×4图块来表示,如果不考虑斜线移动,那么相邻的图块都可以选择了,现在我们知道两个数据G和H来计算,其中G是从起点移动到当前图块的块数,H是从当前移动到终点图块的块数。那么G+H就是到终点总移动块数了。可以表示为F=G+H。
有一个叫“曼哈顿距离”的简单方法,在这个方法中只需要计算介于起始和终点之间的图块总数来计算它们之间的距离,也可以理解为两点间的距离了。
上图表示的是两种不同路径来计算G的方法,我们移动一个土块到前一图块的G值来获取到目前图块的G值。下面看看怎样获取H的值。
上图中可以看出从不同起始图块到达终点的H值。
现在知道G和H了,那么我们计算A到B点的最短距离是不是一目了然了呢?
最终得到的是F=G+H。
当然,怎么计算呢?计算方法好多,这里用的一个就是上面所说的格子法,也就是曼哈顿距离方法;还有个欧式距离(好高端的样子,囧~~)了 —— 两点间的直线距离sqrt((x1-x2)2 + (y1-y2)2) (原来原来……(^_^)(^_^))
================================= 完了(^_^) ================================