双向A*算法浅析

前言:

本文基于我写的A*浅析http://blog.csdn.net/jz_terry/article/details/77414990

建议先看完A*浅析再看本文。


引入:

众所周知,双向BFS是对BFS极大的优化,它从起点和终点开始分别搜索,直到相遇。

那么,既然有双向BFS,为什么不能有双向A*呢?


策略:

同双向BFS一样,双向A*也是从起点和终点开始分别进行A*搜索。

直到两个open list中的点出现重复。

最后的答案是两个G值相加。

为什么是这样呢?请看下面。


证明:

双向A*算法浅析_第1张图片


我们知道,A*每一步选的都是F值最小的点,

同时,我们还知道一个性质:每一步选的点的G值一定是起点到该点的最优路线的值。

如上图,选了X点意味着估价中经过X点的路径是最优的,选了Y点意味着估价中经过Y点的路径是最优的

根据贪心思想,

答案很显然就是X点与Y点的G值和加上X到与X点Y点相交的点的距离加上在Y到与X点Y点相交的点的距离。


总结:

感觉没什么好总结的。

双向A*其实很简单,

就请记住:

双向A*就是从起点和终点开始分别进行A*搜索。

直到两个open list中的点出现重复。

最后的答案是两个G值相加。


最后,感谢大家的支持。

欢迎各路大佬指正本文的问题。


如果你认为本文写得好,欢迎点赞与转发(转发请标明出处与原文链接)

你可能感兴趣的:(搜索优化,双向A*算法)