贪心算法 acm.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
贪心算法acm贪心算法acm

贪心算法 主讲人:张云聪 目录 什么是贪心算法 贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。 贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题他能产生整体最优解或者是整体最优解的近似解。 贪心算法的一般性质 能够使用贪心算法的问题必须满足下面的两个性质: 1.整体的最优解可以通过局部的最优解来求出; 2.一个整体能够被分为多个局部,并且这些局部都能够求出最优解。 NYOJ-6 喷水装置(一) 现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个喷水装置的效果都会让以它为中心的半径为实数Ri(0Ri15)的圆被湿润,这有充足的喷水装置i(1i600)个,并且一定能把草坪全部湿润,你要做的是:选择尽量少的喷水装置,把整个草坪的全部湿润。 解题思路 这个题目思路很容易想,肯定是优先使用半径大的喷水装置。因为半径越大的喷水装置所能覆盖的范围就越大。 其实这个确定优先选择哪一个的过程就是贪心选择的过程。 所以本题就是先对所有的喷水装置半径排序,计算出,每个喷水装置所能覆盖的长度。每次都选出当前半径最大的,直到能覆盖完所有的草地。 NYOJ-14 活动安排问题 学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办。小刘的工作就是安排学校小礼堂的活动,小礼堂只有上午,下午和晚上三个时间段能安排活动,每个时间段最多安排一个活动,每个活动可能占用多个时间段。为了方便,小刘按时间表顺序把所有时间段分别编号为1,2,3,4…,现在给你一些活动计划的时间表,小刘想尽可能的安排更多的活动,请问他该如何安排。 如:活动1:3号时间段到10号时间段(包括10号时间段,下同) 活动2:4号时间段到6号时间段 活动3:7号时间段到15号时间段 活动4:1号时间段到5号时间段 活动5:2号时间段到3号时间段 小刘应该选择:活动2,活动3,活动5 思考 做这道题目的时候,我们先来想一下下面的情况:如果有两个活动让你选择一个,它们的结束时间一前一后,那么,我们应该选择哪一个才能有利于之后选取更多的活动呢? 思考 经过思索,我们发现,在只有两个我们应该选择的是结束时间较早的那个活动。 推广 同样,在有一大堆活动时,我们最先应该选择结束时间最早的那个,以利于之后能安排更多的活动,然后,再在剩下的可选的会场中选择最可能结束时间最早的那个,依次类推,直到无法安排任何活动为止。 也就是说,每次选择时,都应该贪婪的选择结束时间最短的那个活动。 贪心算法的证明 贪心算法是从局部的最优解去找全局的最优解,所以很有可能就像我们一样,只看眼前不看长远的话,很有可能是会走错路的。 所以,证明贪心算法的正确性就是一件极为重要的问题。 会场安排问题的证明 一般,贪心算法的证明多使用反证法。 现在我来和大家一起证明一下本题所使用的贪心策略的正确性。 先假设存在一种方案B比我们刚才所说的方案A更好,也就是说,方案B能选出更多的活动。 现在假设方案B在第一次选择时没有选择结束时间最早的方案,则,方案B在选择第一个方案之后,剩余的方案中,起始时间一定要比方案A晚。所以方案B一定不可能比方案A选择出更多的活动。 如果方案B在第一次与方案A选择了相同的活动,而之后哪一次与方案A不同的话,则从此次之后,必然还会出现上面所说的情形。 故方案B一定不可能选出比方案一更多的活动。 所以,方案A就是最好的方案。 NYOJ-47 过河问题 在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥去的。不幸的是,N个人一共只带了一只手电筒,而桥窄得只够让两个人同时过。如果各自单独过桥的话,N人所需要的时间已知;而如果两人同时过桥,所需要的时间就是走得比较慢的那个人单独行动时所需的时间。问题是,如何设计一个方案,让这N人尽快过桥。 贪心算法 贪心算法是一种极为重要的算法,在哈夫曼树,最小生成树的Prim算法,Kruskal算法,单源最短路径的dijkstra等许多经典算法都是以贪心算法为基础。 一般而言,一个问题,如果能够使用贪心算法,贪心算法都是一种极为高效的选择。 思考题 思考: 一、如果有四个人,过河的方案有哪几种,该如根据什么来选取方案。 (a+c与2*b的关系) 二、如果有五个人,过河方案应如何选取。 STL 上面这么多贪心算法的题目,几乎都统一用到了一种很基本的算法,不知道大家发现没有。 那就是排序。 可以说,对许多人来说,排序真的是很难,光一个最简单的冒泡排序就得让一个初学者写很久的代码。 其实,排序其实

文档评论(0)

skewguj + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档