一、贪心算法基本概念和特征规律
“贪心”顾名思义,因此其规律特征就是更加注重当前的状态,贪心法做出的选择是对于当前所处状态的最优选择,它的解决问题的视角是微观的“局部”,而不是从全局宏观的角度思考和看待问题。也就是说,不从整体最优上加以考虑,仅是某种意义上的局部最优解 。
根据这样的性质,要求贪心法解决的问题是“无后效性”——当前的决策不会影响到后续的决策。因为如果问题前后勾连紧密的话,会造成求解过程十分混乱。贪心算法常常用于组合优化问题,它的求解过程是多步判断的过程。
贪心算法没有固定的算法框架,关键是贪心策略的选择,所以唯一的难点就是找到带求解问题的贪心策略,但毕竟熟能生巧嘛,算法的基本思想总是固定不变的。贪心选择的意思是对于所求问题的整体最优解可以通过一系列的局部最优选择求得。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性,即某个状态以后的过程不会影响以前的状态,只与当前状态有关。
运用贪心算法求解问题时,会将问题分为若干个子问题,可以将其想象成俄罗斯套娃,利用贪心的原则从内向外依次求出当前子问题的最优解,也就是该算法不会直接从整体考虑问题,而是想要达到局部最优。只有内部的子问题求得最优解,才能继续解决包含该子问题的下一个子问题,所以前一个子问题的最优解会是下一个子问题最优解的一部分,重复这个操作直到堆叠出该问题的最优解。