贪心策略
之所以称之为“策略”,而不是“算法”,还是有些原因的,贪心思想和动态规划思想练习紧密,可是细想一下有不能混为一谈,动态规划是根据迁移过程的状态去推导下一过程的状态,是有理论依据的,通过每次“完美”的检验而得出最优解,关键是找出一个最优子结构,记得经典的一句话是:动态规划的子结构必须是独立的,而且是重叠的,虽然是一组反义词,可是代表的意义是不同的。扯远了,而贪心策略不同,贪心只考虑当前的最优解,是临时的,不连续的,所以得出的解不一定是最优解。 一个最间的的例子就是0-1背包问题,根据贪心,每次都放进去最“实惠”的,也就是“性价比”最高的,然后放次高的,直到不能放,这样做显然是不尽人意的,因为贪心策略没有考虑到背包的容量,为什么?前面说过了,贪心策略只考虑当前的最优解,他是不会管背包容量的,如果加入了背包容量这个参数,便成为DP问题了,贪心策略缺少一约束条件,贪心找出的每一条路径都是最大可能接近最优解的,例如:每条路径是最优解的可能性是0.8,贪心一共做了4次检查,于是正确的最优解得可能是(0.8)^4,可是他没有考虑其他的情况,问题就出现了。当然,贪心也有很多正确的策略,只是不适用某一问题罢了。 *********************************************************************** 下面开始看看贪心算法: 一.贪心算法的基本概念