网站大量收购独家精品文档,联系QQ:2885784924

第4章+贪心算法.ppt

  1. 1、本文档共92页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 贪心算法的理论基础 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的一个时间表(最优时间表)使得总误时惩罚达到最小。 * 可以验证,该编码是前缀编码。若一段程序有1000条指令, 其中I1大约有400条,I2大约有300条,I3大约有150条,I4大约有50条,I5大约有40条,I6大约有30条,I7大约有30条。对于定长编码,该段程序的总位数大约为3×1000=3000。采用哈夫曼编码后,该段程序的总位数大约为 1×400+2×300+3×150+5×(50+40+30+30)=2200。可见,哈夫曼编码中虽然大部分编码的长度大于定长编码的长度3, 却使得程序的总位数变小了。可以算出该哈夫曼编码的平均码长为: * 举例:数据传送中的二进制编码。 要传送数据 state, seat, act, tea, cat, set, a, eat, 如何使传送的长度最短? 首先规定二叉树的构造为左走0,右走1 ,如图6.31所示。 为了保证长度最短, 先看字符出现的次数, 然后将出现次数当作权, 如图所示。 * 图6.32 对字符按权排序 字符 s t a e c 字符出现的次数 3 8 7 5 2 图6.33 构造哈夫曼树的过程 按规定:0左1右, 则有 000 001 01 10 11 2 3 5 7 8 c s e a t * 所以有state 的编码为 00111101101, stat的编码为001111011。 构造满足哈夫曼编码的最短最优性质: (1) 若di≠dj(字母不同),则对应的树叶不同。 因此前缀码(任一字符的编码都不是另一个字符编码)不同,一个路径不可能是其它路径的一部分, 所以字母之间可以完全区别。  (2) 将所有字符变成

文档评论(0)

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

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

1亿VIP精品文档

相关文档