Hill Climbing Search和Best First Search有什么区别?

fre*_*ddy 12 algorithm search

我正在尝试学习一些搜索概念,但在这个过程中遇到了障碍.任何人都可以向我解释爬山搜索和最佳搜索之间的区别是什么?对我来说,它们看起来都像是用最接近目标的启发式值扩展节点.如果有人能解释我的不同之处,我将不胜感激.谢谢!

Bre*_*dan 11

您可以将搜索算法视为具有要搜索的剩余节点的队列.这个答案证明了这个原则.

在深度优先搜索中,将当前节点的子节点添加到队列的前面(堆栈).在广度优先搜索中,将当前节点的子节点添加到队列的后面.想一想这会如何导致这些算法的正确行为.

现在,在爬山搜索中,在将当前节点的子节点添加到队列之前对其进行排序[1].在最佳优先搜索中,您可以按任何旧顺序将当前节点的子节点添加到队列中,然后对整个队列进行排序[1].如果您考虑可能对搜索节点的顺序产生的影响,您应该了解实际差异.

我发现这个概念过于笼统,无法从纯粹抽象的术语中理解,但如果你用铅笔完成几个例子就变得简单了.

[1]:根据解决方案节点的某些特定问题评估进行排序,例如路径搜索搜索中的"距目的地的距离".


Jay*_*hik 6

有点晚了,但这里是。

在 BFS 中,它是关于找到目标。所以它是关于在可能的节点中挑选最好的节点(我们希望能带我们到达目标的节点)。我们一直在努力朝着目标前进。

但是在爬山中,它是关于最大化目标函数。我们选择提供最高上升的节点。因此与 BFS 不同,父节点的“值”也被考虑在内。如果我们不能走得更高,我们就放弃。在那种情况下,我们甚至可能达不到目标。我们可能处于局部最大值。


Tom*_*haw 2

让我为您维基百科

在简单的爬山中,选择第一个较近的节点,而在最陡的爬山中,将比较所有后继节点并选择最接近解决方案的节点。

...

最速爬坡类似于最佳优先搜索,它会尝试当前路径的所有可能的扩展,而不是仅尝试一个。

  • 最佳优先搜索计算所有相邻节点的值,然后使用最佳节点进行迭代。简单的爬山算法依次计算每个相邻节点的值,一旦找到比当前节点更好的就进行迭代。 (8认同)