Answers:
正如@nbro已经说过的那样,“爬山”是一系列本地搜索算法。因此,当您在问题中说“爬山”时,我假设您正在谈论标准的爬山。标准版本的爬坡有一些局限性,通常会卡在以下情况中:
为了解决这些问题,已经开发了爬山算法的许多变体。这些是最常用的:
爬坡算法的成功取决于状态空间景观的体系结构。每当最大值和平稳位置很少时,爬山搜索算法的变体就可以很好地工作。但是在现实世界中,问题的情况看起来更像是分散在平坦地板上的豪猪家族的分散家庭,每个豪猪针的针尖上都有微型豪猪(如《人工智能:人工智能》第4章所述)现代方法)。NP-Hard问题通常具有成倍数量的局部最大值,因此难以解决。
已经开发出给定算法来克服这些问题:
参考书-人工智能:现代方法
爬山不是一种算法,而是一系列“本地搜索”算法。属于“爬坡”算法类别的特定算法是2 opt,3 opt,2.5 opt,4 opt,或者通常是任何N opt。有关这些局部搜索算法(适用于TSP)的更多详细信息,请参见论文“ 旅行商问题:局部优化中的案例研究 ”(由David S. Johnson和Lyle A. McGeoch撰写)的第3章。
该类别中一种算法与另一种算法的区别是它们使用的“邻域函数”(简单来说,就是它们找到给定解的邻域解的方式)。请注意,实际上并非总是如此:这些算法通常具有几种不同的实现。
爬山算法最明显的限制是由于其性质,即它们是本地搜索算法。因此,他们通常只找到局部最大值(或最小值)。因此,如果这些算法中的任何一个已经收敛到局部最小值(或最大值),并且在解或搜索空间中,都存在一个与该找到的解接近的更好的解,那么这些算法都将找不到该解。更好的解决方案。他们基本上将被困。
本地搜索算法通常不单独使用。它们被用作其他元启发式算法的子例程,例如模拟退火,迭代局部搜索或任何蚁群算法。因此,为了克服它们的局限性,我们通常不单独使用它们,而是将它们与其他算法结合使用,这些算法具有概率性并且可以找到全局最小值或最大值(例如,任何蚁群算法)。