




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
算法设计与分析论文题目贪心算法应用研究姓名学院信息工程专业班级学号任课教师目录摘要11绪论22贪心算法的基本知识概述321贪心算法定义322贪心算法的基本思路及实现过程323贪心算法的核心324贪心算法的基本要素425贪心算法的理论基础626贪心算法存在的问题73贪心算法经典应用举例831删数问题832汽车加油问题1033会场安排问题124总结175参考文献18摘要在求最优解问题的过程中,依据某种贪心标准,从问题的初始状态出发,直接去求每一步的最优解,通过若干次的贪心选择,最终得出整个问题的最优解,这种求解方法就是贪心算法。从贪心算法的定义可以看出,贪心法并不是从整体上考虑问题,它所做出的选择只是在某种意义上的局部最优解,而由问题自身的特性决定了该题运用贪心算法可以得到最优解。贪心算法所作的选择可以依赖于以往所作过的选择,但决不依赖于将来的选择,也不依赖于子问题的解,因此贪心算法与其它算法相比具有一定的速度优势。如果一个问题可以同时用几种方法解决,贪心算法应该是最好的选择之一。本文讲述了贪心算法的含义、基本思路及实现过程,贪心算法的核心、基本性质、特点及其存在的问题。并通过贪心算法的特点举例列出了以往研究过的几个经典问题,对于实际应用中的问题,也希望通过贪心算法的特点来解决。关键词贪心算法最小生成树多处最优服务次序问题删数问题1绪论为了满足人们对大数据量信息处理的渴望,为解决各种实际问题,计算机算法学得到了飞速的发展,线性规划、动态规划、贪心策略等一系列运筹学模型纷纷运用到计算机算法学中,产生了解决各种现实问题的有效算法。虽然设计一个好的求解算法更像是一门艺术而不像是技术,但仍然存在一些行之有效的、能够用于解决许多问题的算法设计方法,你可以使用这些方法来设计算法,并观察这些算法是如何工作的。一般情况下,为了获得较好的性能,必须对算法进行细致的调整。但是在某些情况下,算法经过调整之后性能仍无法达到要求,这时就必须寻求另外的方法来求解该问题。当一个问题具有最优子结构性质和贪心选择性质时,贪心算法通常会给出一个简单、直观和高效的解法。贪心算法通过一系列的选择来得到一个问题的解。它所作的每一个选择都是在当前状态下具有某种意义的最好选择,即贪心选择;并且每次贪心选择都能将问题化简为一个更小的与原问题具有相同形式的子问题。尽管贪心算法对许多问题不能总是产生整体最优解,但对诸如最短路径问题、最小生成树问题,以及哈夫曼编码问题等具有最优子结构和贪心选择性质的问题却可以获得整体最优解。而且所给出的算法一般比动态规划算法更加简单、直观和高效。2贪心算法的基本知识概述21贪心算法定义贪心算法可以简单描述为对一组数据进行排序,找出最小值,进行处理,再找出最小值,再处理。也就是说贪心算法是一种在每一步选择中都采取在当前状态下最好或最优的选择,从而希望得到结果是最好或最优的算法。贪心算法是一种能够得到某种度量意义下的最优解的分级处理方法,通过一系列的选择来得到一个问题的解,而它所做的每一次选择都是当前状态下某种意义的最好选择,即贪心选择。即希望通过问题的局部最优解来求出整个问题的最优解。这种策略是一种很简洁的方法,对许多问题它能产生整体最优解,但不能保证总是有效,因为它不是对所有问题都能得到整体最优解,只能说其解必然是最优解的很好近似值。22贪心算法的基本思路及实现过程221贪心的基本思想用局部解构造全局解,即从问题的某一个初始解逐步逼近给定的目标,以尽可能快地求得更好的解。当某个算法中的某一步不能再继续前进时,算法停止。贪心算法思想的本质就是分治,或者说分治是贪心的基础。每次都形成局部最优解,换一种方法说,就是每次都处理出一个最好的方案。利用贪心策略解题,需要解决两个问题(1)该题是否适合于用贪心策略求解;(2)如何选择贪心标准,以得到问题的最优/较优解。222贪心算法的实现过程(1)应用同一规则F,将原问题变为一个相似的、但规模更小的子问题;(2)从问题的某一初始解出发WHILE(能朝给定目标前进一步)求出可行解的一个解元素;(3)由所有解元素组合成问题的一个可行解。23贪心算法的核心贪心算法的核心问题是选择能产生问题最优解的最优度量标准,即具体的贪心策略。贪心策略是指从问题的初始状态出发,通过若干次的贪心选择而得出最优值或较优解的一种解题方法。其实,从“贪心策略”一词我们便可以看出,贪心策略总是做出在当前看来是最优的选择,也就是说贪心策略并不是从整体上加以考虑,它所做出的选择只是在某种意义上的局部最优解,而许多问题自身的特性决定了该题运用贪心策略可以得到最优解或较优解。24贪心算法的基本要素241贪心选择性质所谓贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。这是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。在动态规划算法中,每步所做的选择往往依赖于相关子问题的解。因而只有在解出相关子问题后,才能做出选择。而在贪心算法中,仅在当前状态下做出最好选择,即局部最优选择。然后再去解做出这个选择后产生的相应的子问题。贪心算法所做的贪心选择可以依赖于以往所做过的选择,但决不依赖于将来所做的选择,也不依赖于子问题的解。正是由于这种差别,动态规划算法通常以自底向上的方式解各子问题,而贪心算法则通常以自顶向下的方式进行,以迭代的方式做出相继的贪心选择,每做一次贪心选择就将所求问题简化为规模更小的子问题。对于一个具体问题,要确定它是否具有贪心选择性质,必须证明每一步所做的贪心选择最终导致问题的整体最优解。首先考察问题的一个整体最优解,并证明可修改这个最优解,使其以贪心选择开始。做了贪心选择后,原问题简化为规模更小的类似子问题。然后,用数学归纳法证明,通过每一步做贪心选择,最终可得到问题的整体最优解。其中,证明贪心选择后的问题简化为规模更小的类似子问题的关键在于利用该问题的最优子结构性质。242最优子结构性质当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。运用贪心策略在每一次转化时都取得了最优解。问题的最优子结构性质是该问题可用贪心算法或动态规划算法求解的关键特征。贪心算法的每一次操作都对结果产生直接影响,而动态规划则不是。贪心算法对每个子问题的解决方案都做出选择,不能回退;动态规划则会根据以前的选择结果对当前进行选择,有回退功能。动态规划主要运用于二维或三维问题,而贪心一般是一维问题。243贪心算法的特点贪心算法的最大特点就是快,通常是线性二次式,不需要多少额外的内存。一般二次方级的存储要浪费额外的空间,而且那些空间经常得不出正解。但是,使用贪心算法时,这些空间可以帮助算法更容易实现且更快执行。如果有正确贪心性质存在,那么一定要采用。因为它容易编写,容易调试,速度极快,并且节约空间。几乎可以说,此时它是所有算法中最好的。但是应该注意,贪心算法有两大难点(1)如何贪心怎样用一个小规模的解构造更大规模的解呢总体上,这与问题本身有关。但是大部分都是有规律的。正因为贪心有如此性质,它才能比其他算法快。具有应当采用贪心算法的问题,当“贪心序列”中的每项互异且当问题没有重叠性时,看起来总能通过贪心算法取得(近似)最优解的。或者,总有一种直觉在引导我们对一些问题采用贪心算法。其中“找零钱”这个问题就是一个例子。题中给出的硬币面值事实上具有特殊性,如果面值发生变化,可能贪心算法就不能返回最优解了。但是,值得指出的是,当一个问题具有多个最优解时,贪心算法并不能求出所有最优解。另外,我们经过实践发现,单纯的贪心算法是顺序处理问题的;而且每个结果是可以在处理完一个数据后即时输出的。(2)贪心的正确性要证明贪心性质的正确性,才是贪心算法的真正挑战,因为并不是每次局部最优解都会与整体最优解之间有联系,往往靠贪心算法生成的解不是最优解。这样,贪心性质的证明就成了贪心算法正确的关键。对某些问题贪心性质也许是错的,即使它在大部分数据中都是可行的,但还必须考虑到所有可能出现的特殊情况,并证明该贪心性质在这些特殊情况中仍然正确。而这样容易陷入证明不正确贪心性质的泥塘中无法自拔,因为贪心算法的适用范围并不大,而且有一部分极难证明,若是没有把握,最好不要冒险,还有其他算法会比它要保险。25贪心算法的理论基础正如前文所说的那样,贪心策略是最接近人类认知思维的一种解题策略。但是,越是显而易见的方法往往越难以证明。下面我们就来介绍贪心策略的理论拟阵。“拟阵”理论是一种能够确定贪心策略何时能够产生最优解的理论,虽然这套理论还很不完善,但在求解最优化问题时发挥着越来越重要的作用。拟阵M定义为满足下面3个条件的有序对(S,I)(1)S是非空有限集;(2)I是S的一类具有遗传性质的独立子集族,即若BI,则B是S的独立子集,且B的任意子集也都是S的独立子集。空集必为I的成员;(3)I满足交换性质,即若AI,BI且|A|XK,则有NLINCLUDEUSINGNAMESPACESTDINTMAINSTRINGNINTS,I,X,L,MPRINTF“请输入一个正整数和将要删去的个数N“WHILECINNSI1,M0,X0LNLENGTHWHILEXNI1/出现递减,删除递减的首数字NNERASEI,1X/X统计删除数字的个数I1/从头开始查递减区间IFILX2INTPARTITIONINTA,INTLOW,INTHIGH/划分INTI,JINTXALOWILOWJHIGHWHILEIAIII1IFI1N1FORIBS/有一个活动结束,新活动可在已空闲的会场进行。SELSEN/要增开一会场RETURNNINTMAININTNCINNINTSTNEWINTNINTETNEWINTNFORINTI0ISTIETIQUICKSORTST,0,N1QUICKSORTET,0,N1COUTSCHEDULEST,ET,0,N1ENDLDELETESTDELETEETRETURN0输入文件示例输出文件示例INPUTTXTOUTPUTTXT531231228253527803650编码分析根据会场安排问题的定义,首先将问题简化为找出两个活动,若EI和EJ满足SIFJ或SJFI,则称这两个活动相容,即问题转化为要求找出最多相容会场集合A。问题简化为对相容会场A的寻找,下面用贪心方法分析过程,根据题意,选取一种量度标准,然后按量度标准对N个输入排序,按顺序一次输入一个量。如果这个输入和当前已构成在这种量度意义下的部分最优解加在一起不能产生一个可行解,则不把此输入加到这部分解中,这种能够得到某种量度意义下的最优解的分级处理方法就是贪心方法。那么问题转化为对度量标准的寻找,判断各个数据是否可以包含在解向量中去,然后根据目标函数来选择最优解。贪心算法(1)将所有活动按结束时间排序,得到活动集合EE1,E2,EN;(2)先将E1选入结果集合A中,即AE1;(3)依次扫描每一个活动EI如果EI的开始时间晚于最后一个选入A的活动EJ的结束时间,则将EI选入A中,否则放弃EI。最优解证明若EE1,E2EN是按结束时间排序的活动集合,则E1具有最早的结束时间,设存在一个最优安排A不包含E1,并以EI开始,则易见AEIE1也是最优的活动安排;依此类推,即可推出上述活动都为A中的不相容最优活动。俗话所的好的纸上得来终觉浅,绝知此事要躬行那么让我们举个例子来进一步清晰化问题下面表格有12个活动,并给出各个活动的开始时间与结束时间,那么请用上述贪心解法分析并求解最优会场数目。如表81所示。表81会场活动安排表活动I1234567891011开始时间S(I)130535688212结束时间E(I)4567891011121314(1)根据贪心策略现将112个活动的结束时间排序(为解说方便上表格已经排好)排序可用快速排序。(2)毋庸置疑将E1先分配入会场集合A1,然后按照顺序找出下个活动,使得其开始时间小于E1的结束时间(即满足时间不冲突),如图易知为E4,再将E4分配给A1,以后每一步骤都重复如E4的选择。经过第一轮的筛选可知会场集合A1中包含A1E1,E4,E8,E11。(3)此时已经没有活动在相容于会场A1中,那么再继续对A2进行同样的选取,同理A2E2,E6A3E3,E7A4E5,E9A5E10。(4)那么得出总的会场数目S5。4总结贪心算法是很常见的算法,贪心策略是最接近人的日常思维的一种解题策略,虽然它不能保证求得的最后解一定是最佳的,但是它可以为某些问题确定一个可行性范围。贪心算法所作的选择依赖于以往所作过的选择,但决不依赖于将来的选择,这使得算法在编码和执行过程中都有一定的速度优势。对于一个问题的最优解只能用穷举法得到时,用贪心算法是寻找问题最优解的较好算法。对一个问题可以同时用几种方法解决,贪心算法并不是对所有的问题都能得到整体最优解或是最理想的近似解时,就需判断贪心性质的正确性了。与回溯法、动态规划法等比较,它的适用区域相对狭窄许多。总之,如果一个贪心解决方案存在,就可以使用它。5参考文献1严蔚敏,吴伟民数据结构C语言版M北京清华大学出版社,20072MHALSUWAIYEL算法设计技巧与分析M北京电子工业出版社,20083谭浩强C面向对象程序设
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 重冶萃取工新员工考核试卷及答案
- 焙烧炉焙烧工上岗考核试卷及答案
- 油品装卸工操作考核试卷及答案
- 充填回收工主管竞选考核试卷及答案
- 铁合金炉外法冶炼工设备调试考核试卷及答案
- 蒸馏炉工成本控制考核试卷及答案
- 地理信息应用作业员上岗考核试卷及答案
- 铸管精整工主管竞选考核试卷及答案
- 教育素养考试题及答案
- 中药药剂员工艺考核试卷及答案
- 玉石床垫讲稿课件
- 初中音乐七年级上册第一单元 红岩魂走进歌乐山
- 栈桥修复方案(全文)
- 某五星级酒店单项工程经济指标
- 交通标志牌工程施工组织设计(标准版)
- 【课件】《红烛》课件24张统编版高中语文必修上册
- 交通事故认定书复核申请书模板
- 电气一次设备吊装搬运施工方案
- “一机一档”范本(共12页)
- 长输管道施工工序
- 公司法实施条例
评论
0/150
提交评论