- 1、本文档共104页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八章贪心算法2016讲述
heyichao@sjzue.edu.cn Greedy Algorithms ● Algorithms for optimization problems typically go through a sequence of steps, with a set of choices at each step. ● Greedy algorithm always makes the choice that looks best at the moment. ● Greedy algorithm makes a locally optimal choice in the hope that this choice will lead to a globally optimal solution. 找钱问题 找钱问题的贪心算法 输入:n种钱币集合S={m1, m2,...,mn}和面值vi,及要找钱数y; 输出: 使目标函数f(X)(钱币张数)达到最小值的钱币集合X。 1. 初始化解集X ← Φ,并计算f(X) ; 2. 按面值将S中的钱币降序排列; 3. 循环: i 从1 到 n , 且钱数还没找完, 做 4. [ 若 vi≤y, 则 5. [ 将 ?y/vi ?张第i种钱币放入解集X中; 6. 计算f(X); 7. y←y- ?y/vi ?×vi ; 8. ] 9. ] 贪心算法的一般模式 贪心算法: 输入:已知解空间S={x1, x2,...,xn}及其元素xi的权值wi; 输出: 使目标函数f(X)达到最小(大)值的解集X。 1. 初始化解集X ← Φ, 计算f(X) ; 2. 按贪心策略将S中的元素排序; 3. 循环: i 从1 到 n, 做 4. [ x← select(S); //从S中选择下一个x 5. 若 x满足解的条件,则 6. [ X ← X ∪{x}; 7. 计算f(X); 8. ] 9. ] 定义 实例:图拟阵 拟阵上的最优化问题 贪心算法 时间复杂度 排序 拟阵贪心算法的正确性证明 只需证明在算法的每一步A都是某个最优解的子集,那么当算法结束时A就是一个最优解 运用归纳思想 归纳基础:初始时A为空,满足要求 归纳:只需证明一个最优解的子集A经过一次循环后仍满足要求. Greedy versus dynamic programming Difference: 1. Greed algorithm: top-down. Dynamic programming: bottom-up 2. Greed algorithm: Choice does not depend on the solutions to subproblem. Dynamic programming: Choice depends on the solutions to subproblem. 3. Greed algorithm: No overlaping subproblems Dynamic programming: Overlaping subproblems Common: Optimal substructure. 反序ρ(i,j)作用是倒换同线性块 的次序。实际上,它将 变换为 例如: π=1243756,则π?ρ(3,6)=1257346 反序排序法 重排事件的最简单形式可模型化为将一个基因组变换为另一个基因组的一系列反序。基因组中基因的次序(而不仅仅只是同线性块)可用一个排列π=π1π2…πn表示。上图中人类X染色体中同线性块的次序可以用(1,2,3,4,5)表示,而在小鼠的X染色
文档评论(0)