




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2022-3-231第三讲第三讲贪心算法贪心算法(Greedy Algorithm)2022-3-232导引问题:导引问题:FatMouse TradeFatMouse Trade(17811781)2022-3-233所谓所谓“贪心算法贪心算法”是指:是指:在对问题求解时,总是作出在当前看来是最好当前看来是最好的选择。也就是说,不从整体上加以考虑,它所作出的仅仅是在某种意义上的局部最优解(是否是全局最优,需要证明)。2022-3-234特别说明:特别说明:若要用贪心算法求解某问题的整体最优解,必须首先证明贪心思想在该问题的应用结果就是最优解!2022-3-235用事实说话用事实说话2022-
2、3-236一、事件序列问题一、事件序列问题 已知N个事件的发生时刻和结束时刻(见下表,表中事件已按结束时刻升序排序)。一些在时间上没有重叠的事件,可以构成一个事件序列,如事件2,8,10。事件序列包含的事件数目,称为该事件序列的长度。请编程找出一个最长的事件序列。事件编号 0 1 2 3 45678910 11发生时刻 1 3 0 3 2564 10 815 15结束时刻 3 4 7 8 9 10 12 14 15 18 19 202022-3-237算法分析:算法分析:n不妨用Begini和Endi表示事件i的开始时刻和结束时刻。则原题的要求就是找一个最长的序列a1a2an,满足:Begin
3、a1Enda1= BeginanEndan可以证明,如果在可能的事件a1a2an中选取在时间上不重叠的最长序列,那么一定存在一个包含a1(结束最早)的最长序列。(证明:略)2022-3-238思考题思考题n17821782 今年暑假不今年暑假不ACAC2022-3-239 二、区间覆盖问题二、区间覆盖问题 用i来表示x轴上坐标为i-1,i的区间(长度为1),并给出M(1=M=200)个不同的整数,表示M个这样的区间。现在让你画几条线段覆盖住所有的区间,条件是:每条线段可以任意长,但是要求所画线段之和最小,并且线段的数目不超过N(1=N=M,那么显然用M条长度为1的线段可以覆盖住所有的区间,所求
4、的线段总长为M。n如果N=1,那么显然所需线段总长为:n如果N=2,相当于N=1的情况下从某处断开(从哪儿断开呢?)。n如果N=k呢?2022-3-2311三、三、JLNUJLNUOJ_1OJ_1783783 Moving Tables Moving TablesSample Input3 4 10 20 30 40 50 60 70 80 2 1 3 2 200 3 10 100 20 80 30 50 Sample Output 10 20 30 2022-3-2312算法分析:算法分析:1、如果没有交叉,总时间应该是多少?2、影响搬运时间的因素是什么?3、如果每趟处理都包含最大重叠,处理
5、后的效果是什么?4、得出什么结论?2022-3-2313贪心算法的基本步骤贪心算法的基本步骤 1、从问题的某个初始解出发。2、采用循环语句,当可以向求解目标前进一步时,就根据局部最优策略,得到一个部分解,缩小问题的范围或规模。3、将所有部分解综合起来,得到问题的最终解。2022-3-2314思考:思考:田忌赛马(田忌赛马(1745)928371748795-200-200-200928371748795-200+200+2002022-3-2315Case 1:Case 1:King: 200 180 160King: 200 180 160Tianji: 190 170 150Tianji:
6、 190 170 1502022-3-2316Case 2:Case 2:King: 200 180 160King: 200 180 160Tianji: 180 170 150Tianji: 180 170 1502022-3-2317Case 3:Case 3:King: 200 180 160King: 200 180 160Tianji: 180 155 150Tianji: 180 155 1502022-3-2318总体的思路是什么?总体的思路是什么?本题小结本题小结算法:n一:如果田忌的最快的马比齐威王最快的马快,则用它来比,先赢一场;n二:如果田忌的最慢的马比齐威王最慢的马快
7、,也用它来比,先赢一场;n三:如果不同于前两种情况的任何一种情况都是用田忌的最慢的马来和齐威王最快的马比;先输一场,这叫懂得取舍2022-3-23192022-3-2320提醒:提醒:很多贪心类型的题目都象本题一样,不是最朴素的贪心,而是需要做一些变化,对于我们,关键是找到贪心的本质!2022-3-2321Kruskal 在1956年提出了1个最小生成树算法,它的思路很容易理解。设G=(V,E)是一个连通带权图,V=1,2,n。将图中的边按其权值由小到大排序,然后作如下的贪婪选择,由小到大顺序选取各条边,若选某边后不形成回路,则将其保留作为树的一条边;若选某边后形成回路,则将其舍弃,以后也不再
8、考虑。如此依次进行,到选够(n-1)条边即得到最小生成树。最小生成树(最小生成树(1664):):例如,对于下图中的带权图n各边按权值排序为:nd13=1 d46=2 d25=3 d36=4 d14 = 5nd34=5 d23=5 d12=6 d35=6 d56=62022-3-2322按Kruskal算法选取边的过程如下图所示2022-3-23232022-3-2324贪心算法的常见前提操作:贪心算法的常见前提操作: 排序!2022-3-2325关于排序关于排序n你在编程中常用的方法?n自己写?(基本功)n调用排序函数?(方便)n常用排序函数nqsort() C语言nsort() C+2022-3-2326关于关于qsort()n头文件: stdlib.hn调用示例:int cmp ( const void *a , const void *b ) return *(int *)a- *(int *)b; int num10=1,4,7,2,5,8,3,6,9,0; qsort(num,10,sizeof(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 有趣医学现象揭秘
- 销售助理工作流程标准化管理
- 2025智能家居安防监控系统合同
- 深入探索民用航空器维修人员试题及答案
- 2025关于有偿合同的违约处理
- 总结归纳2024年高级会计试题及答案
- 考生心得分享2025年一级建造师试题及答案
- 前期物业管理承包合同
- 总承包工程施工合同
- 运用理论知识的审计试题及答案
- 康复技术考试试题及答案
- 炊事人员考试题及答案
- 《埃菲尔铁塔》课件
- 形象设计概论试题及答案
- DZ∕T 0054-2014 定向钻探技术规程(正式版)
- 社会主义发展简史智慧树知到课后章节答案2023年下北方工业大学
- RULES OF ORIGIN 原产地规则
- 国内旅游出团通知书(新版)
- LETTEROFINTENTION意向书范本
- 国内各航空公司差异化服务
- 国家开放大学《管理英语3》章节测试参考答案
评论
0/150
提交评论