Java — A*算法(二)

接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) (原来原来……(^_^)(^_^))

================================= 完了(^_^) ================================

转载于:https://my.oschina.net/quantou/blog/738458

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值