据我所知,如果启发式是可以接受的,A *不会访问每个节点以找到最佳路径。查看每个算法的可视化,A *一到达目标节点就会停止。那么,如果您没有探索到目标节点的所有可能路径,您如何确定您的路径是最佳路径?过高估计每个成本路径如何确保最佳解决方案?
答案 0 :(得分:0)
考虑Dijkstra算法,这是A *的特殊情况,其中启发式始终为0. Dijkstra按照距离源最短距离的顺序访问节点,因此当它访问目标节点时,您知道&# 39; s是最短的路径,因为所有未访问的节点都是严格的距离,所以通过它们可能不会产生更短的路径。
现在在A *中,您按照它们与源的距离加上启发式的值的顺序访问节点。我们假设给定节点的启发式值不超过从该节点到目标的最短距离。当您第一次访问目标时,让我们在此时调用从源到目标的距离为d_t
。考虑您尚未访问的任何节点v
。您知道从源到该节点的距离d_v
加上启发式h_v
的值大于d_t
(因为您按照该值的顺序访问节点,因此所有未访问的节点节点有更大的值)。另请注意,根据我们上面的假设,从v
到t
的最短距离大于或等于h_v
。由此可见,通过v
从源到目标的距离将长于d_t
,因此没有理由考虑该节点。因此d_t
是从源到目标的最短路径。