Hill Climbing Search和Best First Search有什么区别?

时间:2011-05-27 01:31:36

标签: algorithm search

我正在尝试学习一些搜索概念,但在此过程中遇到了障碍。任何人都可以向我解释爬山搜索和最佳搜索之间的区别是什么?对我来说,它们看起来都像是用最接近目标的启发式值扩展节点。如果有人能解释我的不同之处,我将不胜感激。谢谢!

4 个答案:

答案 0 :(得分:11)

您可以将搜索算法视为具有要搜索的剩余节点的队列。 This answer demonstrates this principle

在深度优先搜索中,将当前节点的子节点添加到队列的前端(堆栈)。在广度优先搜索中,将当前节点的子节点添加到队列的后面。想一想这会如何导致这些算法的正确行为。

现在,在爬山搜索中,您将排序[1]当前节点的子节点,然后再将它们添加到队列中。在最佳优先搜索中,您可以按任何旧顺序将当前节点的子节点添加到队列中,然后排序[1]整个队列。如果您考虑可能对搜索节点的顺序产生的影响,您应该了解实际差异。

我发现这个概念过于笼统,无法从纯粹抽象的术语中理解,但如果你用铅笔练习几个例子就会变得简单。

[1]:根据解决方案节点的某些特定问题评估进行排序,例如路径搜索搜索中的“距离目的地的距离”。

答案 1 :(得分:4)

很晚了,但是这里有。

在BFS中,它是关于找到目标。所以它是关于选择最好的节点(我们希望将我们带到目标的节点)。我们一直在努力实现目标。

但是在爬山时,它是关于最大化目标功能。我们选择提供最高上升的节点。 与BFS不同,父节点的'价值'也被考虑在内。如果我们不能走高,我们就放弃了。在这种情况下,我们甚至可能无法达到目标。我们可能处于局部最大值。

答案 2 :(得分:2)

让我Wiki that for you

  

在简单的爬山中,第一个   选择更近的节点,而在   最陡峭的攀登山全部攀登   接班人和比较者   选择最接近解决方案。

...

  

最陡峭的上升   爬坡类似于最好的第一   搜索,尝试所有可能的   相反,当前路径的扩展   只有一个。

答案 3 :(得分:0)

差异在于理解在搜索目标状态更关注

提出问题我们的目标是什么......      最终目标状态?      或达到目标状态的最佳途径

  

最佳优先搜索是一种系统搜索算法,通过在找出问题的基础上迭代地向前移动来实现系统性   每个当前节点的相邻节点的最佳启发式值

     
    

这里评估函数(启发式函数)计算     实现目标状态的最佳途径。所以在这里我们可以看到Best First搜索关注到达目标状态的最佳PATH。

  

然而,有很多问题,其中" 目标之路" 不是关注,唯一关心的是以任何可能的方式或路径实现最终状态。 (例如: 8-queens问题)。

因此,使用本地搜索算法

  

本地搜索算法使用单个当前节点运行,而通常仅移动到该节点的邻居

     
    

Hill Climbing算法是本地搜索算法。     所以在这里我们需要了解到达目标状态的方法,而不是考虑爬山时达到的最佳路径。

         

(如 AI-A Modern Approach中所述,SR& PN

         

基本上,要了解本地搜索,我们需要考虑状态空间格局

         

格局同时具有

         
      

(i)位置(由定义)和

             

(ii)海拔(由启发函数或目标函数的值定义

             
        

我们需要了解两种类型的高程

                 

(i)如果高程对应 目标函数,则目标是找到最高峰,即全局最大值。< / p>                  

          

(因此,这些类型的提升在不考虑成本且仅关注找到最佳即时移动的不同场景中非常有用)

        
                 

(ii)如果高程对应成本,那么目标是找到最低谷值,即全局最小值

                 
          

这是常见的事情即Steepest(总是加强更好的估计,即没有高原问题或任何其他)登山类似于Best First Search。这里提升功能是启发函数提供最佳最低成本。这里的爬山仅涉及当前节点通过相邻节点迭代以获得最小值继续扩展最佳节点,类似于最佳优先搜索

        
      
    
  

注意

Hill Climbing算法不会超越当前状态的直接邻居。它只关注扩展的最佳邻居节点。最佳邻居由上述评估函数决定。

然而,最佳优先搜索算法超越直接邻居以找到目标的最佳路径(使用启发式评估),然后继续使用最佳路径。 因此,区别在于本地搜索和系统搜索算法的方法。

了解方法的不同,您将了解为何两者的名称不同。