算法导论第十六章 贪心算法 整理

贪心算法

一、概念:总是选择当前最好的。【局部最优】

二、使用考虑:

具有最优子结构性质且动态规划略复杂时可以考虑使用。

(最优子结构性质:问题的最优解包含的子问题的解也是最优的。)

(使用动态规划的分析思路:证明原问题具有最优子结构性质,证明原问题的最优解可以由子问题的最优解构造而成)

(动态规划的耗时:递归式求解中,每次有i种选择,每种选择产生m个子问题,再考虑外层循环则计算量较大)

三、基本要素:

1、贪心准则:选择的最优评价函数

2、基本步骤:

1)将问题转换为:每做一次选择,只剩下一个子问题需要解决

3)证明贪心选择后,原问题总存在最优解(贪心选择总是安全的)

4)证明贪心选择后,剩余子问题的最优解与贪心解组合可得到原问题的最优解(最优子结构)

✨3、基本要素【贪心正确性证明思路】

1)贪心选择性质:每一步的贪心选择都能生成全局最优-》对每一个子问题假设有个最优解,用贪心选择的解替换,证明替换后的性质与之前相同,即也是最优解

2)最优子结构性质:证明剩余子问题的最优解与贪心解组合可得到原问题的最优解(or若X是原问题的最优解,则x-x1为子问题的最优解),类似对子问题数学归纳法(反证或数学归纳法)

四、范例:

1、找零钱:每次选择面值最大且不超过剩余要找面值的硬币。

2、活动安排问题

3、小数背包问题

4、最优装载

5、哈夫曼编码

证明:

(1)贪心选择性质

证明每次选最小的两个是最优的

(2)最优子问题性质

证明该问题最优解对应的子问题的解也是最优解(去掉最小的两个换成一个合并频率的字母表得到一个最优树,再转为原问题字母表得到的树也是最优的)

6、找钱问题

7、单源最短路径Dijkstra O(n2) 

8、最小生成树

(1)Prim  O(V lgV +E lgV ) =O(E lgV

(2)Krustal O(ElogE)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值