A-star 中成本函数的系数
Coefficients in cost function in A-star
我想详细说明这个问题:
Why does the A-star algorithm need g(n)?
Dijkstra 算法使用成本函数 f(n) = g(n)
而 A* 使用成本函数 f(n) = g(n) + h(n),其中 g(n) 是成本从起始节点到节点 n 的路径,而 h(n) 是一个启发式函数,用于估计从节点 n 达到目标。
从这道题可以看出A*在代价函数中需要它的g(n)函数。
然而,我的问题如下。可以使用成本函数吗:
f(n) = αg(n) + (1-α)h(n)
对于某些 alpha 0<α<1 ?
我问是因为在某些情况下,我观察到(通过系数)将估计成本优先于已经遍历的成本可能要快得多。但是我不确定这是否仍然会产生最佳轨迹?
编辑:允许将启发式 ℎ() 乘以某个 alpha 0<<1,因为此操作仍然低估了 ℎ() 是否已经完成(这是获得最佳路径所必需的)。我比较关心()的乘法。
f的全局比例因子,假设是正比例,无所谓,因为f只用在a相对意义。按正比例缩放的数字保持相同顺序。
因此,f(n) = αg(n) + (1-α)h(n)可改写为f'(n) = g(n) + ((1-α)/α)h(n),不相等但等价。因此,尽管您对缩放 g 感兴趣,但实际上这等同于缩放 h,无论如何,在考虑到全局比例之后。
效果是将启发式缩放一定数量,只要 (1-α)/α ≤ 1(因此:α ≥ 0.5)就可以,否则会导致与往常一样的麻烦不允许的启发式。
我想详细说明这个问题:
Why does the A-star algorithm need g(n)?
Dijkstra 算法使用成本函数 f(n) = g(n) 而 A* 使用成本函数 f(n) = g(n) + h(n),其中 g(n) 是成本从起始节点到节点 n 的路径,而 h(n) 是一个启发式函数,用于估计从节点 n 达到目标。
从这道题可以看出A*在代价函数中需要它的g(n)函数。 然而,我的问题如下。可以使用成本函数吗:
f(n) = αg(n) + (1-α)h(n)
对于某些 alpha 0<α<1 ?
我问是因为在某些情况下,我观察到(通过系数)将估计成本优先于已经遍历的成本可能要快得多。但是我不确定这是否仍然会产生最佳轨迹?
编辑:允许将启发式 ℎ() 乘以某个 alpha 0<<1,因为此操作仍然低估了 ℎ() 是否已经完成(这是获得最佳路径所必需的)。我比较关心()的乘法。
f的全局比例因子,假设是正比例,无所谓,因为f只用在a相对意义。按正比例缩放的数字保持相同顺序。
因此,f(n) = αg(n) + (1-α)h(n)可改写为f'(n) = g(n) + ((1-α)/α)h(n),不相等但等价。因此,尽管您对缩放 g 感兴趣,但实际上这等同于缩放 h,无论如何,在考虑到全局比例之后。
效果是将启发式缩放一定数量,只要 (1-α)/α ≤ 1(因此:α ≥ 0.5)就可以,否则会导致与往常一样的麻烦不允许的启发式。