




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
算法设计与分析课程设计 指导老师:刘锡祥 班级:计算机11-1班 姓名:刘兵飞 学号:21实验名称: 用贪心算法解决汽车加油次数最少问题。 实验目的: (1)使学生掌握线性表、栈、队列、串、树、二叉树、图、集合等各种典 型 抽象数据类型的数学模型及其所支持基本运算的实现方法; (2)使学生掌握以抽象数据类型为模块的面向对象程序设计方法; (3)使学生提高对实际问题的分析、设计和实现能力; (4)为学生后续课程的学习及课程设计打下坚实实践基础。实验方法:贪心算法实验内容: 一、问题描述 一辆汽车加满油后可以行驶N千米。旅途中有若干个加油站。指出若要使沿途的加油次数最少,设计一个有效的算法,指出应在那些加油站停靠加油。给出N,并以数组的形式给出加油站的个数及相邻距离,指出若要使沿途的加油次数最少,设计一个有效的算法,指出应在那些加油站停靠加油。要求:算法执行的速度越快越好。 二、问题分析 对于这个问题我们有以下几种情况:设加油次数为k,每个加油站间距离为ai;i=0,1,2,3.n 1. 始点到终点的距离小于,则加油次数k=0;2.始点到终点的距离大于 N,A:加油站间的距离相等,即i=aj=L=N,则加油次数最少k=n;B:加油站间的距离相等,即i=aj=LN,则不可能到达终点; C: 加油站间的距离相等,即i=aj=LN,则加油次数k=n/N(n%N=0)或k=n/N+1(n%N!=0); D:加油站间的距离不相等,即i!=aj,则加油次数k通过以下算法求解。 三、算法描述 1.贪心算法的基本思想 该题目求加油最少次数,即求最优解的问题,可分成几个步骤,一般来说,每个步骤的最优解不一定是整个问题的最优解,然而对于有些问题,局部贪心可以得到全局的最优解。贪心算法将问题的求解过程看作是一系列选择,从问题的某一个初始解出发,向给定目标推进。推进的每一阶段不是依据某一个固定的递推式,而是在每一个阶段都看上去是一个最优的决策(在一定的标准下)。不断地将问题实例归纳为更小的相似的子问题,并期望做出的局部最优的选择产生一个全局得最优解。2.贪心算法的适用的问题贪心算法适用的问题必须满足两个属性: ()贪心性质:整体的最优解可通过一系列局部最优解达到,并且每次的选择可以依赖以前做出的选择,但不能依赖于以后的选择。 ()最优子结构:问题的整体最优解包含着它的子问题的最优解。3.贪心算法的基本步骤 ()分解:将原问题分解为若干相互独立的阶段。 ()解决:对于每一个阶段求局部的最优解。 ()合并:将各个阶段的解合并为原问题的解。问题分析 由于汽车是由始向终点方向开的,我们最大的麻烦就是不知道在哪个加油站加油可以使我们既可以到达终点又可以使我们加油次数最少。提出问题是解决的开始,为了着手解决遇到的困难,取得最优方案,我们可以假设不到万不得已我们不加油,即除非我们油箱里的油不足以开到下一个加油站,我们才加一次油。在局部找到一个最优的解。却每加一次油我们可以看作是一个新的起点,用相同的递归方法进行下去。最终将各个阶段的最优解合并为原问题的解得到我们原问题的求解。4.加油站贪心算法设计:include include int add(int b ,int m,int n) /求一个从m到n的数列的和 int sb; for(int i=m;iN) return ERROR; /如果某相邻的两个加油站间的距离大于N,则不能到达终点 if(add(ai, 0, n)N) /如果这段距离小于N,则不需要加油 bi=0;return add(bi,0,n); if(ai=aj&ai=N) /如果相邻的两个加油站间的距离都是N,每个加油站都加油 bi=1; return add(bi,0,n); if(ai=aj&aiN) /如果每相邻的两个加油站间的距离相等且都小于N if( add(ai,m,k) N ) bk=1; m+=k; return add(bi,0,n); if(ai!=aj) /如果每相邻的两个加油站间的距离不相等且都小于N if( add(ai,m,k) N ) bk=1; m+=k;return add(bi,0,n); viod main( ) int a ; scanf(%d,a); scanf(/n); scanf(/d,&N); Tanxin(a ,0,n); 5.贪心算法正确性证明:(1)贪心选择性质: 所谓贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。对于一个具体的问题,要确定它是否具有贪心性质,我们必须证明每一步所作的贪心选择最终导致问题的一个整体最优解。该题设在加满油后可行驶的N千米这段路程上任取两个加油站、,且距离始点比距离始点近,则若在加油不能到达终点那么在加油一定不能到达终点,因为m+Nn+N,即在B点加油可行驶的路程比在A点加油可行驶的路程要长n-m千米,所以只要终点不在B、C之间且在C的右边的话,根据贪心选择,为使加油次数最少就会选择距离加满油得点远一些的加油站去加油,因此,加油次数最少满足贪心选择性质。 (2)最优子结构性质: 当一个问题大的最优解包含着它的子问题的最优解时,称该问题具有最优子结构性质。由于(b1,b2,bn)是这段路程加油次数最少的一个满足贪心选择性质的最优解,则易知若在第一个加油站加油时,b1=1,则(b2,b3,bn)是从a2到an这段路程上加油次数最少且这段路程上的加油站个数为(a2,a3,an)的最优解,即每次汽车中剩下的油不能在行驶到下一个加油站时我们才在这个加油站加一次油,每个过程从加油开始行驶到再次加油满足贪心且每一次加油后,相当于与起点具有相同的条件,每个过程都是相同且独立,也就是说加油次数最少具有最优子结构性质。 四、贪心算法时间复杂度分析由于若想知道该在哪个加油站加油就必须遍历所有的加油站,且不需要重复遍历,所以时间复杂度为O(n)。五、实验心得:在贪心算法
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年事业单位工勤技能-河北-河北医技工一级(高级技师)历年参考题库含答案解析
- 2025年事业单位工勤技能-江苏-江苏不动产测绘员四级(中级工)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-广西-广西收银员四级(中级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-广西-广西图书资料员五级(初级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-广东-广东铸造工二级(技师)历年参考题库含答案解析
- 2025年事业单位工勤技能-广东-广东汽车修理工(技师/高级技师)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-广东-广东土建施工人员一级(高级技师)历年参考题库含答案解析
- 2020-2025年证券从业之金融市场基础知识自测模拟预测题库(名校卷)
- 2025年职业技能鉴定-铁路职业技能鉴定-铁路职业技能鉴定(铁路车站值班员)高级历年参考题库含答案解析(5套)
- 2025年职业技能鉴定-邮政储汇业务员-邮政储汇业务员高级历年参考题库含答案解析(5套)
- 07J912-1变配电所建筑构造
- 地铁车站的类型课件讲解
- 石膏深加工产品项目可行性研究报告(年产2万吨α石膏粉及20万吨高性能β石膏粉生产线项目)
- 板底加钢梁加固方案
- 全球及中国通用闪存存储(UFS)市场、份额、市场规模、趋势、行业分析报告2024-2030年
- 年产 2.5 万吨橡胶促进剂 CBS、1.7 万吨橡胶促进剂 TBBS 及 1.5 万吨橡胶促进剂 M 项目环评可研资料环境影响
- 职业技能鉴定国家题库钳工中级理论知识试卷及其答案
- 预约登记表格模板
- 船舶公司劳动人事管理制度
- 癌痛三阶梯治疗及阿片类镇痛药的合理使用
- 特斯拉更换电池标准
评论
0/150
提交评论