advantages/disadvantages 在加权 A* 搜索中使用完整的 g(n) 与完整的 h(n) 有什么区别?
What are the advantages/disadvantages to using full g(n) vs. full h(n) in a weighted A* search?
Weighted A* = (1 - weight) * g(n) + weight * h(n)
据我了解,基于成本进行全面搜索可为您提供最佳解决方案,但比全面启发式搜索花费的时间更长,反之亦然?这个对吗?还有其他重要的事情我应该知道吗?
编辑:好的,我想我现在了解得更多了。使用完全基于成本的搜索可以引导您找到更长的路径。但仍然不确定完整的启发式。
编辑 2:仅使用启发式会让您到达一个节点,但可能使用了很长的路径?
案例一(全g(n),a.k.a.盲搜):
如果您使用评估函数f(n)
仅根据g(n)
来选择要探索的下一条路径,那么您基本上是在使用Dijkstra 算法。换句话说,如果 f(n) = g(n) + h(n)
和 h(n) = 0
,f(n) = g(n)
并且您在每次迭代中都在探索成本最低的路径。这保证找到最佳路径(图中只有正成本),但您可能会探索次优路径。
例如,在下图中我们要找到从 s
到 t
的路径:
n1 node | h(node)
/ \ s | 3
2 / \ 1 n1 | 1
/ \ n2 | 4
s t
\ /
1 \ / 4
\ /
n2
和 table 给我们每个节点的启发式评估(让我假设我们有一个完美的启发式,即启发式值总是对应于到目标的最短路径)。因此,在第一次迭代中,s 被扩展并且 n1
和 n2
添加到 OPEN 列表。
当执行盲搜索(或全g(n)
)时,则:
f(n1) = g(n1) = 2
.
f(n2) = g(n2) = 1
.
和节点 n2
将被探索,因为它在 OPEN 列表中具有最小 g 值。
但是,当我们使用 A* 和启发式值时:
f(n1) = g(n1) + h(n1) = 2 + 1 = 3
.
f(n2) = g(n2) + h(n2) = 1 + 4 = 5
.
n1
将被探索,然后 t
,导致最优解,而不是通过 n2
一路探索次优路径。
因此,完整的 g(n)
表示 Dijkstra vs A*。如果您的启发式是一个很好的估计(让我们像这样简化),A* 将始终是可取的。
案例 2(全 h(n)):
我们这里有不同的情况,因为我们没有使用已经找到的路径的成本,我们只相信我们函数的启发式评估。根据启发式的质量,您最终可以探索图中的所有节点或仅探索最佳路径,但您已经失去了 A* 的美丽理论特性。
Weighted A* = (1 - weight) * g(n) + weight * h(n)
据我了解,基于成本进行全面搜索可为您提供最佳解决方案,但比全面启发式搜索花费的时间更长,反之亦然?这个对吗?还有其他重要的事情我应该知道吗?
编辑:好的,我想我现在了解得更多了。使用完全基于成本的搜索可以引导您找到更长的路径。但仍然不确定完整的启发式。
编辑 2:仅使用启发式会让您到达一个节点,但可能使用了很长的路径?
案例一(全g(n),a.k.a.盲搜):
如果您使用评估函数f(n)
仅根据g(n)
来选择要探索的下一条路径,那么您基本上是在使用Dijkstra 算法。换句话说,如果 f(n) = g(n) + h(n)
和 h(n) = 0
,f(n) = g(n)
并且您在每次迭代中都在探索成本最低的路径。这保证找到最佳路径(图中只有正成本),但您可能会探索次优路径。
例如,在下图中我们要找到从 s
到 t
的路径:
n1 node | h(node)
/ \ s | 3
2 / \ 1 n1 | 1
/ \ n2 | 4
s t
\ /
1 \ / 4
\ /
n2
和 table 给我们每个节点的启发式评估(让我假设我们有一个完美的启发式,即启发式值总是对应于到目标的最短路径)。因此,在第一次迭代中,s 被扩展并且 n1
和 n2
添加到 OPEN 列表。
当执行盲搜索(或全g(n)
)时,则:
f(n1) = g(n1) = 2
.f(n2) = g(n2) = 1
.
和节点 n2
将被探索,因为它在 OPEN 列表中具有最小 g 值。
但是,当我们使用 A* 和启发式值时:
f(n1) = g(n1) + h(n1) = 2 + 1 = 3
.f(n2) = g(n2) + h(n2) = 1 + 4 = 5
.
n1
将被探索,然后 t
,导致最优解,而不是通过 n2
一路探索次优路径。
因此,完整的 g(n)
表示 Dijkstra vs A*。如果您的启发式是一个很好的估计(让我们像这样简化),A* 将始终是可取的。
案例 2(全 h(n)):
我们这里有不同的情况,因为我们没有使用已经找到的路径的成本,我们只相信我们函数的启发式评估。根据启发式的质量,您最终可以探索图中的所有节点或仅探索最佳路径,但您已经失去了 A* 的美丽理论特性。