【发布时间】:2017-10-03 22:38:04
【问题描述】:
我真的很困惑,为什么要保证 A* 最优性需要一致性。我理解一致性的定义是H(n) - H(n') <= C(n, n'),但它只是没有点击为什么这可以保证对我来说是最优的。
有人可以用非常简单的术语解释一下可接纳性不够的原因和可能的反例吗?
【问题讨论】:
标签: search artificial-intelligence
我真的很困惑,为什么要保证 A* 最优性需要一致性。我理解一致性的定义是H(n) - H(n') <= C(n, n'),但它只是没有点击为什么这可以保证对我来说是最优的。
有人可以用非常简单的术语解释一下可接纳性不够的原因和可能的反例吗?
【问题讨论】:
标签: search artificial-intelligence
除非您正在做一些非常不寻常的事情,否则可接受的启发式也将是一致的。事实上,理解差异以及为什么需要一致性的问题在于,提出示例并非易事。
注意:你说“为什么可接纳是不够的”,所以我认为你已经基本了解了可接纳启发式为什么会导致最优路径,所以我将重点关注可接纳和一致。
可接受表示您不会高估当前节点到目标的距离。这一点很重要,因此您在探索过程中永远不要忽视重要节点:如果您的启发式告诉您距离太远,您将探索其他更有希望的替代方案,可能会错过最佳路径,而低估与目标的距离意味着您将探索更多不成功的候选人,直到找到最佳路径。实际上,总是返回距离 = 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-passing-by-C”现在比“B-direct-route”更好,所以我们不再确定 A vs B。这是对不一致如何扰乱流程(并迫使您重新检查节点)的非正式解释。
进一步阅读:
【讨论】: