我真的很困惑,为什么要保证A *最优性的一致性。我理解一致性的定义是H(n) - H(n') <= C(n, n')
,但它并没有点击为什么这对我来说是最优的保证。
有人可以用非常简单的术语解释推理的可能性和可能性如何不足的反例吗?
除非你做了一些非常不寻常的事情,否则一个可接受的启发式方法也会保持一致。实际上,理解差异以及为什么需要一致性的问题在于提出示例并非易事。
注意:你说“为什么可以接受是不够的”,所以我认为你已经基本理解了为什么可接受的启发式结果会产生最佳路径,所以我将重点关注可接受和一致的关系。
允许意味着您不要高估从当前节点到目标的距离。这一点非常重要,因此您在探索过程中永远不会忽视重要的节点:如果您的启发式方法告诉您距离太远,您将探索其他更有希望的替代方案,可能会错过最佳路径,而低估目标距离意味着您将探索更多不成功的候选人,直到找到最佳路径。实际上,返回总是距离= 0的启发式将起作用! (但效率不高。)
一致性有点棘手。简而言之,你的等式意味着从A到B的估计应该总是至少与(已知的)成本从A到C然后转到B.否则从A到B的估计似乎被打破了!
一致性意味着可接受性。想象一下A点和目标B,在这种情况下已知A到B的成本。记住从B到B的启发式是零。如果启发式是一致的,从A到B加上从B到B的启发式的成本必须大于从A到B的启发式。
因此,在这种情况下,启发式是可以接受的。您可以通过归纳扩展此示例来证明这一点(see here了解更多详情)。
现在让我们探讨一个不一致的,可接受的例子(可接受性并不意味着一致性!)。考虑这个图(实线的已知距离):
D的估计是8(距离单位)。
想象一下,我们想在去目标之前去B。这应该是从B的最佳路线或从B更长的路径。将航路点添加到最佳路线不应该缩短路线!
对于首先通过B的路线,距离为D到B(1个单位,已知)加上从B到目标的估计5个,总计:6个单位,小于8个。
看到:
以上例子可以接受吗?当然,想象一下所有虚线实际上是20个距离单位。所有启发式方法都低估了,但一致性并不成立。
请注意,一般情况下不需要一致性,但仅在更有效的A *实现(使用已探查节点的闭合列表)中避免重复检查节点。为什么?
想象一下你知道A和B.而且A比B更有前途。现在我们发现C,B的邻居。如果启发式是一致的,我们知道B仍然没有A更有趣。没有一致性,它可能是“B- pass-by-C“现在好于”B-direct-route“,所以我们不再确定A vs B.这是一个非正式的解释,说明不一致会如何搞乱这个过程(并迫使你重新检查节点)。
进一步阅读: