茶艺师学算法打卡23:A*算法

154 阅读2分钟

茶艺师学算法打卡23:A*算法

学习笔记

省流版:

A* 算法是 Dijkstra 的优化版本,它只算出最短路径的次优方案

Dijkstra 最短路径算法只考虑点与点的距离g(边权),而A还要考察该点到终点的曼哈顿距离h,最终以f = g + h为依据判断该点是否出列,最重要的是A计算到终点即停止计算得出结果

详细版:

  1. Dijkstra 最短路径算法:

    • Dijkstra 算法是一种用于计算图中节点之间最短路径的算法。
    • Dijkstra 算法基于节点之间的边权重(距离)来计算最短路径。
    • Dijkstra 算法使用贪心策略,每次选择距离起始节点最近的节点进行扩展。
    • Dijkstra 算法适用于没有负权边的图。
  2. A*算法:

    • A*算法是一种启发式搜索算法,用于计算图中节点之间的最短路径。
    • A*算法结合了 Dijkstra 算法的最短路径搜索和启发式搜索的思想。
    • A*算法除了考虑节点之间的边权重(距离)外,还考虑了节点到目标节点的预估距离(通常使用曼哈顿距离或欧几里德距离)。
    • A*算法使用启发式函数(heuristic function)来评估节点的优先级,计算公式为 f = g + h,其中 g 表示起始节点到当前节点的实际代价,h 表示当前节点到目标节点的估计代价。
    • A*算法在搜索过程中根据 f 值的大小来选择下一个扩展的节点,以期望更快地找到最短路径。
  3. 额外:

    • A*算法相比于 Dijkstra 算法,在搜索过程中引入了启发式函数,可以更快地找到最短路径,尤其在图中存在目标节点时效果更为明显。
    • A*算法在计算到达目标节点时可以提前终止搜索,从而减少不必要的计算量,提高效率。