这两种方法都有一个数据结构,用于保存待扩展的节点(及其成本)。两种方法首先扩展成本最优的节点。那么,它们之间有什么区别呢?
我被告知均匀成本搜索是一种盲目方法,而最佳优先搜索不是,这让我更加困惑(它们是否都有关于节点成本的信息?)。
回答:
区别在于启发式函数。
均匀成本搜索是一种无信息搜索:它不使用任何领域知识。它扩展成本最低的节点,并且在各个方向上进行扩展,因为没有提供关于目标的信息。它可以被视为一个函数f(n) = g(n)
,其中g(n)
是路径成本(“路径成本”本身是一个函数,根据性能度量为路径分配一个数值成本,例如公里数的距离,或移动的次数等)。它仅仅是到达节点n的成本。
最佳优先搜索是一种有信息搜索:它使用启发式函数来估计当前状态与目标的接近程度(我们是否接近目标?)。因此,我们的成本函数f(n) = g(n)
与从n到目标的成本相结合,即h(n)
(估计该成本的启发式函数),给我们f(n) = g(n) + h(n)
。最佳优先搜索算法的一个例子是A*算法。
是的,这两种方法都有一个扩展节点的列表,但最佳优先搜索会试图最小化扩展节点的数量(路径成本 + 启发式函数)。