A*算法在启发式函数总是低估时的最优性证明

我明白为什么A*算法在启发式函数总是低估的情况下总是能找到通往目标状态的最优路径,但我无法为此创建一个正式的证明。

据我所知,随着路径的深入,f(n)的准确性会不断增加,直到达到目标状态时达到100%的准确性。此外,由于估算是低于实际成本的,因此不会忽略任何错误的路径,从而导致最优路径的产生。但是,我应该如何为此创建一个证明呢?


回答:

证明的主要思想是,当A*找到一条路径时,它找到了一条估算值低于任何其他可能路径估算值的路径。由于估算是乐观的,其他路径可以安全地被忽略。

此外,A*只有在满足两个条件时才是最优的:

  1. 启发式函数是可接受的,因为它永远不会高估成本。

  2. 启发式函数是单调的,即,如果h(ni) < h(ni + 1),那么real-cost(ni) < real-cost(ni + 1)


你可以通过假设相反的情况,并扩展其含义来证明最优性是正确的。

假设A*给出的路径在可接受且单调的启发式函数下不是最优的,并思考这在含义上意味着什么(你很快就会发现自己达到了矛盾),因此,你的原始假设被归结为荒谬。

由此你可以得出结论,你的原始假设是错误的,即,在上述条件下,A*是最优的。Q.E.D.

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注