两种方法都有一个数据结构,用于保存节点(及其成本)以进行扩展。两种方法首先以最高成本扩展节点。那么,它们之间有什么区别?
有人告诉我,统一成本搜索是一种盲目的方法,而最好先搜索不是,这让我更加困惑(两者都有关于节点成本的信息吗?)。
答案 0 :(得分:17)
区别在于heuristic功能。
统一成本搜索是无信息搜索:它不使用任何域知识。它扩展了成本最低的节点,并且它在每个方向都这样做,因为没有提供有关目标的信息。它可以被视为一个函数f(n) = g(n)
,其中g(n)
是路径成本("路径成本"本身是一个函数,根据性能度量为路径分配数字成本,例如,以公里为单位的距离,或移动次数等)。到达节点 n 只是一个成本。
Best-first search 被告知搜索:它使用启发式函数来估计当前状态与目标的接近程度(我们是否接近目标?)。因此,我们的成本函数f(n) = g(n)
与从n到目标的成本相结合,h(n)
(估算成本的启发函数)给我们f(n) = g(n) + h(n)
。最优先搜索算法的一个示例是 A * 算法。
是的,两种方法都有扩展节点列表,但最佳优先搜索将尝试最小化扩展节点数(路径成本+启发式函数)。
答案 1 :(得分:5)
这里有些误解。统一成本搜索,最佳优先搜索和A *搜索算法都是不同的算法。当最佳第一和 A * 搜索算法是有根据的搜索算法时,统一成本是一种不为人知的搜索算法。知情的意味着它使用启发式函数来确定扩展节点。最佳优先搜索和A *之间的区别在于,最佳优先使用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可以在此处看到更多详细信息。
答案 2 :(得分:4)
对接受的答案进行轻微更正
最佳优先搜索不估计当前状态与目标的接近程度,它估计每个下一个状态(从当前状态)到目标的接近程度,以影响所选路径。
统一成本搜索扩展了成本最低的节点(无论启发式),并且最佳优先搜索扩展了最少(成本+启发式)节点。
f(n) = g(n)
f(n) = g(n) + h(n)
这些函数中的每一个都在评估潜在的扩展节点,而不是当遍历树寻找目标状态的n时的当前节点
答案 3 :(得分:1)
差异如下:
统一成本搜索(UCS)以最低路径成本(即具有最低g(n))扩展节点,而最佳优先搜索(BFS)扩展最接近目标的节点
UCS无法处理启发式函数,而BFS可以处理启发式函数
在UCS中,f(n)= g(n),而在BFS中,f(n)= g(n)+ h(n)。
答案 4 :(得分:1)
统一成本搜索会选择距离最短的未访问节点,计算通过该节点到每个未访问邻居的距离,并在更小的情况下更新邻居的距离。
最佳优先搜索是一种基于启发式的算法,它试图预测路径末端(即路径中的最后一个节点)与目标节点之间的距离,以使被判断为更接近路径的路径。解决方案首先进行扩展。