为什么A *算法在没有访问所有节点的情况下找到最佳路径?

问题描述 投票:0回答:1

我知道如果启发式是可以接受的,A *不会访问每个节点以找到最佳路径。查看每个算法的可视化,A *一到达目标节点就会停止。那么,如果您没有探索到目标节点的所有可能路径,您如何确定您的路径是最佳路径?过高估计每个成本路径如何确保最佳解决方案?

algorithm path-finding
1个回答
0
投票

考虑Dijkstra算法,这是A *的特殊情况,其中启发式始终为0. Dijkstra按照距离源最短距离的顺序访问节点,因此当它访问目标节点时,您知道它是最短路径,因为所有未访问的节点都是严格的距离,所以通过它们不可能产生更短的路径。

现在在A *中,您按照它们与源的距离加上启发式的值的顺序访问节点。我们假设给定节点的启发式值不超过从该节点到目标的最短距离。当你第一次访问目标时,让我们调用从源到目标的距离,那一刻是d_t。考虑一下你尚未访问过的任何节点v。您知道从源到该节点的距离d_v加上启发式h_v的值大于d_t(因为您按照该值的顺序访问节点,因此所有未访问的节点都具有更大的值)。另请注意,根据我们上面的假设,从vt的最短距离大于或等于h_v。由此得出,通过v从源到目标的距离将长于d_t,因此没有理由考虑该节点。因此,d_t是从源到目标的最短路径。

© www.soinside.com 2019 - 2024. All rights reserved.