Table of Contents
算法A*和Dijkstra在路径调查和图轨学中是根本的。 它们被广泛用于导航系统、机器人和网络路由。 了解它们的数学基础有助于优化其性能和适用性。
图 代表情况
两种算法都运行在图上,由节点(verties)和边缘组成. 边缘可能有代表成本,距离,或时间的权重,可以定向或不定向,权重通常非负式.
成本函数和高压
这些算法的核心是计算到达每个节点的成本。 Dijkstra的算法使用从起始节点算出的累计成本,而A* 则增加了目标剩余成本的热度估计。 热度必须可以接受,这意味着它从未高估过真实成本。
数学表达
让 G = (V, E) 成为带有顶点 V 和边缘 E 的图. 每个边缘 (u, v) 都有重w(u, v) ,目标是找到从起始节点 s 到目标节点 t 的最短路径.
Dijkstra的算法更新了每个顶点 v 的距离d(v),初始化为 d(s) = 0, d(v) = = ⁇ v ⁇ s. 它反复选择顶点,以最小的 d(v) 来选择,然后放松其邻边.
A*通过加入一个h(v)对从v(v)到t(project)的成本进行估算来修改这一点. 优先功能变为f(v)=d(v)+h(v). 算法基于最低f(v)扩展节点.
算法效率
效率取决于所使用的数据结构。 Dijkstra 的算法具有 O( + + + + V+ + + + + V+ ) 的时间复杂性, 优先排队。 如果高压设计良好, A* 速度会更快, 从而减少节点的扩展数 。
- 带有非负方位的图表
- A类可接受休眠药*
- 选择节点的优先排队
- 放宽边缘以更新成本