Search 在加权a*搜索中使用全g(n)与全h(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(

根据我的理解,基于成本进行完全搜索可以得到最优的解决方案,但比完全启发式搜索需要更长的时间,反之亦然?这是正确的吗?还有什么重要的事情我应该知道吗

编辑:好的,我想我现在明白多了。使用完全基于成本的搜索可能会导致您选择更长的路径。但仍然不确定是否有充分的启发性

编辑2:仅使用启发式将使您到达节点,但可能使用了非常长的路径?

案例1(完全g(n),也称盲搜索):

如果使用求值函数
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