想象一下,我正在执行基于函数f(n)=cg(n)+(3-c)h(n)
的最佳优先搜索,以选择要展开的下一个节点。如果我使用c=0
,我将获得f(n)=3h(n)
。我可以用c=0
说搜索算法的行为与最佳首次搜索或贪婪的最佳首次搜索完全相同吗?
(我对两者之间存在疑问。我的答案是肯定的,因为它只是向前看并且不考虑g(n)而且我的感觉是最好的第一次搜索,因为它过高估计乘以3因此它不贪心但是我不确定我是不对的。)
答案 0 :(得分:2)
您指的是像A *这样的算法,它们根据f-cost执行最佳优先搜索,其中f(n) = g(n) + h(n)
和节点的g-cost是到达该节点的成本,而h-cost是达到目标的估计成本。
Dijkstra的算法使用f(n) = g(n)
。
纯启发式搜索或贪婪的最佳优先搜索使用f(n) = h(n)
。
如果我有以下情况,您的问题就会发生:
f(n) = c*g(n) + (3-c)*h(n)
当c = 0
缩小为:
f(n) = (3)*h(n)
这里的常量3对搜索顺序没有影响,因为所有节点都以相同的方式加权。所以,这最接近贪婪的最佳优先搜索。