第5章 算设计.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 贪心算法 找给硬币问题? 当一个问题具有最优子结构性质时,可用动态规划法求解。但有时会有更简单,更有效的算法。 第4章 贪心算法 找硬币问题具有最优子结构,可以用动态规划方法解,但是贪心算法更简单、直接更高效。 贪心算法不能对所有问题都得到整体最优解! 第4章 贪心算法 百度百科 (又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题他能产生整体最优解或者是整体最优解的近似解。 贪心算法应用 交通质询系统 (最短路径/最小生成树) 最优仓库存储管理 航空管制系统 …… 贪心算法基本步骤与实现 基本步骤: 建立数学模型来描述问题。 把求解的问题分成若干个子问题。 对每一子问题求解,得到子问题的局部最优解。 把子问题的解局部最优解合成原来解问题的一个解。 实现该算法的过程: 从问题的某一初始解出发; while 能朝给定总目标前进一步 do 求出可行解的一个解元素; 由所有解元素组合成问题的一个可行解。 活动安排问题 4.1 活动相容性 问题描述 活动安排问题. 有n个活动 活动 j 在 sj,时刻开始, fj时刻结束. 两个活动是可以兼容的,如果这两个活动不重叠. 目标: 找到互相兼容的最大活动子集 4.1 活动安排问题 在下面所给出的解活动安排问题的贪心算法greedySelector : public static int greedySelector(int [] s, int [] f, boolean a[]) { int n=s.length-1; a[1]=true; int j=1; int count=1; for (int i=2;i=n;i++) { if (s[i]=f[j]) { a[i]=true; j=i; count++; } else a[i]=false; } return count; } 4.1 活动安排问题 由于输入的活动以其完成时间的非减序排列,所以算法greedySelector每次总是选择具有最早完成时间的相容活动加入集合A中。直观上,按这种方法选择相容活动为未安排活动留下尽可能多的时间。也就是说,该算法的贪心选择的意义是使剩余的可安排时间段极大化,以便安排尽可能多的相容活动。 算法greedySelector的效率极高。当输入的活动已按结束时间的非减序排列,算法只需O(n)的时间安排n个活动,使最多的活动能相容地使用公共资源。如果所给出的活动未按非减序排列,可以用O(nlogn)的时间重排。 4.1 活动安排问题 例:设待安排的11个活动的开始时间和结束时间按结束时间的非减序排列如下: 4.1 活动安排问题 算法greedySelector 的计算过程如左图所示。图中每行相应于算法的一次迭代。阴影长条表示的活动是已选入集合A的活动,而空白长条表示的活动是当前正在检查相容性的活动。 其它排序方式的活动安排问题 除了按完成时间非减序排列产生出最早完成时间活动安排外,同样以非减序排列开始时间或结束时间与开始时间差值等可以产生其他指标的活动安排问题。 [最早开始时间] 按开始时间 sj非减序排列。 [最早结束时间] 按结束时间 fj.非减序排列。 [最短间隔] 按间隔长度 fj - sj.非减序排列。 [最小冲突] 对于每个活动, 计算该活动的冲突活动数 cj.并按 cj.非减序排列。 贪心算法并不总能求得问题的整体最优解。但对于活动安排问题,贪心算法greedySelector却总能求得的整体最优解,即它最终所确定的相容活动集合A的规模最大。 证明: 设E={1,2,…n}活动集合(数学归纳推出矛盾) 由于E中活动安排结束时间的非减序排列,活动1具有最早的完成时间。 1)证明活动安排问题的最优解以贪心选择开始,包含活动1 设 是所给活动安排问题的一个最优解,A中活动按结束时间非减排序,A中第一个活动是活动k a.若k=1则得证 b.若k1,则设 。由于f1≤fk,且A中活动是相容的,故B中活动也是相容的。由于A与B中活动数目相同,故A与B都是最优的活动安排。因此总存在以贪

文档评论(0)

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

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

1亿VIP精品文档

相关文档