A*算法可行解与最优解的偏离处

A*寻路初探


计算涉及的变量

F = G + H

G的计算依赖于来自每个格子与相邻8个方向格子的距离D,文中不同格子的D1-8相同。

如果S到V的最短路径G是准确的,那么最终获得的最短路径就是准确的,因为终点的G就是所求的最短路径。

任何情况第一和第二个加入关闭列表的G都是准确的,即其V到S的最短路径是最优解。第三个开始才有可能G为可行解。


关闭与开放列表

点V加入关闭列表:起点S到点V的最短路径(既定规则下的可行解中最短的)已确定。

点V加入开放列表:起点S到点V的距离计算过了,但最短路径未确定。


A*、最小消耗、广搜 的区别

A*采用容器堆,采用启发式,把估值出来经过此点起点到终点(H)可能最短的弹出来,遍历其周围的格子,而后加入堆。

最小消耗采用容器堆,把到起点最短(G)的格子弹出来,遍历其周围的格子而后加入堆。最小消耗是A*的特化,H估为0,G最短就是F最短。

广搜采用优先队列,把队列头弹出来,遍历其周围的格子而后加入队列。广搜是最小消耗的特化,格子周围8方向估值距离都相同时,用优先队列代替堆,因为队列头就是到起点最短的。

加入容器就是加入了开发列表,弹出来的就是加入关闭列表的。

广搜也不是最优解,找到路径中,只是终点周围8个格子中到起点最短的V,而不是终点E到起点S最短的。因为V到E的距离可能很长。

A*偏离处

1.因为H是估计的,不同的估计方法所得到的路径都是不一样的。所以导致A*算法找到的最短路径肯定只是可行解而不是最优解。


2.假定每个格子给出的H是准确的,是否就是最优解呢?

还不一定是,假如不同格子的D1-8不同,G还是有问题的。

假入目前在寻找上图的第3个关闭点V。

A*是确定了S右下的点V,GV=14。如果左侧的格子VL到V的距离为1而不是10,则通过VL到V的距离为GV=11。比A*算法得到的要短。


3.假如H准确,且不同格子的D1-8相同,也就是文中设定的情况。那么通过A*算法每次加入关闭列表的V,是否就是准确的最短G?

这种情况我尚未找到证明其G是否最短的方法,如果不是最短应该需要通过反证法证明。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值