启发式函数和评估函数的区别

启发式函数和评估函数的区别

启发式函数和评估函数的区别artificial-intelligenceevaluationheuristics33我正在阅读关于搜索算法和启发式搜索的内容,但是我对启发式函数和评估函数有些困惑。人们似乎很自由地使用它们来描述看起来相同的事物。我错过了什么吗?

- Sunny6个回答44一个评估函数(或得分函数)检查解决方案是否可行以及它的好坏。通过比较两个解决方案的得分,您可以看出哪个更好(如果它们都是可行的)。例如:如果您从布鲁塞尔经过巴黎、里昂和马赛前往马德里,距离为1000公里(实际路程距离)。

启发式函数也返回类似于得分的东西,但它工作在部分解决方案上,并且不需要准确。对于A*搜索,它需要是可行的(低估)。例如:如果您从布鲁塞尔经过巴黎前往马德里(您尚未了解其余部分),距离为800公里(从布鲁塞尔到巴黎的实际路程加上从巴黎到马德里的直线距离)。

- Geoffrey De Smet回答链接22这个问题可能会让人感到困惑,因为在不同的情境中,“启发式”有不同的含义。因此,让我谈一谈“启发式”的不同含义。然后我们可以回到评估函数。

单智能体启发式搜索(例如A*,IDA*)中,启发式通常用“可接受的”或“一致的”等词来限定。在这种情况下,启发式是到达目标的代价下界。也就是说,它们是一个返回数值的函数的结果。如果启发式是“可接受的”,则返回的值不会高估到达目标的真实距离。如果启发式是“一致的”,则相邻状态之间的启发式最多只变化与边缘成本相同的值。如果目标的启发式为0,则一致的启发式是可接受的,但并非所有可接受的启发式都是一致的。

许多启发式算法的组合已被证明具有许多性质。A*和IDA*将使用一致的启发式函数找到最优路径。当使用一致的启发式函数时,A*在必要的节点扩展方面是最优的,但是如果使用不一致的启发式函数,则A*可能会对N个状态进行2的N次扩展。(请参见this demo以查看此情况的示例。)

博弈玩法

在使用alpha-beta或蒙特卡罗树搜索(MCTS)等算法的游戏程序中,启发式表示对游戏胜利/失败价值的近似。例如,该值可能在-1(失败)和+1(胜利)之间进行缩放,其中介于两者之间的值表示对真实价值的不确定性。在这里,没有保证低估或高估,但是值的更好排序(胜利> 平局> 失败),算法的性能就越好。即使对启发式进行仿射变换,alpha-beta修剪也会返回相同的结果,因为alpha-beta使用值的相对顺序进行搜索。有关MCTS中启发式的示例,请参见this paper。请注意,在此上下文中,启发式仍具有数值价值。

优化

在寻找像SAT(可满足性问题)或CSP(约束满足问题)这样的优化问题时,算法如果能快速找到好的解决方案,则效率要高得多。因此,它们不会以天真的方式搜索,而是按照预期更有效的方式对其进行排序。如果排序良好,则搜索可能能够更早地终止,但这并不保证。在这种情况下,启发式是一种有望更快地找到解决方案(SAT或CSP中变量的满意赋值)的选择排序方法。这里是一个探索这些问题不同排序启发式的示例。

在这种情况下,启发式用于排序,因此它不必基于数字。如果它是基于数字的,那么数字不一定具有启发式在其他类型的搜索中所具有的全局含义。除了SAT和CSP之外,还有许多许多变体的优化问题,在这些问题中使用启发式方式。

评估函数

那么,什么是评估函数?它最常用于游戏的第二种情境,其中启发式和评估函数可互换,但更普遍地指的是对状态进行数字评估。主要点在于评估函数比启发式函数更具体,因为启发式函数在更广泛的情境中有广泛的用途。

- Nathan S.回答链接11简单地说,评估函数会为您提供解决问题所需的值。但它不会告诉您在平局情况下首先扩展哪个分支。因此,在最坏的情况下,您可能需要扩展整个搜索树,这需要很长时间。

再次说明,启发式函数可以与“提示”相比较。当与评估函数一起使用时,它将帮助您决定首先扩展哪个分支以尽快达到解决方案。虽然它们在某些情况下可能效果不佳,但在大多数情况下,它们将通过指导您扩展哪个分支来显着减少运行时间,因为该分支应该更有可能很快给您结果或该分支更有可能具有解决方案。

- hafiz031回答链接11启发式函数是问题特定的,它编码到最近目标节点的距离。而评估函数不是问题特定的,它被算法用来确定下一个要扩展的节点。

- Mehdi Darabi回答链接11一个启发式函数是评估函数的一部分。评估函数通过给定的节点估计最便宜的解决方案的成本,可能考虑节点的更多信息而不仅仅是状态。启发式函数也接受节点作为输入,但其值仅取决于该节点的状态。

以A *搜索为例,评估函数估计通过节点n的最便宜解决方案的成本,写为:

f(n)= g(n)+ h(n)

其中g(n)是到达节点n的成本,h(n)是从n到目标的最便宜路径的估计成本。

在其他情况下,评估函数可能不使用任何额外的信息,除了启发式函数。即f(n)= h(n)。

- PolymorphicDev回答链接00启发式函数仅基于最小成本确定要扩展的下一个节点,它不会查看扩展的边界是否导致目标状态。因此,它有时可能会导致无限循环或更长的路径(因为它可能导致死路)。

另一方面,评估函数是一种更强大的估计函数,它估计实际上导致最小成本的目标状态的下一个要扩展的节点。

启发式函数是评估函数的一部分。

- Rayan Sailani回答链接网页内容由stack overflow 提供, 点击上面的可以查看英文原文,

黄金推荐

2022 年建立在线社区的 15 款最佳论坛软件(免费和高级版)
魅族魅蓝2充电线价格
英国365网址是多少

魅族魅蓝2充电线价格

✨ 07-28 💎 价值: 5658
宁夏行政区划 宁夏最新行政区划分 宁夏有几个市
英国365网址是多少

宁夏行政区划 宁夏最新行政区划分 宁夏有几个市

✨ 07-08 💎 价值: 3682