Search 在加权a*搜索中使用全g(n)与全h(n)的优缺点是什么?
根据我的理解,基于成本进行完全搜索可以得到最优的解决方案,但比完全启发式搜索需要更长的时间,反之亦然?这是正确的吗?还有什么重要的事情我应该知道吗 编辑:好的,我想我现在明白多了。使用完全基于成本的搜索可能会导致您选择更长的路径。但仍然不确定是否有充分的启发性 编辑2:仅使用启发式将使您到达节点,但可能使用了非常长的路径?案例1(完全g(n),也称盲搜索): 如果使用求值函数Search 在加权a*搜索中使用全g(n)与全h(n)的优缺点是什么?,search,dijkstra,a-star,heuristics,Search,Dijkstra,A Star,Heuristics,根据我的理解,基于成本进行完全搜索可以得到最优的解决方案,但比完全启发式搜索需要更长的时间,反之亦然?这是正确的吗?还有什么重要的事情我应该知道吗 编辑:好的,我想我现在明白多了。使用完全基于成本的搜索可能会导致您选择更长的路径。但仍然不确定是否有充分的启发性 编辑2:仅使用启发式将使您到达节点,但可能使用了非常长的路径?案例1(完全g(n),也称盲搜索): 如果使用求值函数f(n)仅基于g(n)选择下一条要探索的路径,则基本上使用的是Dijkstra算法。换句话说,如果f(n)=g(n)+h(
f(n)
仅基于g(n)
选择下一条要探索的路径,则基本上使用的是Dijkstra算法。换句话说,如果f(n)=g(n)+h(n)
和h(n)=0
,f(n)=g(n)
并且您在每次迭代中都以最小成本探索路径。这保证了找到最佳路径(图中只有正成本),但您可能会探索次优路径。
例如,在下图中,我们希望找到从s
到t
的路径:
Weighted A* = (1 - weight) * g(n) + weight * h(n)
该表给出了每个节点的启发式评估(让我假设我们有一个完美的启发式,即启发式值始终对应到目标的最短路径)。因此,在第一次迭代中,s被展开,并且n1
和n2
被添加到打开列表中。
当执行盲搜索(或完全g(n)
)时,则:
f(n1)=g(n1)=2
f(n2)=g(n2)=1
n2
,因为它在开放列表中具有最小的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*的美丽理论属性 太好了,谢谢!
n1 node | h(node)
/ \ s | 3
2 / \ 1 n1 | 1
/ \ n2 | 4
s t
\ /
1 \ / 4
\ /
n2