贪心算法——算法导论读书笔记

又过了好久没有接着看算法导论了,今天下午看了贪心算法,略懂一些些,赶紧记录下来,怕下次再看的时候又是要重新看起了。

对许多最优化问题来说,采用动态规划方法来决定最佳选择就有点“杀鸡用牛刀”了,只要采用贪心算法就可以了。贪心算法是使所做的选择看起来都是当前最佳的,期望通过所做的局部最优选择来产生出一个全局最优解。

贪心算法的应用:最小生成树、Dijkstra的单源最短路径、Chvatal的贪心结合覆盖启发法

动态规划算法的设计4个步骤:

1)描述最优解的结构

2)递归定义最优解的值

3)按自底向上的方式计算最优解的值

4)由计算出的结果构造一个最优解

贪心算法的基础是动态规划。

16.2 贪心策略的基本内容

贪心算法的设计3个步骤:

1)将优化问题转发成这样的一个问题,即先做出选择在解决剩下的一个子问题。

2)证明原问题总是有一个最优解是做贪心选择得到的,从而说明贪心选择的安全

3)说明在做贪心选择后,剩余的子问题具有这样的一个性质。即如果将子问题的最优解和我们所做的贪心选择联合起来,可以得出原问题的一个最优解

贪心选择性质最优子结构式两个关键的特点。

贪心选择性质:一个全局最优解可以通过局部最优(贪心)选择来达到。最优子结构:对于一个问题来说,如果它的一个最优解包含了其子问题的最优解,则称该问题具有最优子结构。

贪心法与动态规划

0-1背包问题——不可以用贪心算法,必须用动态规划

部分背包问题——可以用贪心算法

16.3 赫夫曼编码

时间复杂度O(nlgn)

可变长编码要比固定长度拜年吗好得多,其特点是对频度高的字符赋以短编码,而对频度低的字符则以较长的一些的编码。

赫夫曼编码每次选出权值最小的两个作为左右子叶,节点值为左右子叶权值之和,把节点插入到队列中。

16.4 贪心法的理论基础

这种理论在确定贪心方法何时能产生最优解时非常有用,它用到了一种称为“拟阵”的组合结构。虽然这种理论没有覆盖贪心方法所使用的所有情况(例如16.1活动选择问题,16.3赫夫曼编码问题)。

适宜用贪心方法来获取最优解的许多问题,都可以归结为在加权拟阵中,找出一个具有最大权值的独立子集的问题。

GREEDY(M,w)看到算法对这一节的内容理解的会透彻一点。算法运行时间O(nlgn+nf(n))

16.5 一个任务调度问题

有一个可用拟阵来解决的有趣问题,即在单个处理器上对诺干戈单位时间任务惊醒最优调度,其中每个任务都有一个截止期限和超市惩罚。这个额问题看起来复杂,但是用贪心算法来解决的话惊人的简单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值