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

贪心算法讨论.ppt

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

贪心算法贪心算法概念、特性实现会场安排问题最优合并概念所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。特性无后效性某个状态以后的过程不会影响以前的状态,只与当前状态有关。基本思路1.建立数学模型来描述问题。2.把求解的问题分成若干个子问题。3.对每一子问题求解,得到子问题的局部最优解。4.把子问题的解局部最优解合成原来解问题的一个解。实现框架从问题的某一初始解出发;while(能朝给定总目标前进一步){利用可行的决策,求出可行解的一个解元素;}由所有解元素组合成问题的一个可行解;会场安排问题【问题描述】假设要在足够多的会场里安排一批活动,并希望使用尽可能少的会场。(这个问题实际上是著名的图着色问题。若将每一个活动作为图的一个顶点,不相容活动间用边相连。使相邻顶点有不同颜色的最小着色数,相应于要找的最小会场数。)会场安排问题【数据输入】第一行有1个正整数k,表示有k个待安排的活动。接下来的k行中,每行有两个正整数,分别表示k个待安排的活动开始时间和活动结束时间。时间以0点开始的分钟计。会场安排问题【分析】设所给的n个活动1,2,....,n,它们的的开始时间和结束时间分别为s[i]和f[i],i=1~n,且f[1]f[2].....f[n]。记总共需要的会场是sum会场安排问题【分析】如果活动a的结束时间比活动b的开始时间早,那么这两个活动可以在同一会场举行。sum=n;if(s[i]f[j])sum--;deletes[i];会场安排问题【分析】实际上是求这n个半闭区间的最大重叠数。因为重叠的活动区间所相应的活动是互不相容的。若这n个活动区间的最大重叠数为m,则这m个重叠区间所对应的活动互不相容,因此至少要安排m个会场来容纳这m个活动。会场安排问题【分析】1.先将n个活动区间的2n个端点排序。2.用扫描算法,从左到右扫描整个直线。在每个事件点处(即活动的开始时刻或结束时刻)作会场安排。当遇到一个开始时刻s[i],就将活动i安排在一个空闲的会场中。遇到一个结束时刻f[i],就将活动i占用的会场释放到空闲会场栈中,已备使用。3.经过这样一遍扫描后,最多安排了m个会场(m是最大重叠区间数)。因此所作的会场安排是最优的。会场安排问题【复杂度】计算时间主要用于对2n个区间端点的排序,这需要O(nlogn)计算时间。最优合并问题问题描述:给定k个排好序的序列s1,s2,...,sk,用2路合并算法将这k个序列合并成一个序列。假设所采用的2路合并算法合并2个长度分别为m和n的序列需要m+n-1次比较。试设计一个算法确定合并这个序列的最优合并顺序,使所需的总比较次数最少。最优合并问题数据输入:由文件input.txt给出输入数据。第一行有1个正整数k,表示有k个待合并序列。接下来的1行中,有k个正整数,表示k个待合并序列的长度。最优合并问题结果输出:将编程计算出的最多比较次数和最少比较次数输出到文件output.txt。input.txtoutput.txt478512111258最优合并问题解题思路最差合并顺序:总是最长的两个先合并最优合并顺序:总是最短的两个先合并最优合并问题最优合并顺序:5121125+26712117+1117181218+1229共6+7+29==52

文档评论(0)

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

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

1亿VIP精品文档

相关文档