算法设计与分析的综合性论文_算法分析与设计之贪心算法

b9e75554a309cb3c0c6c01545591eaaf.png

这一节将介绍贪心算法,它的基本思想是:

d0b49dc08f51e10d0a9121254c40e3c3.png

贪心算法产生优化解的条件是贪心选择性优化子结构

63c746a99965daec20600029011bb66f.png

优化子结构:

e2f20abee79b74b888c8cef6f0b1d842.png

一般的一个贪心算法是否正确,需要证明优化子结构贪心选择性,接下来将从几个例子中来体会这种思想!

例1: 活动选择问题

4adf78b27220519659eb923833624179.png

e6bdf1b95fbcf255add0ab2f9ed20405.png

思考 :该问题的优化子结构是?

该问题的优化子结构是:

bf3acb8db40336c7cef362102405ebe9.png

424a9f2d97e3bf1f6be88210c01e0a3b.png

贪心选择性:

7c44005fe5c66732da8622525cfb060a.png

算法的伪代码如下:

1318c5f839b43b062e7c2e87ee8de6d1.png

算法的复杂度分析:

86b2de19dc7616abc4f716e44d6257d7.png

例2: 哈夫曼编码树

编码树是什么?

8a69c1914e3999e2163fafdf5b6ccedf.png

编码树的代价是:

08f67827c1536594df3d1a74ef6aa627.png

eb8884030480ff40e8722cb3cfe05ff7.png

思考 :该问题的优化子结构是什么?贪心选择性是什么?

贪心选择性:

f8ac3bffdaf27515dc549e6feb0ddb9c.png

696b47f74ff64ccde822bee3b7fe3ac3.png

d0602948b06441a35563ac89afda7110.png

71f7072eacbe39e568852bca0a0d93d9.png

优化子结构:

812534adc6fbfea18c42c2bad4309d9c.png

2851a04e1baff0e933c7990ad09050c9.png

9dbc37d26b8c4f542f42ba52c0500781.png

算法的伪代码如下:

7a6fa6ce6ca9d1a4611c66f977cf11e3.png

算法复杂度分析:

958d569d3a64b5053b98e47349e65ccc.png

例3:最小生成树

生成树最小生成树的概念:

491bda0914957a2d407e3b96505e83fc.png

例如,对于下方的一个加权无向图,其几种可能的生成树如下(其中红色的生成树是该图最小生成树):

5349ab6038bbabd3692d8445947bcd97.png

72dbd17d9804f0ace0b8957055437cc7.png

思考 :贪心选择性是什么?最优子结构是什么?

(每次选择最小的边。。。。------> Kruskal算法)

贪心选择性:

0b8ca01e2e5020192db940f7213999f5.png

优化子结构:

d179cf7f528583a0b51bffc9eab65f8b.png

其中

equation?tex=T%5Cbullet+uv ,
equation?tex=G%5Cbullet+uv 是“收缩”操作,

ccf06129e69fcc9192c0fe053e524fb4.png

写出算法的伪代码如下,这里使用到了并查集:

86b0eca07c12411449c22c32396fb6b4.png

算法复杂度分析:

6f9eab016e5989d08c0370719613352a.png

同样的思想,也有另外一种实现方式(Prim算法):

4d0907b6fdb686f6e50c5ce7fa82183a.png

算法复杂度分析:

fca5e8b77effc1856c3db0544489544d.png

参考资料:

【1】哈工大骆吉洲《算法分析与设计》PPT

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值