【发布时间】:2015-10-30 00:33:01
【问题描述】:
如果您有一组可接受的启发式:h1,h2,h2,...,hn
h = max(h1,h2,h2,...,hn) 是如何成为主导它们的可接受启发式的?
较低的h(n)值不是更好吗?
对于 A*,f = g + n,并且 f 最小的元素将从列表中删除。那么不应该采用min 给出主导的启发式方法吗?
【问题讨论】:
标签: search artificial-intelligence a-star heuristics
如果您有一组可接受的启发式:h1,h2,h2,...,hn
h = max(h1,h2,h2,...,hn) 是如何成为主导它们的可接受启发式的?
较低的h(n)值不是更好吗?
对于 A*,f = g + n,并且 f 最小的元素将从列表中删除。那么不应该采用min 给出主导的启发式方法吗?
【问题讨论】:
标签: search artificial-intelligence a-star heuristics
可接受的启发式算法永远不会高估达到目标状态的成本。也就是说,它的估计值将低于实际成本或恰好是实际成本,但永远不会更高。这对于像 A* 搜索这样的贪婪方法来寻找全局最佳解决方案是必需的。
例如,假设您找到了一个成本为 10 的解决方案。最佳解决方案的成本为 8。您没有使用可接受的启发式算法,而实际成本为 8 的解决方案的启发式算法估计为 12(高估了)。由于您已经有一个成本为 10 的解决方案,因此 A* 永远不会评估最佳解决方案,因为它估计更昂贵。
理想情况下,您的启发式应该尽可能准确,即可接受的启发式不应过分低估真实成本。如果是这样,A* 最终仍会找到最佳解决方案,但这样做可能需要更长的时间,因为它会尝试许多根据您的启发式方法看起来不错但结果却很糟糕的解决方案。
这就是您问题的答案所在。您的启发式h1, ..., hn 都是可以接受的,因此他们估计的成本等于或小于真实成本。因此,根据定义,这组估算的最大值是最接近实际成本的估算值(请记住,您永远不会高估)。在理想情况下,这将是确切的成本。
如果您要取最小值,您最终会得到与实际成本最远的估计值——如上所述,A* 仍会找到最佳解决方案,但以一种效率低得多的方式。
【讨论】: