我正在尝试学习一些搜索概念,但在这个过程中遇到了障碍.任何人都可以向我解释爬山搜索和最佳搜索之间的区别是什么?对我来说,它们看起来都像是用最接近目标的启发式值扩展节点.如果有人能解释我的不同之处,我将不胜感激.谢谢!
Bre*_*dan 11
您可以将搜索算法视为具有要搜索的剩余节点的队列.这个答案证明了这个原则.
在深度优先搜索中,将当前节点的子节点添加到队列的前面(堆栈).在广度优先搜索中,将当前节点的子节点添加到队列的后面.想一想这会如何导致这些算法的正确行为.
现在,在爬山搜索中,在将当前节点的子节点添加到队列之前对其进行排序[1].在最佳优先搜索中,您可以按任何旧顺序将当前节点的子节点添加到队列中,然后对整个队列进行排序[1].如果您考虑可能对搜索节点的顺序产生的影响,您应该了解实际差异.
我发现这个概念过于笼统,无法从纯粹抽象的术语中理解,但如果你用铅笔完成几个例子就变得简单了.
[1]:根据解决方案节点的某些特定问题评估进行排序,例如路径搜索搜索中的"距目的地的距离".
有点晚了,但这里是。
在 BFS 中,它是关于找到目标。所以它是关于在可能的节点中挑选最好的节点(我们希望能带我们到达目标的节点)。我们一直在努力朝着目标前进。
但是在爬山中,它是关于最大化目标函数。我们选择提供最高上升的节点。因此与 BFS 不同,父节点的“值”也被考虑在内。如果我们不能走得更高,我们就放弃。在那种情况下,我们甚至可能达不到目标。我们可能处于局部最大值。