1 / 113
文档名称:

(算法分析设计)第4章贪心算法.ppt

格式:ppt   大小:5,482KB   页数:113页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

(算法分析设计)第4章贪心算法.ppt

上传人:autohww 2017/9/7 文件大小:5.35 MB

下载得到文件列表

(算法分析设计)第4章贪心算法.ppt

文档介绍

文档介绍:1
第4章贪心算法
2
学习要点
理解贪心算法的概念。
掌握贪心算法的基本要素
(1)最优子结构性质
(2)贪心选择性质
理解贪心算法与动态规划算法的差异
动态规划算法:
(1)最优子结构性质
(2)重叠子问题性质
3
理解贪心算法的一般理论
通过应用范例学习贪心设计策略
(1)活动安排问题;
(2)最优装载问题;
(3)哈夫曼编码;
(4)单源最短路径;
(5)最小生成树;
(6)多机调度问题。
4
贪心算法的基本思想
适用于最优化问题的算法往往包含一系列步骤,每一步都有一组选择。对某些问题动态规划算法不是最简便的方法,因为有时并不需要知道所有子问题的解。
有些问题用动态规划算法有“杀鸡用牛刀”的嫌疑,贪心算法更简捷。
5
例:找零钱问题
假设有四种硬币,它们的面值分别为二角五分、一角、五分和一分。
现在要找给某顾客六角三分钱。
这时,我们会不假思索地拿出2个二角五分的硬币,1个一角的硬币和3个一分的硬币交给顾客。
这种找硬币方法与其他的找法相比,所拿出的硬币个数是最少的。这里,我们下意识地使用了这样的找硬币算法: 首先选出一个面值不超过六角三分的最大硬币,即二角五分;然后从六角三分中减去二角五分,剩下三角八分;再选出一个面值不超过三角八分的最大硬币,即又一个二角五分,如此一直做下去。这个找硬币的方法实际上就是贪心算法。
6
贪心算法(greedy algorithm):作出在当前看来最好的选择
贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。
希望贪心算法得到的最终结果也是整体最优的。虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解。如单源最短路经问题,最小生成树问题等。需满足贪心选择性质。
在一些情况下,即使贪心算法不能得到整体最优解,其最终结果却是最优解的很好近似。
7
活动安排问题
活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合,是可以用贪心算法有效求解的很好例子。该问题要求高效地安排一系列争用某一公共资源的活动。贪心算法提供了一个简单、漂亮的方法使得尽可能多的活动能兼容地使用公共资源。
8
设有n个活动的集合E={1,2,…,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,且si <fi 。如果选择了活动i,则它在半开时间区间[si, fi)内占用资源。
若区间[si, fi)与区间[sj, fj)不相交,则称活动i与活动j是相容的。也就是说,当si≥fj或sj≥fi时,活动i与活动j相容。
要在所给的活动集合中选出最大的相容活动子集合
9
template<class Type>
void GreedySelector(int n, Type s[], Type f[], bool A[])
{
A[1]=true;
int j=1;
for (int i=2;i<=n;i++) {
if (s[i]>=f[j]) { A[i]=true; j=i; }
else A[i]=false;
}
}
下面给出解活动安排问题的贪心算法GreedySelector :
各活动的起始时间和结束时间存储于数组s和f中且按结束时间的非减序排列
算法用集合A存储所选择的活动,活动i在集合A中,当且仅当A[i]=true
变量j记录了最近一次加入A的活动。由于输入的活动以其完成时间的非减序排列,所以fj总是当前集合A中所有活动的最大结束时间。算法一开始选择活动1,并将j初始化为1.
若能相容则将活动i加入已选择活动集合A中,如不相容,则不选择活动i,而继续检查下一个活动与集合A中的活动相容性。
由于fj总是当前集合A中所有活动的最大结束时间,故活动i和当前集合A中所有活动相容的充分必要条件是其开始时间不早于最近加入集合A的活动j的结束时间fj,即si≥fj。若活动i与之相容,则i成为最近加入集合A中的活动,并取代活动j的位置。
10
由于输入的活动以其完成时间的非减序排列,所以算法greedySelector每次总是选择具有最早完成时间的相容活动加入集合A中。
直观上,按这种方法选择相容活动为未安排活动留下尽可能多的时间。也就是说,该算法的贪心选择的意义是使剩余的可安排时间段极大化,以便安排尽可能多的相容活动。
算法greedySelector的效率极高。当输入的活动已按结束时间的非减序排列,算法只需O(n)的时间安排n个活动,使最多的活动能相容地使用公共资源。如果所给出的活动未按非减序排列,可以用O(nlogn)的时间重排。

最近更新

一年级语文下册期末试题(A4版) 5页

夏季森林防火应急预案(精选6篇) 20页

园长开学教职工大会讲话稿范文(精选8篇) 12页

室内设计两年内职业规划与设计 5页

三年级语文下册期末试卷附答案 6页

冬日里的那抹温暖作文2篇 3页

初三化学上学期化学是一门以实验为基础的科学.. 18页

宠物大学生职业生涯规划书 5页

关于感恩作文400字汇总7篇 6页

关于助学金申请书集合8篇 16页

六一儿童节的致辞范文(精选5篇) 6页

五年级语文下册期末测试及答案 8页

八年级语文吆喝3公开课一等奖课件赛课获奖课件.. 19页

人教版一年级上册语文《期中》考试【参考答案.. 5页

人事档案管理制度(精选8篇) 21页

为妈妈过生日作文合集13篇 10页

人教版一年级语文下册期末考试卷及答案(完整).. 4页

下雪三年级作文300字汇编6篇 4页

墓地销售合同(2025版) 14页

【精选】大班社会教案4篇 9页

多家公司合作协议合同范本(2025版) 15页

人教版二年级数学上册四单元试卷及答案2019(二.. 14页

人教版二年级数学上册期中考试题(免费) 6页

【精】伟大的母爱的作文5篇 5页

【推荐】观察蝴蝶作文(精选28篇) 18页

人教版二年级语文上册期末测试卷(1套) 5页

《奇迹男孩》读后感400字(通用2篇) 2页

安全之道,从我做起-提升安全意识,构筑无患工.. 39页

学术研究交流会:管理学研究报告-管理学研究探.. 23页

培训计划与效果分析-人力资源培训专员 24页