贪婪算法和最陡算法有什么区别?

时间:2011-10-24 16:18:27

标签: mathematical-optimization minimization

我有幻灯片,其中比较了2个版本的本地搜索算法:贪婪和最陡。

贪婪:     生成解决方案 x ;     的重复     {         对于N( x )中的每个y 以随机顺序         {              if f( y )> f( x 然后                  x = y ;         }     }     直到找不到更好的解决方案

最速:     生成解决方案 x ;     的重复     {         在N( x )中找到最佳解决方案 y ;          if f( y )> f( x 然后              x = y ;     }     直到找不到更好的解决方案

但是在互联网上的每个地方我都读到贪婪的方法会搜索最好的(不是第一个更好找到的)解决方案。那么区别是什么呢?并且:哪个版本是真的?

1 个答案:

答案 0 :(得分:3)

我同意贪婪也意味着最匆匆,因为它试图制造locally optimal choice。对我而言,不同之处在于最速下降/梯度下降的概念与函数优化密切相关,而贪婪常常在组合优化的背景下被听到。然而,两者都描述了相同的“策略”。

在我看来,这些概念不太适合描述您想要描述的行为。我更喜欢最佳改进第一次改进本地搜索。贪婪的本地搜索和最陡的下降方法都是最好的改进本地搜索方法。

使用正则表达式,贪婪具有类似的含义:考虑与通配符表达式的最大可能匹配。说贪婪匹配与第一种可能性相匹配也是错误的。