Chapt的er 13 Greedy Algorithm.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第13章 贪心法 引论 优化问题:贪心法常用于解优化问题。 应用: (1)货箱装船(Container Loading)问题 (2)背包问题 (3)拓扑排序问题 (4) 哈夫曼编码问题 (5)最短路径问题 (6)最小代价生成树 (7) 偶图覆盖问题 13.1优化问题 一个优化问题可以描述如下: (1)问题的解为一复杂的结构,例如元组形式 (2)约束条件: (结构性的约束条件) 使 为true的元组称为可行解 (feasible solution); (3)目标函数 优化解即指使目标函数极大化(或极小化)的可行解,对应的目标函数值称为优化值。 很多优化问题是NP-难度问题,迄今找不到它们的多项式算法。所以计算上可行的方法就是求其近似解。贪心法是求近似算法的主要途径。 例 [loading Problem] 设有n个集装箱,集装箱大小一样,第i个集装箱的重量为wi(1≤i≤n),设船的载重量为c.试设计一装船的方法使得装入的集装箱数目最多. [Loading Problem](Contd.) 令 代表一种装法 约束条件 目标函数 极大化目标函数 13.2贪心法 贪心法是一种多步(stage)求解的方法; 每步按一种局部优化的策略选择解(元组)的一个分量; 算法以第n步结束时构造出的对象(元组)作为问题的解. 这种局部优化的策略又称为“贪心标准(greedy criterion). 贪心法的主要特点是: (1)不回溯:选定一个分量后,不重试其它可能. (2)使用局部优化策略的主要原因是减小计算开销. 但局部优化策略不保证得到精确优化解,可能得到的是近似解. 特别是对NP-难度问题. (3)不同的“贪心”策略得到不同的算法. (4)常常采纳使目标函数有最大增量的策略为贪心策略; 增量是局部性概念. 遗传算法、神经网络等等都是具有这类贪心性质的启发式算法. 例:找零钱问题 假设有四种硬币,它们的面值分别为二角五分、一角、五分和一分。 现在要找给某顾客六角三分钱。 这时,我们会不假思索地拿出2个二角五分的硬 币,1个一角的硬币和3个一分的硬币交给顾客。 这种找硬币方法与其他的找法相比,所拿出的硬币个数是最少的。这里,我们下意识地使用了这样的找硬币算法: 首先选出一个面值不超过六角三分的最大硬币,即二角五分;然后从六角三分中减去二角五分,剩下三角八分;再选出一个面值不超过三角八分的最大硬币,即又一 个二角五分,如此一直做下去。这个找硬币的方法实际上就是贪心算法。 顾名思义,贪心算法总是作出在当前看来是最好的选择。也就是说贪心算法并不从整体最优 上加以考虑,它所作出的选择只是在某种意义上的局部最优选择。 例:活动安排问题 例:机器调度 现有n个任务和足够多台机器, 假定任何时间一台机器只能执行一个任务.设任务i的开始时间为si, 完成时间为fi, sifi.[si, fi] 为处理任务i 的时间区间.称两个任务i, j 重叠是指两个任务的时间区间有重叠. 例如:区间[1,4]与区间[2,5]重叠, 而与区间[4,7]不重叠. 可行的任务分配是指该分配中没有将重叠的任务分配给同一台机器. 最优分配指占用机器数最少的可行分配. 例13.5(续) 按任务起始时间对任务排序并按此顺序安排任务. 贪心准则:尽可能使用旧(old)的机器. 定义每台用过的机器的可用时间为这台机器上最近执行的任务的完成时间. 如果一个新任务的起始时间≥这些机器的最小可用时间则安排该任务在这台机器上执行; 否则使用一台新机器. 使用min-堆存放每台机器的可用时间,即此时间以后可安排新任务. 算法的时间复杂度为Θ(nlogn)(排序和堆操作). 例:最短路算法 13.3贪心算法的应用 Container Loading(货箱装船)问题 0/1背包问题 拓扑排序问题 最短路径问题 最小代价生成树 13.3.1 Container loading 目标函数:装载的集装箱数目. 极大化目标函数. 贪心标准:在还没装船的集装箱中选择重量最小的集装箱. 按上述策略,重量最小的集装箱先装,依此类推. 算法:首先按重量从小到大对集装箱排序并依次装入直到超过船的载重量. 定理13.1 上述贪心法产生的解是最优解, 证明如下: 设货箱装船问题的最优解为(y1,…,yn). 如最优解不含箱子1(y1=0), 将箱子1替换优化解中某一个箱子得到一个新的解. 替换是必须的: 因为如果箱子1还能装入船中, 则(

文档评论(0)

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

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

1亿VIP精品文档

相关文档