Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 统一成本搜索和最佳优先搜索方法之间有什么区别?_Search_Artificial Intelligence_Difference_Best First Search_Uniform Cost Search - Fatal编程技术网

Search 统一成本搜索和最佳优先搜索方法之间有什么区别?

Search 统一成本搜索和最佳优先搜索方法之间有什么区别?,search,artificial-intelligence,difference,best-first-search,uniform-cost-search,Search,Artificial Intelligence,Difference,Best First Search,Uniform Cost Search,这两种方法都有一个数据结构,用于保存要扩展的节点(及其成本)。这两种方法都首先以最佳成本展开节点。那么,它们之间有什么区别呢 我被告知统一成本搜索是一种盲法,而最佳优先搜索则不是,这让我更加困惑(两者是否都有节点成本的信息?) 统一成本搜索是无信息搜索:它不使用任何领域知识。它扩展最小成本节点,并在每个方向上扩展,因为没有提供有关目标的信息。它可以被视为一个函数,其中g(n)是一个路径成本(“路径成本”本身是一个函数,它根据性能度量为路径分配一个数值成本,例如以公里为单位的距离或移动次数等)。这

这两种方法都有一个数据结构,用于保存要扩展的节点(及其成本)。这两种方法都首先以最佳成本展开节点。那么,它们之间有什么区别呢

我被告知统一成本搜索是一种盲法,而最佳优先搜索则不是,这让我更加困惑(两者是否都有节点成本的信息?)

统一成本搜索是无信息搜索:它不使用任何领域知识。它扩展最小成本节点,并在每个方向上扩展,因为没有提供有关目标的信息。它可以被视为一个函数,其中
g(n)
是一个路径成本(“路径成本”本身是一个函数,它根据性能度量为路径分配一个数值成本,例如以公里为单位的距离或移动次数等)。这只是到达节点n的成本

信息搜索:它使用一个启发式函数来估计当前状态与目标的接近程度(我们是否正在接近目标?)。因此,我们的成本函数
f(n)=g(n)
与从n到目标的成本相结合,
h(n)
(估计该成本的启发式函数)给出了
f(n)=g(n)+h(n)
。最佳优先搜索算法的一个例子是a*算法


是的,两种方法都有一个扩展节点列表,但最佳优先搜索将尝试最小化扩展节点的数量(路径成本+启发式函数)

对已接受答案的轻微更正


“最佳优先搜索”不会估计当前状态与目标的距离,而是估计下一个状态(从当前状态)与目标的距离,从而影响所选路径

统一成本搜索扩展最小成本节点(不考虑启发式),最佳优先搜索扩展最小(成本+启发式)节点

  • f(n)是用于评估潜在节点的成本函数 扩展
  • g(n)是移动到节点n的成本
  • h(n)是估计值 如果我们是,那么我们要达到最终目标状态所需的成本是多少 去
统一成本搜索中的f(n) 最佳优先搜索中使用的f(n)(A*是最佳优先搜索的一个示例)
当遍历树查找作为目标状态的n时,这些函数中的每一个都在评估潜在的扩展节点,而不是当前节点。区别如下所示:

  • 统一成本搜索(UCS)扩展路径成本最低(即g(n)最低)的节点,而最佳优先搜索(BFS)扩展距离目标最近的节点

  • UCS不能处理启发式函数,而BFS可以处理启发式函数

  • 在UCS中,f(n)=g(n),而在BFS中,f(n)=g(n)+h(n)


    • 统一成本搜索选择距离最小的未访问节点,计算通过该节点到每个未访问邻居的距离,如果较小,则更新邻居的距离


      最佳优先搜索是一种基于启发式的算法,它试图预测路径末端(即路径中的最后一个节点)与目标节点的距离,以便首先展开判断为更接近解决方案的路径。

      这里有一点误解。统一成本搜索、最佳优先搜索和A*搜索算法都是不同的算法<当最佳优先A*搜索算法是知情搜索算法时,strong>统一成本是一种不知情的搜索算法。通知意味着它使用启发式函数来决定扩展节点。最佳优先搜索和A*之间的区别在于,最佳优先使用
      f(n)=h(n)
      进行扩展,而A*使用
      f(n)=g(n)+h(n)
      选择扩展节点
      h(n)
      是启发式函数
      g(n)
      是从起始节点到节点n的实际成本


      这里可以看到更多细节。

      不,f(n)=g(n)+h(n)由A使用*f(n)=g(n)+h(n)用于任何使用启发式的搜索。这就是h(n)的含义。A*是一种使用启发式的搜索,是一种特殊的最佳优先搜索。你说“距离最小”,这里的“距离”是什么意思?距离目标的最小距离是什么?最佳优先搜索不估计当前状态与目标的距离,它估计下一个状态(从当前状态)与目标的距离,以影响所选路径。在评估时,最佳优先搜索中的启发式函数正在评估下一个可能的状态之一,不是“当前状态”。关于最佳优先搜索如何使用其启发式函数,以下陈述是不正确的:“它使用启发式函数来估计当前状态与目标的接近程度”。可以这样说:“它使用一个启发式函数来估计潜在的下一个状态离目标有多近。”。请检查“当前状态”一词的使用是否没有问题。2.我从未说过它“评估当前状态”。我说它“估计距离有多近”。这个语句没有问题。当您正在寻找下一个节点并从节点A开始,最终希望最终在节点Z上结束时,最好的第一次搜索中的启发式函数运行在节点B、C、D、…,Y上,它永远不会运行在节点A上。它甚至不考虑节点A,节点A是“当前状态”。如果你还看这个问题,就可以得到更精确的答案。
      f(n) = g(n)
      
      f(n) = g(n) + h(n)