“爬山算法”和“分支定界算法”的区别是什么?

8
山峰爬升算法和分支定界算法是人工智能中使用的两种启发式搜索算法。这两种方法有何区别?

你是在说分支定界搜索吗? - AgileTillIDie
1
它们是完全不同类型的算法。 "爬山" 的更通用术语是“局部搜索”,而对于“分支定界”,则是“树搜索”或“图搜索”。你应该首先尝试理解它们之间的区别。 - ziggystar
2个回答

16
爬山算法通过从一个初始解开始,不断地局部修改它,直到找到解决方案或启发式算法陷入局部最大值为止。有许多方法可以尝试避免陷入局部最大值,例如并行运行多个搜索,或者以概率选择后继状态等。在许多情况下,爬山算法将迅速收敛到正确的答案。然而,这些方法都不能保证找到最优解。
分支定界算法通过将搜索空间分成多个部分,探索其中一部分,然后根据每次搜索获得的信息尝试排除搜索空间的其他部分。它们保证最终能找到最优解,尽管可能需要很长时间。对于许多问题,基于分支定界的算法工作得很好,因为一小部分信息可以迅速缩小搜索空间。
简而言之,爬山算法不能保证找到正确的答案,但通常运行非常快并给出良好的近似值。分支定界总是能找到正确的答案,但可能需要一段时间来完成。
希望这有所帮助!

3
山峰爬升算法的原理如下: Hill climbing 深度优先搜索与修剪(这是分支界限法的一种简单形式)的原理如下: Branch and bound 分支界限法通常无法扩展到1000个以上的变量和1000个以上的值。山峰爬升可以,但它会陷入局部最优解(可通过添加禁忌搜索来解决)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接