【发布时间】:2013-06-02 11:40:39
【问题描述】:
假设我想改变 A* 中的逻辑,试图找到最有用的路径(即增益最高的路径)而不是找到最短的路径(即成本最低的路径)。
在我的例子中,目标并不固定为唯一的结束节点。节点定义为距起点有B 距离的任何节点。
在普通版本(“寻找最短路径”)中,我需要不要高估成本(即,找到小于或等于实际成本的启发式算法)。
在我的修改版本中(“寻找最有用的路径”),边被标记为效用而不是成本,并且我想最大化最终增益,给定通过 最大值的约束B 边。我是否应该高估效用(即,找到大于或等于实际效用的启发式算法)以使 A* 发挥作用?
编辑:更正式,让
f(n) = g(n) + h(n)
是一个节点的效用,由:
-
g(n):从起始节点到n的收获 -
h(n):启发式,即从n到目标(其中目标是与起点的距离为B的节点)所获得的估计值
是否应该高估h(n) 而最大化f(n) 以便确定最佳路径?
注意B 是一个预算,因此它可以完全用完,也就是说,没有必要找到比B 步数短的路径。
【问题讨论】:
-
你能否定所有的实用程序并使用现有的逻辑吗?
-
我想我可以这样做,但是反过来对我来说应该更有价值。我想知道在这种情况下是否有一些测试。
-
大致足以确保您以最大(而不是最小)顺序从边界出列节点。也就是说,在选择下一个要扩展的节点时,选择具有最高值(效用)的那个。您是在使用库还是编写了自己的解决方案?
-
不,我要定制解决方案。