本文来源公众号“菜鸟学Python”,仅用于学术分享,侵权删,干货满满。
原文链接:https://mp.weixin.qq.com/s/YhzC8deUc-PWxFEy3b-nEg
所谓贪心,就是一直追求最好的选择。由于算法执行时重点关注的区域是本层执行空间,即本层循环或作用域,所以贪心算法的侧重点也是本层执行空间。因为其他层空间的参数无法直接涉及,所以贪心算法就是在本层空间或者本次执行中追求最优的算法结果。所以,贪心思想追求的是局部最优,并且是每一步都追求局部最优。但是本次局部最优可能会对上一次的局部最优造成影响,因此贪心思想可能无法获取最优解。但是,这对一些无最优解的问题又是很适合的。
贪心的原理
贪心算法的核心可以理解为:每次只追求局部最优,不兼顾或不考虑全局最优。贪心算法的设计直截了当,只看当前,不看整体或后来。在贪心思想中,“贪心”的是本次的运算能够获取最优解,而不用顾虑对全局造成的因此该算法执行时简单、直接、效率高,但是容易陷入局部最优的困境中。
因此在选择贪心算法时需要考虑效率与其对全局最优的影响。一般在效率比获取全局最优解更加重要时采用贪心算法。假设某个算法共有 12 个可选的执行步骤,在图 5.11 中用 12 个矩形来表示。这 12矩形的宽度相等,长度代表矩形的执行效果,长度越长,则执行效果越好。