第七章贪心算法课件.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在付款问题每一步的贪心选择中,在不超过应付款金额的条件下,只选择面值最大的货币,而不去考虑在后面看来这种选择是否合理,而且它还不会改变决定:一旦选出了一张货币,就永远选定。付款问题的贪心选择策略是尽可能使付出的货币最快地满足支付要求,其目的是使付出的货币张数最慢地增加,这正体现了贪心法的设计思想。 最小生成树问题至少有两种合理的贪心策略: (1)最近顶点策略:任选一个顶点,并以此建立起生成树,每一步的贪心选择是简单地把不在生成树中的最近顶点添加到生成树中。 Prim算法就应用了这个贪心策略,它使生成树以一种自然的方式生长,即从任意顶点开始,每一步为这棵树添加一个分枝,直到生成树中包含全部顶点。 7.4 贪心算法的理论基础 下面的关于极大独立子集的性质是很有用的。 定理4.1:拟阵M中所有极大独立子集大小相同。 这个定理可以用反证法证明。 若对拟阵M=(S,I)中的S指定权函数W,使得对于任意x? S,有W(x)0,则称拟阵M为带权拟阵。依此权函数,S的任一子集A的权定义为 。 2.关于带权拟阵的贪心算法 许多可以用贪心算法求解的问题可以表示为求带权拟阵的最大权独立子集问题。 给定带权拟阵M=(S,I),确定S的独立子集A?I使得W(A)达到最大。这种使W(A)最大的独立子集A称为拟阵M的最优子集。由于S中任一元素x的权W(x)是正的,因此,最优子集也一定是极大独立子集。 例如,在最小生成树问题可以表示为确定带权拟阵 的最优子集问题。求带权拟阵的最优子集A的算法可用于解最小生成树问题。 下面给出求带权拟阵最优子集的贪心算法。该算法以具有正权函数W的带权拟阵M=(S,I)作为输入,经计算后输出M的最优子集A。 Set greedy (M,W) {A=?; 将S中元素依权值W(大者优先)组成优先队列; while (S!=?) { S.removeMax(x); if (A∪{x}?I) A=A∪{x}; } return A } 算法greedy的计算时间复杂性为 。 引理4.2(拟阵的贪心选择性质) 设M=(S,I)是具有权函数W的带权拟阵,且S中元素依权值从大到小排列。又设x? S是S中第一个使得{x}是独立子集的元素,则存在S的最优子集A使得x? A。 算法greedy在以贪心选择构造最优子集A时,首次选入集合A中的元素x是单元素独立集中具有最大权的元素。此时可能已经舍弃了S中部分元素。可以证明这些被舍弃的元素不可能用于构造最优子集。 引理4.3:设M=(S,I)是拟阵。若S中元素x不是空集?的可扩展元素,则x也不可能是S中任一独立子集A的可扩展元素。 引理4.4(拟阵的最优子结构性质) 设x是求带权拟阵M=(S,I)的最优子集的贪心算法greedy所选择的S中的第一个元素。那么,原问题可简化为求带权拟阵M’=(S’,I’)的最优子集问题,其中: S’={y|y? S且{x,y} ? I} I’={B|B? S-{x}且B∪{x} ? I} M’的权函数是M的权函数在S’上的限制(称M’为M关于元素x的收缩)。 定理4.5(带权拟阵贪心算法的正确性) 设M=(S,I)是具有权函数W的带权拟阵,算法greedy返回M的最优子集。 3.任务时间表问题 给定一个单位时间任务的有限集S。关于S的一个时间表用于描述S中单位时间任务的执行次序。时间表中第1个任务从时间0开始执行直至时间1结束,第2个任务从时间1开始执行至时间2结束,…,第n个任务从时间n-1开始执行直至时间n结束。 具有截止时间和误时惩罚的单位时间任务时间表问题可描述如下。 (1) n个单位时间任务的集合S={1,2,…,n}; (2) 任务i的截止时间 ,1≤i≤n,1≤ ≤n,即要求任务i在时间 之前结束; (3) 任务i的误时惩罚 ,1≤i≤n,即任务i未在时间 之前结束将招致的 惩罚;若按时完成则无惩罚。 任务时间表问题要求确定S的一个时间表(最优时间表)使得总误时惩罚达到最小。 这个问题看上去很复杂,然而借助于拟阵,可以用带权拟阵的贪心算法有效求解。 对于一个给定的S的时间表,在截止时间之前完成的任务称为及时任务,在截止时间之后完成的任务称为误时任务。 S的任一时间表可以调整成及时优先形式,即其中所有及时任务先于误时任务,而不影响原时间表中各任务的及时或误时性质。 类似地,还可将S的任一时间表调整成为规范形式,其中及时任务先于误时任务,且及时任务依其截止时间的非减序排列。

文档评论(0)

xingyuxiaxiang + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档