统一成本搜索和最佳优先搜索方法有什么区别?
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 search 是 informed 搜索:它使用启发式函数来估计当前状态与目标的接近程度(我们接近目标了吗?) .因此,我们的成本函数 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 First 和 A* 搜索算法是有信息的搜索算法时,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可以在这里看到更多细节。
这两种方法都有一个数据结构来保存要扩展的节点(及其成本)。这两种方法都是先扩展成本最好的节点。那么,它们之间有什么区别呢?
有人告诉我uniform-cost search是盲法而best-first search不是,这让我更加困惑(两者都有关于节点成本的信息吗?)。
区别在于heuristic函数。
统一成本搜索是不知情搜索:它不使用任何领域知识。它扩展了成本最低的节点,并且在每个方向都这样做,因为没有提供有关目标的信息。它可以被视为一个函数 f(n) = g(n)
,其中 g(n)
是路径成本("path cost" 本身是一个函数,它根据性能度量为路径分配数字成本,例如以千米为单位的距离,或移动次数等)。到达节点 n.
Best-first search 是 informed 搜索:它使用启发式函数来估计当前状态与目标的接近程度(我们接近目标了吗?) .因此,我们的成本函数 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 First 和 A* 搜索算法是有信息的搜索算法时,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可以在这里看到更多细节。