A∗算法
算法
这个算法其实就是 dijkstra
的变种,是对于一般的 bfs
的一种优化手段。
首先需要设置一个东西叫做估价函数。普通的 bfs
的估价函数一般取
反证法,假设不成立,即当前出队的终点距离不是最优解,即
而且 A*
算法只能保证终点是最优的,但不能保证中途其他点是最优的。(入队、出队都不一定是最优,且最多保证路径上的点)
如图所示,如果某一个点的估价距离等于它的真实距离都为
可以加一个优化:当一个点的最短距离更新时将其塞入堆中。
估价函数必须非 负。
bfs |
dijkstra |
||
---|---|---|---|
判重 | 入队判重 | 出队判重 | 不能判重 |
本文作者:wscqwq
本文链接:https://www.cnblogs.com/wscqwq/p/17389556.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步