- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法设计与分析讲义chapter5
第五章 Greedy算法
5.1 Greedy算法的基本原理
Greedy算法
·Greedy算法的基本思想
·求解最优化问题的算法包含一些列步骤
·每一步都有一组选择
·作出在当前看来最好的选择
·希望通过作出局部优化选择达到全局优化选择。
*Greedy算法不一定总产生优化解。
*一个Greedy算法是否产生优化解,需要严格证明。
·Greedy算法产生优化解的条件
① Greedy-choice-property
② Optimal substructure
2. Greedy-choice-property(Greedy选择性)
定义1 若一个优化问题的全局优化解可以通过局部优化选择得到,则该问题称为具有Greedy选择性。
*Greedy算法与动态规划方法的不同
动态规划:每一步作一个选择 — 依赖于子问题的解。
Greedy方法: 每一步作一个选择 — 不依赖于子问题的解。
*一个问题是否具有Greedy选择性需要证明。
3.优化子结构
定义2 若一个优化问题的优化解包括它的子问题的优化解,则称其具有优化子结构。
4.与动态规划方法的比较
·动态规划方法可用的条件
优化子结构
子问题相交性
子问题空间小
·Greedy方法可用的条件
优化子结构
Greedy选择性
*可用Greedy方法时,动态规划方法可能不适用。
*可用动态规划方法时,Greedy方法可能不适用。
5.Greedy算法正确性证明方法
证明算法所求解的问题具有优化子结构;
证明算法所求解的问题具有Greedy选择性;
算法按照②中的Greedy选择性进行局部优化选择。
5.2 调度问题
问题的定义
·活动:设S={1,2,…,n}是n个活动的集合,每个活动使用一个
资源,每个资源只能为一个活动使用。
·起始终止[si,fi]时间: 每个活动i有一个起始时间si,一个终
止时间fi,si( fi
·相容活动:活动i和j是相容的,若sj(fi或si(fj,即
·调度问题:
输入:S={1,2,…,n},F={[si,fi]},n(i(1
输出:S的最大相容集合
2. 调度算法
·基本思想
为了选择最多的相容活动,每次选fi最小的活动,
即使以后可选更多的活动——“贪心”。
·算法
设f1(f2(….(fn已排序
Greedy-Activity-Selector(S,F)
n(lenyth(s);
A({1}
j(1
FOR i(2 To n Do
IF si(fj
THEN A(A∪{i};j(i;
Return A.
·复杂性分析
IF 结束时间已排序 T(n)=((n)
IF 结束时间未排序 T(n)=((n)+((nlogn)=((nlogn)
·算法正确性
注意:要证明调度算法产生优化解,我们需要证明:
调度问题具有Greedy选择性。
调度问题具有优化子结构。
引理1 设S={1,2,…,n}是n个活动集合,[si,fi]是活动的起始终止时间,且f1(f2(….(fn,S的调度问题的某个优化解包括活动1。
证.设A是一个优化解,按结束时间排序A中活动,设其第一个活动为k。
如果k=1,引理成立。
如果k(1,令B=A-{k}∪{1},由于f1(fk, B中活动相容。又由于(B(=(A(, 所以B是一个优化解,且包括活动1.
引理2(优化子结构) 设S={1,2,…,n}是n个活动集合,[si,fi]是活动i的起始终止时间,且f1(f2(….(fn,设A是S的调度问题的一个优化解且包括活动1,则A(=A-{1}是S(={i(s|si(f1}的调度问题的优化解。
证. 显然,A(中的活动是相容的。我们仅需要证明A(是最大的。设不然,存在一个S’ 的调度问题的优化解B(,(B(((A((。令B={1}∪B(。对于(i(S(,si(f1,B中活动相容。由于|A’|=|A|-1, (B(=(B((+1(A((+1=(A(,与A最大矛盾。
引理3(Greedy选择性)设S={1,2,….,n}是n个活动集合,f0=0,li是Si={j(S | sj(fi-1}中具有最小结束时间fli的活动li。设A是S的包含活动1的优化解,其中,f1(….(fn,则A=。
证.对(A(作归纳法.当(A(=1时,由引理1,命题成立。设(A((k时,命题成立。当(A(=k时,由引理2,A={1}∪A1, A1是S2={j(S|sj(f1}的优化解,由归纳假设,A1=.于是,A=。
定理1. Greedy-Activi
文档评论(0)