- 1、本文档共53页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[数学]152 贪心算法
《计算概论A》C++程序设计贪心算法
崔 斌
什么是贪心法
找硬币的例子
假设有四种硬币,面值分别为二角五分、一角、五分和一分。现在要找给顾客六角三分钱。
如何使找给顾客的硬币数最少?
方案:2个二角五分,1个一角和3个一分。
背后的想法:每次都首先选择面值最大的硬币,如果剩余钱不够再选择面值次大的硬币……
------贪心法的思想
背包问题:
给定n种物品和一个背包,设Wi为物体i的重量,Vi为期价值,C为背包的承重量。要求在背包的承重量的限制下,进可能使背包中物品的价值最大。
贪心策略一:每次选择价值最大的物品。
贪心策略二:每次选择重量最小的物品。
贪心策略三:每次选择Vi/Wi最大的物品
什么是贪心法?
“鼠目寸光”的方法?每次选择面值最大的硬币还是能得到正确结果的
贪心法在求解问题时,每一步选择的都是当前看来最好的选择;贪心法的关键是决定每一步该怎么做。每次都试图选择面值最大的硬币
通过一系列小的步骤构成一个解,在每一步根据局部情况作出最优策略,构成问题的最优解把每一步选择的最大面值的硬币交给客户就是硬币总个数最少的方案
一:事件序列问题
问题的描述
已知N = 12个事件的开始时刻和结束时刻,一些在时间上没有重叠的事件可以构成一个事件序列,事件序列包含的事件数目称为事件序列的长度。
要求找出一个最长的事件序列。
贪心策略一:每一步选择最早开始事件?
贪心策略二:每一步选择最短事件?
把所有的事件按结束时间由小到大排序,每一步选择结束时间最早的事件,并且和所选事件不重叠
不重叠: a事件的结束时刻小于等于b 事件的开始时刻
end[a] = begin[b]
这时a事件和b事件不重叠,即为a b
begin[N],end[N]
select[N]记录其它被选中的事件, 0为选,1选中
select[0]=1;无条件选择第一个事件
如何做到不重叠?
begin[i] = 上一个事件结束的时间
上一个事件结束的时间 = end[i-1]
begin[i] start_time;
select[i] = 1;
start_time = end[i];
#include iostream
using namespace std;
const int N = 12;
void OutputResult(int select[], int N) //输出结果函数
{
for(int i = 0; i N; i++)
{
if(select[i] == 1) //当标记为1时该事件被选中
cout i endl;
}
}
int main()
{
int begin[N] = {1, 3, 0, 3, 2, 5, 6, 4, 10, 8, 15, 15}; //开始时间
int end[N] = {3, 4, 7, 8, 9, 10, 12, 14, 15, 18, 19, 20}; //结束时间
int select[N] = {0}; //标记选取哪些事件
int i = 0; //当前最早结束的事件
int time_start = 0; //当前情况下可选事件的最早开始事件
while(i N) //每次选择结束时间最早的事件
{
if(begin[i] = time_start) //时间不重叠
{
select[i] = 1; //选择事件i
time_start = end[i]; //更新后面事件的最早开始时间
}
i++;
}
OutputResult(select, N); //输出被选择事件
return 0;
}
小结 1
贪心法的解题步骤
从问题的某个初始条件出发事件序列初始为空,第
您可能关注的文档
- [教育学]形势与政策教育基础部 韩俊香 1011_2利比亚.ppt
- [教育学]形势政策与国情教育师资队伍和阵容建设.doc
- [教育学]彩蛋:教你“偷”电影第三次课程.ppt
- [教育学]微电子教改班培养方案doc.doc
- [教育学]当代大学生综合素质现状分析及教育途径.doc
- [教育学]心理咨询师真题解析.ppt
- [教育学]心理学最终版复习资料.doc
- [教育学]情境、任务教学法概述.doc
- [教育学]心理测量与评估.doc
- [教育学]情境四 应用IO口.ppt
- 师缘主题课件最新完整版本.pptx
- 基于偏好MOEA_D算法的气发动机多目标优化标定研究.pdf
- 师范技能课件比赛一等奖最新完整版本.pptx
- 师范生初中美术说课课件最新完整版本.pptx
- 师范技能课件图片素材库最新完整版本.pptx
- Unit 2 Making a Difference Understanding ideas The Well that changed the world 教学设计-高中英语外研版(2019)必修第三册.docx
- 师范生技能大赛PPT课件语文最新完整版本.pptx
- 基于扭矩的双燃料发动机控制策略研究.pdf
- 1.2.1 等差数列的概念及其通项公式(教学设计)高二数学(北师大版2019选择性必修第二册).docx
- 师范文化课件最新完整版本.pptx
文档评论(0)