前言:
本文基于我写的A*浅析http://blog.****.net/jz_terry/article/details/77414990
建议先看完A*浅析再看本文。
引入:
众所周知,双向BFS是对BFS极大的优化,它从起点和终点开始分别搜索,直到相遇。
那么,既然有双向BFS,为什么不能有双向A*呢?
策略:
同双向BFS一样,双向A*也是从起点和终点开始分别进行A*搜索。
直到两个open list中的点出现重复。
最后的答案是两个G值相加。
为什么是这样呢?请看下面。
证明:
我们知道,A*每一步选的都是F值最小的点,
同时,我们还知道一个性质:每一步选的点的G值一定是起点到该点的最优路线的值。
如上图,选了X点意味着估价中经过X点的路径是最优的,选了Y点意味着估价中经过Y点的路径是最优的
根据贪心思想,
答案很显然就是X点与Y点的G值和加上X到与X点Y点相交的点的距离加上在Y到与X点Y点相交的点的距离。
总结:
感觉没什么好总结的。
双向A*其实很简单,
就请记住:
双向A*就是从起点和终点开始分别进行A*搜索。
直到两个open list中的点出现重复。
最后的答案是两个G值相加。
最后,感谢大家的支持。
欢迎各路大佬指正本文的问题。
如果你认为本文写得好,欢迎点赞与转发(转发请标明出处与原文链接)