A*
本页面将简要介绍 A*算法。
定义
A*搜索算法(英文:A*search algorithm,A*读作 A-star),简称 A*算法,是一种在图形平面上,对于有多个节点的路径求出最低通过成本的算法。它属于图遍历(英文:Graph traversal)和最佳优先搜索算法(英文:Best-first search),亦是 BFS 的改进。
过程
定义起点
A*算法每次从优先队列中取出一个
如果
上述条件下,如果
当
例题
题目大意:在
123
804
765
容易发现
按顺序求一个有向图上从结点
很容易发现,这个问题很容易转化成用 A*算法解决问题的标准程式。
初始状态为处于结点
就这样,我们在预处理的时候反向建图,计算出结点
由于设计的距离函数和估价函数,每个状态需要存储两个参数,当前结点
我们可以在此基础上加一点小优化:由于只需要求出第
参考资料与注释
Footnotes
-
此处的 h 意为 heuristic。详见 启发式搜索 - 维基百科 和 A*search algorithm - Wikipedia 的 Bounded relaxation 一节。 ↩
贡献者:@Yufan@WenzelTian@ree-chee@interestingLSY@kenlig@mgt@Leo@Xeonacid@夜轮_NachtgeistW@Shuhao@ksyx@Henry-ZHR@ouuan@LKM@Haoshen@hsfzLZH1@WanZ@心旷神怡@Ir1d
本页面最近更新:2/3/2023, 12:00:00 AM,更新历史
发现错误?想一起完善? 在 GitHub 上编辑此页!
本页面的全部内容在 CC BY-SA 4.0 和 SATA 协议之条款下提供,附加条款亦可能应用