- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
三、贪心策略与其他算法的区别 1.贪心与递推:与递推不同的是,贪心法中推进的每一步不是依据某一固定的递推式,而是当前看似最佳的贪心决策,不断的将问题归纳为更加小的相似的子问题。所以归纳、分析、选择正确合适的贪心策略,是正确解决贪心问题的关键。 2.贪心与动态规划:与动态规划不同的是,贪心是鼠目寸光;动态规划是统揽全局。 四、贪心策略的证明 贪心策略能否适用,关键看在贪心的策略下,局部的最优解能否得到全局最优解。要看是否得到最优解,就要看贪心选择特征的证明了。常用的证明法有反证法和构造法。 1.反证法:顾名思义,对于当前的贪心策略,否定当前的选择,看看是否能得到最优解,如果不能得到,说明当前贪心策略是正确的;否则,当前策略不正确,不可用。 2.构造法:对于题目给出的问题,用贪心策略时,把问题构造成已知的算法或数据结构,以此证明贪心策略是正确的。 五、几个简单的贪心例子 贪心策略 例题1:排队问题 【问题描述】在一个食堂,有n个人排队买饭,每个人买饭需要的时间为Ti,请你找出一种排列次序,使每个人买饭的时间总和最小。 【输入文件】输入文件共两行,第一行为n;第二行分别表示第1个人到第n个人每人买饭的时间T1,T2…,Tn。 【输出文件】输出文件仅一行为买饭的时间总和。 【样例输入】 6 5 3 7 1 9 10 【样例输出】 90 【思路点拨】假设取水的人按照1...n的顺序排列的,那么问题就转化为求以下公式的最小值: Total=T1+(T1+T2)+(T1+T2+T3)+...+(T1+T2+...+Tn),对公式换个写法: Total=nT1+(n-1)T2+(n-2)T3...+2Tn-1+Tn 现在你是否发现一点什么呢? 如果让T1=T2=T3=.....=Tn,也就是把接水时间少的人尽可能排在前面,总的等待时间就最少了。问题的本质就转变为把n个等待时间按照非递减的顺序排序,求出总和即可。 【证明】反证法。假设这种排列不正确,则交换T2和T3,有: Total‘=nT1+(n-1)T3+(n-2)T2...+2Tn-1+Tn 由于T2=T3,故Total‘=Total,两者相比较,可知有序的序列能得到最优的方案。 对于其他位置的改变可以采用同样的方法证明。用反证法证明时,关键是证明反例不成立,由此推出原方案是最优的。 问题推广1:排队打水问题 【问题描述】有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请编程找出这n个人排队的一种顺序,使得这n个人的平均等待时间最小。 【输入文件】输入文件共两行,第一行为n;第二行分别表示第1个人到第n个人每人的接水时间T1,T2…,Tn。 【输出文件】输出文件仅一行为最小的平均等待时间。 【样例输入】 6 5 3 7 1 9 10 【样例输出】 15 【思路点拨】首先需要理解平均等待时间的概念。平均等待时间就是每个人的等待时间之和再除以n,因为n是个常数,所有等待时间之和最小也就等同于平均等待时间最小。 这样就转化为前面的问题了? 问题推广2:排队打水问题 【问题描述】有n个人排队到r个水龙头去打水,他们装满水桶的时间T1、T2…,Tn为整数且各不相等,应如何安排他们的打水顺序才能使他们总共花费的时间最少? 【文件输入】输入文件共计两行,第一行n,r(n=500,r=75),第二行为n个人打水所用的时间Ti (Ti=100); 【文件输出】输出文件只有一行为n个人打完水的最少总共花费时间。 【样例输入】 3 2 1 2 3 4 【样例输出】13 例题2:打包 某工厂生产出的产品都要被打包放入正四棱柱的盒子内,所有盒子的高度为h,但地面尺寸不同,可以为 1x1、2x2、3x3、4x4、5x5、6x6。如下图所示。 这些盒子将被放入高度为h,地面尺寸为6x6的箱子中。为了降低运送成本,工厂希望尽量减少箱子的数量。如果有一个好算法,能使箱子的数量降到最低,这将给工厂节省不少的资金。请你编写一个程序。 分析 分析 例题3:均分纸牌(NOIP2002) 有N堆纸牌,编号分别为 1,2,…,N。每堆上有若干张,但纸牌总数必为N的倍数。可以在任一堆上取若于张纸牌,然后移动。 移牌规则为:在编号为1堆上取的纸牌,只能移到编号为2的堆上;在编
您可能关注的文档
最近下载
- 《信息技术与人工智能[Windows 10+WPS 365]》教案 项目三 数据洞察——WPS电子表格处理.docx VIP
- 23CJ87-1 采光、通风、消防排烟天窗(一)(1).pdf VIP
- 高中数学情境化教学中的AI辅助教学策略研究与应用教学研究课题报告.docx
- 水稻机收减损技术课件最新完整版本.pptx VIP
- 第二章-品牌管理基础课件.ppt VIP
- 三年级英语经典测试题听力及答案.docx VIP
- 机械制图习题集刘合荣课后习题答案解析.pdf
- 《信息技术与人工智能[Windows 10+WPS 365]》教案 项目二 文字管家——WPS文档处理.docx VIP
- 延迟焦化之分馏系统.pptx VIP
- 智能护理:人工智能驱动的医疗创新.pptx VIP
原创力文档


文档评论(0)