【问题标题】:Are heuristic functions that produce negative values inadmissible?产生负值的启发式函数是否不可接受?
【发布时间】:2015-05-06 04:53:53
【问题描述】:

据我了解,启发式算法的可接受性是在给定的评估节点的“实际距离成本”范围内。我不得不为状态空间上的 A* 解决方案搜索设计一些启发式方法,并且使用有时可能返回负值的启发式方法获得了很多积极的效率,因此使某些节点更“接近”目标国家在边境有较高的地位。

但是,我担心这是不可接受的,但在网上找不到足够的信息来验证这一点。 I did find this one paper from the University of Texas 似乎在后来的证明之一中提到“......因为启发式函数是非负的”。谁能证实这一点?我认为这是因为返回一个负值作为您的启发式函数会使您的 g-cost 变为负数(因此会干扰 A* 的“默认”dijkstra 式行为)。

【问题讨论】:

  • 你有一个启发式函数的例子吗?从表面上看,返回负值似乎表明您在过去某个时间点高估了到目标的距离,但我可能忽略了一些东西。
  • 我将我的状态空间表示为单独的项目集。有一组必须以任何顺序满足的目标项目。当我继续生成新状态(在问题的约束范围内)时,我的“最佳”启发式方法会添加目标集中缺失的所有项目的权重,并减去匹配的所有项目的权重,有利于形成紧密的目标状态。如果您查看运行时产生的 H 值,大多数在开始时为正值,但后来变为负值(更多潜在目标)。然而,F 和 G 值永远不会低于零。
  • 那么每条边是否代表增加了一项,其权重就是该边的成本?
  • 是的,没错。
  • 正如 Nikola Benes 指出的那样,反例并不是真正的反例,因为 A* 仍将返回路径 Start -> A -> B -> End。

标签: a-star heuristics state-space


【解决方案1】:

结论:产生负值的启发式函数本身并非不可接受,但有可能破坏 A* 的保证。

有趣的问题。从根本上说,对可接纳性的唯一要求是启发式算法永远不会高估到目标的距离。这很重要,因为在错误的地方高估可能会人为地使最佳路径看起来比另一条路径更糟糕,并防止它被探索。因此,可以提供高估的启发式算法失去了对最优性的任何保证。 低估不会带来相同的成本。如果你低估了朝着某个方向前进的成本,最终边权重加起来会大于朝着不同方向前进的成本,所以你'也会探索那个方向。唯一的问题是效率损失。

如果所有边的成本都为正,启发式负值只能高估。理论上,低估只会比更精确的估计差,因为它提供了严格的关于路径潜在成本的信息较少,并且可能会导致更多节点被扩展。尽管如此,它不会不可接受。

但是,这里有一个例子证明理论上负启发式值有可能破坏 A* 的保证最优性:

在此图中,通过节点 A 和 B 显然更好。这将花费 3,而不是通过节点 C 和 D 的成本 6。但是,负启发式值因为 C 和 D 将导致 A* 在探索节点 A 和 B 之前通过它们到达终点。本质上,启发式函数一直认为这条路径会变得更好,直到为时已晚。在 A* 的大多数实现中,这将返回错误的答案,尽管您可以通过继续探索其他节点直到 f(n) 的最大值大于您找到的路径的成本来纠正这个问题。请注意,此启发式没有任何不可接受或不一致的地方。实际上,我真的很惊讶非负性没有被更多地提及为 A* 启发式的规则。

当然,这表明您不能随意使用返回负值而不担心后果的启发式方法。尽管是负面的,对于给定问题的给定启发式方法完全有可能会非常好地工作。对于您的特定问题,不太可能发生这样的事情(我发现它对您的问题非常有效,并且仍然想更多地思考为什么会这样)。

【讨论】:

  • 真的很棒的答案。我很好奇为什么你的起始节点有 H(n)=1。
  • 谢谢!起始节点的 h(n) 值是完全任意的。我只是选择了一些低的东西,所以它肯定是可接受的和一致的。回想起来,3 可能是一个不那么令人困惑的选择。
  • 其实这个启发式并不一致。一致的启发式应该满足所有 u, v:h(u) 2 + (-2)。即使您纠正了这一点(例如,通过设置 h(start) = 0),它仍然不是反例。您忘记了 end 的启发式值,该值必须至少为 0(由于 h(b) = 1)。 End 将被添加到具有 g(end) = 6, f(end) = 6 的开集;但是,在从开放集中提取之前,它会以 g(end)=3, f(end) = 3 再次添加。
  • 经典错误:第一次看到目标不一样就是达到目标。不在 A* 中,不在 Djikstra 中。所以所有正确的 A* 实现都会给出正确的答案。重要的一点是 H(goal)=0 始终。
  • 问题是关于可接受性的定义,我希望在答案中看到一些参考资料,而不仅仅是一个数字示例,表明它可能导致非最佳结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-07
  • 2013-07-04
  • 1970-01-01
  • 2020-05-31
  • 2013-12-29
  • 2014-04-17
相关资源
最近更新 更多