关于贪心算法的ppt.ppt

  1. 1、本文档共79页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
关于贪心算法的ppt

算法设计与分析 主讲教师:张连芳 天津大学计算机系 Lfzhang@tju.edu.cn 第13章 贪心法 引论 优化问题:贪心法常用于解优化问题。 应用: (1)货箱装船(Container Loading)问题 (2)背包问题 (3)拓扑排序问题(?) (4)最短路径问题 (5)最小代价生成树 13.1优化问题 一个优化问题可以描述如下: (1)问题的解为一复杂的结构,例如有元组形式 (2)约束条件: (结构性的约束条件) 使 为true的元组称为可行解 (feasible); (3)目标函数 优化解即指使目标函数极大化(或极小化)的可行解,对应的目标函数值称为优化值。 很多优化问题是NP-难度问题,迄今找不到它们的多项式算法。所以计算上可行的方法就是求其近似解。贪心法是求近似算法的主要途径。 例13.2[loading Problem] 设有n个集装箱,第i个集装箱的重量为wi(1≤i≤n),设船的载重量为c.试设计一装船的方法使得装入的集装箱数目最多. 例13.2 [Loading Problem] 令 代表一种装法 约束条件 目标函数 极大化目标函数 13.2贪心法 贪心法是一种多步(stage)求解的方法; 每步按一种局部优化的策略选择解(元组)的一个分量; 算法以第n步结束时构造出的对象(元组)作为问题的解. 这种局部优化的策略又称为“贪心标准(criterion). 贪心法的主要特点是: (1)不回溯:选定一个分量后,不重试其它可能. (2)使用局部优化策略的主要原因是减小计算开销. 但局部优化策略不保证得到精确优化解,可能得到的是近似解.特别是对NP-难度问题. (3)不同的“贪心”策略得到不同的算法. (4)常常采纳使目标函数有最大增量的策略为贪心策略; 增量是局部性概念. 例13.5 [机器调度] 现有n个任务和足够多台机器, 假定任何时候一台机器只能执行一个任务.每个任务i有规定的开始时间为si和完成时间为fi, sifi.[si, fi] 为处理任务i 的时间区间. 称两个任务i, j 重叠是指两个任务的时间区间有重叠.例如:区间[1,4]与区间[2,5]重叠, 而与区间[4,7]不重叠. 任务分配(assignment)指为每个任务安排一台执行它的机器;可行的任务分配是指该分配中重叠的任务分配在不同机器上执行. 最优分配指占用机器数最少的可行分配. 例13.5(续) 按任务起始时间对任务排序并按此顺序安排任务. 贪心准则:尽可能使用以前用过的机器(old机器).如果有多台old机器可供使用则选择可用时间最早的那台机器. 一台用过的机器的可用时间为这台机器上最近执行的任务的完成时间. 新机器的可用时间为0. 上述贪心法产生优化解. 证明 任何可行解使用的机器数≥最大重迭任务数; 所以优化调度使用的机器数≥最大重迭任务数. 贪心解使用的机器数不超过最大重迭任务数:任何时候当算法使用一台新机器时, 当前这些机器上的任务一定是彼此重叠的. 实现问题:使用min-堆存放每台机器的可用时间, 在此时间以后可安排新任务. 算法的时间复杂度为Θ(nlogn)(排序和堆操作). 例题13.6(最短路算法) 13.3应用 Container Loading(货箱装船)问题 0/1背包问题 拓扑排序问题 最短路径问题 最小代价生成树 13.3.1 Container loading 目标函数:装载的集装箱数目. 极大化目标函数. 贪心标准:在还没装船的集装箱中选择重量最小的集装箱. 按上述策略,重量最小的集装箱先装,依此类推. 算法:首先按重量从小到大对集装箱排序并依次装入直到超过船的载重量. 下面证明中箱子编号指排序后的顺序号 定理13.1 上述贪心法产生的解是优化解, 证明如下: 设优化解为(y1,…,yn). 如优化解不含箱子1(y1=0), 将箱子1替换优化解中某一个箱子得到一个新的解. 替换是必须的: 因为如果箱子1还能装入船中, 则(y1,…,yn)不是优化的. 因为箱子1是最轻的,替换后的解仍是可行的. 替换后的解装入的箱子数等于优化的装箱数, 所以它仍是优化解. 替换后新的优化解和贪心解都包含箱子1. 反复替换将得到一个优化解,它等于贪心解. 替换次数是有穷的. 13.2.2 0/1背包问题 0/1背包问题:设有容量c的背包和n件物品, 物品i 的重量为wi ;假定装入物品i 获得的效益值为pi, 试给出一物品装入方案,使获得的总效益值最大. 集装箱

文档评论(0)

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

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

1亿VIP精品文档

相关文档