人工智能 | A*算法

在这里插入图片描述


在此算法中,如果以 g(n)表示从起点到任意顶点 n 的实际距离,h(n)表示任意顶点n 的估算距离(根据所采用的评估函数的不同而变化),那么 A*算法的估算函数为:
𝑓(𝑛) = 𝑔(𝑛) + ℎ(𝑛)
这个公式遵循以下特性:

  • 如果 g(n) 为 0,即只计算任意顶点 n 到目标的评估函数 h(n),而不计算起点到顶点 n 的距离,则算法转化为使用贪心策略的最良优先搜索速度最快,但可能得不出最优解
  • 如果 h(n)不大于顶点 n 到目标顶点的实际距离,则一定可以求出最优解,而且 h(n)越小,需要计算的节点越多,算法效率越低,常见的评估函数有——欧几里得距离、曼哈顿距离、切比雪夫距离;
  • 如果 h(n)为 0,即只需求出起点到任意顶点 n 的最短路径 g(n),而不计算任何评估函数 h(n),则转化为单源最短路径问题,即 Dijkstra 算法,此时需要计算最多的定点;

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述