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

What is the difference between uniform-cost search and best-first search methods?

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

有人告诉我uniform-cost search是盲法而best-first search不是,这让我更加困惑(两者都有关于节点成本的信息吗?)。

区别在于heuristic函数。

统一成本搜索是不知情搜索:它不使用任何领域知识。它扩展了成本最低的节点,并且在每个方向都这样做,因为没有提供有关目标的信息。它可以被视为一个函数 f(n) = g(n),其中 g(n) 是路径成本("path cost" 本身是一个函数,它根据性能度量为路径分配数字成本,例如以千米为单位的距离,或移动次数等)。到达节点 n.

只是一个成本

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

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

对接受的答案稍作更正

最佳优先搜索不估计当前状态与目标的接近程度,它估计每个下一个状态(从当前状态)与目标的接近程度以影响选择的路径.

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

  • f(n) 是用于评估潜在节点的成本函数 展开
  • g(n) 是移动到节点 n
  • 的成本
  • h(n) 是估计的 如果我们是,到达最终目标状态所需的成本 去 n

统一成本搜索中使用的 f(n)

f(n) = g(n)

最佳优先搜索中使用的f(n)(A*是最佳优先搜索的一个例子)

f(n) = g(n) + h(n)

当遍历树寻找作为目标状态的 n 时,这些函数中的每一个都在评估潜在的扩展节点,而不是当前节点

区别如下:

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

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

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

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

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

这里有点误会。统一成本搜索、最佳优先搜索和A*搜索算法都是不同的算法。当 Best FirstA* 搜索算法是有信息的搜索算法时,Uniform cost 是无信息的搜索算法。 Informed 意味着它使用启发式函数来决定扩展节点。 best first search和A*的区别在于best first使用f(n) = h(n)来展开,A*使用f(n) = g(n)+h(n)来选择展开节点。 h(n) 是启发式函数。 g(n)是从起始节点到节点n的实际成本。

https://www.cs.utexas.edu/~mooney/cs343/slide-handouts/heuristic-search.4.pdf可以在这里看到更多细节。