ImageVerifierCode 换一换
格式:DOCX , 页数:43 ,大小:104.21KB ,
资源ID:7634514      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7634514.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(贪心算法论文终稿.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

贪心算法论文终稿.docx

1、贪心算法论文终稿本科毕业论文(设计)题 目 贪心算法设计及其实际应用研究 系 别 信 息 管 理 系 专 业 计算机科学与技术 年 级 2006级 学 号 22200 姓 名 蒋 远 丽 指 导 教 师 汪 维 清 成 绩 _ 二一年五月十五日 西南大学本科毕业论文(设计)任务书论文(设计)题目 贪心算法设计及其实际应用研究 系别、专业 信息管理系计算机科学与技术 学生姓名 蒋远丽 学号 指导教师姓名 汪维清 开题日期 2009年11月28日 论文(设计)的主要内容(技术指标)与要求:本文讲述了贪心算法的含义、基本思路及实现过程,贪心算法的核心、基本性质、特点及其存在的问题。并通过贪心算法的性

2、质,通过研究几个经典问题,将贪心算法应用到实际中。进 度 安 排研究进度安排:2009年10月-2009年11月,根据课题研究的内容,收集资料2009年11月- 2009年12月,深入探讨该算法中的几个经典问题2009年12月- 2010年1月,整理研究内容,并作进一步的修改2010年1月- 2010年2月,归纳总结,形成一份完整的课题论文系意见:注:1、任务书由指导老师填写。 2、任务书必须在第七学期13周前下达给学生。文献综述贪心算法设计及其实际应用研究蒋远丽西南大学荣昌校区信息管理系,重庆荣昌 402460摘 要:在求最优解问题的过程中,依据某种贪心标准,从问题的初始状态出发,直接去求每

3、一步的最优解,通过若干次的贪心选择,最终得出整个问题的最优解,这种求解方法就是贪心算法。从贪心算法的定义可以看出,贪心法并不是从整体上考虑问题,它所做出的选择只是在某种意义上的局部最优解,而由问题自身的特性决定了该题运用贪心算法可以得到最优解。贪心算法所作的选择可以依赖于以往所作过的选择,但决不依赖于将来的选择,也不依赖于子问题的解,因此贪心算法与其它算法相比具有一定的速度优势。如果一个问题可以同时用几种方法解决,贪心算法应该是最好的选择之一。本文讲述了贪心算法的含义、基本思路及实现过程,贪心算法的核心、基本性质、特点及其存在的问题。并通过贪心算法的特点举例列出了以往研究过的几个经典问题,对于

4、实际应用中的问题,也希望通过贪心算法的特点来解决。关键词:贪心算法;哈夫曼编码;最小生成树;多处最优服务次序问题;删数问题0 引言为了满足人们对大数据量信息处理的渴望,为解决各种实际问题,计算机算法学得到了飞速的发展,线性规划、动态规划、贪心策略等一系列运筹学模型纷纷运用到计算机算法学中,产生了解决各种现实问题的有效算法。虽然设计一个好的求解算法更像是一门艺术而不像是技术 ,但仍然存在一些行之有效的、能够用于解决许多问题的算法设计方法 ,你可以使用这些方法来设计算法 ,并观察这些算法是如何工作的。一般情况下,为了获得较好的性能,必须对算法进行细致的调整。但是在某些情况下,算法经过调整之后性能仍

5、无法达到要求,这时就必须寻求另外的方法来求解该问题。当一个问题具有最优子结构性质和贪心选择性质时,贪心算法通常会给出一个简单、直观和高效的解法。贪心算法通过一系列的选择来得到一个问题的解。它所作的每一个选择都是在当前状态下具有某种意义的最好选择,即贪心选择;并且每次贪心选择都能将问题化简为一个更小的与原问题具有相同形式的子问题。尽管贪心算法对许多问题不能总是产生整体最优解,但对诸如最短路径问题、最小生成树问题,以及哈夫曼编码问题等具有最优子结构和贪心选择性质的问题却可以获得整体最优解。而且所给出的算法一般比动态规划算法更加简单、直观和高效。(1)基本知识贪心算法的含义贪心算法是通过一系列的选择

6、来得到问题解的过程。贪心算法是一种能够得到某种度量意义下的最优解的分级处理方法,它总是做出在当前看来是最优的选择,也就是说贪心策略并不是从整体上加以考虑,它所做出的选择只是在某种意义上的局部最优解算法。(2)贪心算法特点及存在的问题1)贪心算法的特点从全局来看,运用贪心策略解决的问题在程序的运行过程中无回溯过程,后面的每一步都是当前看似最佳的选择,这种选择依赖于已做出的选择,但不依赖于未做出的选择。2)贪心算法存在的问题不能保证求得的最后解是最佳的。由于贪心策略总是采用从局部看来是最优的选择,因此并不从整体上加以考虑。 贪心算法只能用来求某些最大或最小解的问题。例如找零钱问题要求得到最小数量,

7、就可以采用贪心算法,但是在另外一个求解权值最小路径时采用贪心算法得到的结果并不是最佳。 贪心算法只能确定某些问题的可行性范围。(3)经典问题解决及其优缺点1)哈夫曼编码问题提出:哈夫曼编码是广泛地用于数据文件压缩的十分有效的编码方法。其压缩率通常在20%90%之间。哈夫曼编码算法用字符在文件中出现的频率表来建立一个用0,1串表示各字符的最优表示方式。基本原理:对每一个字符规定一个0,1串作为其代码,并要求任一字符的代码都不是其它字符代码的前缀。这种编码称为前缀码。编码的前缀性质可以使译码方法非常简单。由于任一字符的代码都不是其他字符代码的前缀,从编码文件中不断取出代表某一字符的前缀码,转换为原

8、字符,即可逐个译出文件中的所有字符。可以用二叉树作为前缀编码的数据结构。在表示前缀码的二叉树中,树叶代表给定的字符,并将每个字符的前缀码看做是从树根到代表该字符的树叶的一条道路。代码中每一位的0或1分别作为指示某结点到左儿子或右儿子的“路标”。优点:哈夫曼编码是无损压缩当中最好的方法。它使用预先二进制描述来替换每个符号,长度由特殊符号出现的频率决定。常见的符号需要很少的位来表示,而不常见的符号需要很多位来表示。哈夫曼算法在改变任何符号二进制编码引起少量密集表现方面是最佳的。然而,它并不处理符号的顺序和重复或序号的序列。缺点:慢位流实现相当慢的解码(比编码慢)最大的树深度是32(编码器在任何超过

9、32位大小的时候退出)。2)单源最短路径问题提出:给定带权有向图G=(V,E),其中每条边的权是非负实数。另外,还给定V中的一个顶点,称为源。现在要计算从源到所有其它各顶点的最短路长度。这里路的长度是指路上各边权之和。这个问题通常称为单源最短路径问题。Dijkstra算法基本思想:设置顶点集合S并不断地作贪心选择来扩充这个集合。一个顶点属于集合S当且仅当从源到该顶点的最短路径长度已知。初始时,S中仅含有源。设u是G的某一个顶点,把从源到u且中间只经过S中顶点的路称为从源到u的特殊路径,并用数组dist记录当前每个顶点所对应的最短特殊路径长度。Dijkstra算法每次从V-S中取出具有最短特殊路

10、长度的顶点u,将u添加到S中,同时对数组dist作必要的修改。一旦S包含了所有V中顶点,数组dist就记录了从源到所有其它顶点之间的最短路径长度。优点:Dijkstra的思想是按递增长度来产生路径,每次选出当前已经找到的最短的一条路径,它必然是一条最终的最短路径。因此每次找出当前距离数组中最小的,必然是一条最终的最短路径缺点:对于具有n个顶点和e条边的带权有向图,如果用带权邻接矩阵表示这个图,那么Dijkstra算法的主循环体需要O(n)时间。这个循环需要执行n-1次,所以完成循环需要O(n2)时间。算法的其余部分所需要时间不超过O(n2)。3)最小生成树问题提出:设G=(V,E)是无向连通带

11、权图,即一个网络。E中每条边(v,w)的权为cvw。如果G的子图G是一棵包含G的所有顶点的树,则称G为G的生成树。生成树上各边权的总和称为该生成树的耗费。在G的所有生成树中,耗费最小的生成树称为G的最小生成树。Prim算法基本思想:首先置S=1,然后,只要S是V的真子集,就作如下的贪心选择:选取满足条件iS,jv-s,且cij最小的边,将顶点j添加到S中。这个过程一直进行到S=V时为止。在这个过程中选取到的所有边恰好构成G的一棵最小生成树。优点:该算法的特点是当前形成的集合T始终是一棵树。将T中U和TE分别看作红点和红边集,V-U看作蓝点集。算法的每一步均是在连接红、蓝点集的紫边中选择一条轻边

12、扩充进T中。MST性质保证了此边是安全的。T从任意的根r开始,并逐渐生长直至U=V,即T包含了C中所有的顶点为止。MST性质确保此时的T是G的一棵MST。因为每次添加的边是使树中的权尽可能小,因此这是一种“贪心”的策略。缺点:该算法的时间复杂度为O(n2)。与图中边数无关,该算法适合于稠密图。 Kruskal算法基本思想:首先将G的n个顶点看成n个孤立的连通分支。将所有的边按权从小到大排序。然后从第一条边开始,依边权递增的顺序查看每一条边,并按下述方法连接两个不同的连通分支:当查看到第k条边(v,w)时,如果端点v和w分别是当前两个不同的连通分支T1和T2中的顶点时,就用边(v,w)将T1和T

13、2连接成一个连通分支,然后继续查看第k+1条边;如果端点v和w在当前的同一个连通分支中,就直接再查看第k+1条边。这个过程一直进行到只剩下一个连通分支时为止。此时,这个连通分支就是G的一棵最小生成树。优点:当输入的连通带权图有e条边时,则将这些边依其权组成优先队列需要O(e)时间,在上述算法的while循环中,DeleteMin运算需要O(loge)时间,因此关于优先队列所作运算的时间为O(eloge)。实现UnionFind所需的时间为O(eloge)或O(elog*e)。所以Kruskal算法所需的计算时间为O(eloge)。缺点:当e=(n2)时,Kruskal算法比Prim算法差,但当

14、e=O(n2)时,Kruskal算法却比Prim算法好得多。Kruskal算法的时间主要取决于边数。它较适合于稀疏图。1 本课程研究的内容通过资料收集、实际调查分析,最终形成自己的观点和见解,拟定以下内容进行探析:(1)基本知识1)贪心算法的含义2)贪心算法的基本思路及实现过程3)贪心算法的核心4)贪心算法的基本性质 5)贪心算法的特点6)贪心算法存在的问题(2)经典问题解决及其优缺点1)哈夫曼编码2)单源最短路径问题(Dijkstra算法)3)最小生成树问题(Prim算法、Kruskal算法)(3)贪心算法的实际应用1)多处最优服务次序问题2)删数问题3)汽车加油问题4)最优合并问题5)会场

15、安排问题2 总结贪心算法是很常见的算法,贪心策略是最接近人的日常思维的一种解题策略,虽然它不能保证求得的最后解一定是最佳的,但是它可以为某些问题确定一个可行性范围,因此贪心策略在各级各类信息学竞赛,尤其在对NPC类问题的求解中发挥着越来越重要的作用。对于一个问题的最优解只能用穷举法得到时,用贪心算法是寻找问题最优解的较好算法。总之,充分利用贪心算法的优势,从局部最优出发,构造贪心策略比较容易,且简单易行。参考文献: 1 严蔚敏,吴伟民.数据结构(c语言版)M.北京:清华大学出版社,1997 2 算法设计技巧与分析M.北京:电子工业出版社,2004 3 谭浩强.C+面向对象程序设计M.北京:清华

16、大学出版社,20064 常友渠.贪心算法的探讨与研究M.重庆电力高等专科学报,第13卷,第13期,.5 龚雄兴,堆与贪心算法M,,2003.6 张洁,朱莉娟.贪心算法与动态规划的比较M.新乡师范高等专科科学学报,第19卷,第五期,.7 殷建平.关于贪心算法的正确性证明M.江西师范大学学报(自然科学版),第22卷增刊,.8 王晓东.计算机算法设计与分析(第3版)M北京:电子工业出版社,2007 9 余祥宣,崔国华,邹海明.计算机算法基础M.武汉:华中科技大学出版社,2000 10 卢开澄.计算机算法导引设计与分析M.北京:清华大学出版社,200311 算法设计技巧与分析M.北京电子工业出版社(影

17、印版),51-52.12 朱洪.算法设计和分析M.上海科学技术文献出版社,1989,162-163.13 王晓东.计算算法设计与分析(第二版)M.北京:电子工业出版社,2OO4.14 王晓东.算法设计与分析M.北京:清华大学出版社,2O04.15 苏德富,钟诚.计算机算法设计与分析M.北京:电子工业出版社,2001:60-62.16URL 17URL 18URL 19URL 20URL 21 MelhiM,Ipson S S, novel triangulation procedure for thinning hand written textJ.Pattern Recognition Le

18、tters,2001,22(10):1059-1071.22 Florescu D,Grunhagen A,Kossmann :A Platform for Web ServicesC. the 1st Biennial Conference on innovative Data Systems Research, 2003.西南大学本科毕业论文(设计)开题报告论文题目贪心算法设计及其实际应用研究系别专业信息管理系计算机科学与技术年 级2006级开题日期2009年11月28日学 号姓 名蒋远丽指导教师汪维清1.本课题研究意义:为了满足人们对大数据量信息处理的渴望,为解决各种实际问题,计算机算法

19、学得到了飞速的发展,线性规划、动态规划、贪心策略等一系列运筹学模型纷纷运用到计算机算法学中,产生了解决各种现实问题的有效算法。虽然设计一个好的求解算法更像是一门艺术而不像是技术,但仍然存在一些行之有效的、能够用于解决许多问题的算法设计方法,你可以使用这些方法来设计算法,并观察这些算法是如何工作的。一般情况下,为了获得较好的性能,必须对算法进行细致的调整。但是在某些情况下,算法经过调整之后性能仍无法达到要求,这时就必须寻求另外的方法来求解该问题。当一个问题具有最优子结构性质和贪心选择性质时,贪心算法通常会给出一个简单、直观和高效的解法。贪心算法通过一系列的选择来得到一个问题的解。它所作的每一个选

20、择都是在当前状态下具有某种意义的最好选择,即贪心选择;并且每次贪心选择都能将问题化简为一个更小的与原问题具有相同形式的子问题。尽管贪心算法对许多问题不能总是产生整体最优解,但对诸如最短路径问题、最小生成树问题,以及哈夫曼编码问题等具有最优子结构和贪心选择性质的问题却可以获得整体最优解。而且所给出的算法一般比动态规划算法更加简单、直观和高效。2.研究内容:(1)基本知识1)贪心算法的含义2)贪心算法的基本思路及实现过程3)贪心算法的核心4)贪心算法的基本性质 5)贪心算法的特点6)贪心算法存在的问题(2)经典问题解决及其优缺点1)哈夫曼编码2)单源最短路径问题(Dijkstra算法)3)最小生成

21、树问题(Prim算法、Kruskal算法)(3)贪心算法的实际应用1)多处最优服务次序问题2)删数问题3)汽车加油问题4)最优合并问题5)会场安排问题3.技术路线、研究方法和研究进度:(1)技术路线题目分析收集资料(网络和图书馆)阅读资料规划论文结构整理资料详细分析整理(贪心算法的基本含义、原理、实现过程、性质、特点、算法优缺点等)分析该算法的实例及其优缺点(哈夫曼编码、单源最短路径问题(Dijkstra算法)、最小生成树问题(Prim算法、Kruskal算法))挑选几个经典实例研究并用c+实现(多处最优服务次序问题、删数问题、汽车加油问题、最优合并问题)总结。(2)研究方法1)文献研究法:通

22、过查询资料来收集研究所需要的基础知识;资料收集方式:利用网络资源、查找相关书籍、收集有关研究课题内容的报刊杂志等;2)个案研究法、实验法:在资料收集完成之上,建立课题研究结构,思路清楚地对贪心算法的各方面进行分析、探讨、研究;包括:贪心算法的基本含义、基本原理和实现过程,其及贪心算法的性质、贪心算法的特点及优缺点等,分析由贪心算法解决的几个经典问题的理论以及它们各自的优缺点。从现实实际出发,从中选择几例进行深入研究,并以C+语言实现完成。3)将所研究的内容按合理的思路组合及实例实现完成一篇完整的课题论文;(3)研究进度2009年10月-2009年11月, 根据课题研究的内容,收集资料2009年

23、11月- 2009年12月, 深入探讨该算法中的几个经典问题2009年12月- 2010年1月, 整理研究内容,并作进一步的修改2010年1月- 2010年2月, 归纳总结,运行程序成功后,形成一份完整的课题论文4.导师意见: 指导教师(签名):年 月 日5.系意见: 系(盖章) 年 月 日说明:开题报告应在教师指导下由学生独立撰写。在毕业论文(毕业设计)开始二周内完成,交指导教师审阅,并接受学校和学院检查。正文贪心算法设计及其实际应用研究蒋远丽西南大学荣昌校区信息管理系,重庆荣昌 402460摘要:贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择,也就是说,不从整体最优上加以考虑

24、,他所做出的仅是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题也能产生整体最优解或者是整体最优解的近似解。本文首先介绍了贪心算法的核心、特点及算法本身存在的问题,接下来介绍了前人已经研究出来的成果,包括哈夫曼编码、单源最短路径、最小生成树等。然后结合实践,研究了多处最优服务次序问题、删数问题、汽车加油问题、最优合并问题、会场安排问题等。最后用代码实现其中的两个问题,对贪心算法的具体实现方法做了详细说明。关键字:贪心算法;哈夫曼编码;最小生成树;最优服务次序;汽车加油问题Greedy algorithm design and its practic

25、al applicationJiang YuanliDepartment of Information Management, Southwest University, Rongchang, ChongqingAbstract:Greedy algorithm is that, in the problem solving, it always made in the current appears to be the best option. In other words, not the best on the whole to be considered, he made only a

26、 local optimal solution in a sense. Greedy algorithm is not a right that all problems can be the overall optimal solution, but it covers a wide range of issues that he could produce an overall optimal solution or approximate solution of the overall optimal solution. This paper describes the core of

27、the greedy algorithm, characteristics and algorithms inherent problems, then presented the results of our predecessors has been studied out, including Huffman coding, single-source shortest path, minimum spanning tree and so on. Then with practice, study the various optimal service order issues, del

28、ete a few issues, car fuel, the optimal merger, venue arrangements and so on. At last, the code to achieve two of them on the greedy algorithm to do the concrete implementation method in detail.Key words:greedy algorithm;Huffman coding;MST;Optimal service order;Automobile refueling第1章 引言研究背景为了满足人们对大

29、数据量信息处理的渴望,为解决各种实际问题,计算机算法学得到了飞速的发展,线性规划、动态规划、贪心策略等一系列运筹学模型纷纷运用到计算机算法学中,产生了解决各种现实问题的有效算法。虽然设计一个好的求解算法更像是一门艺术而不像是技术,但仍然存在一些行之有效的、能够用于解决许多问题的算法设计方法,你可以使用这些方法来设计算法,并观察这些算法是如何工作的。一般情况下,为了获得较好的性能,必须对算法进行细致的调整。但是在某些情况下,算法经过调整之后性能仍无法达到要求,这时就必须寻求另外的方法来求解该问题。当一个问题具有最优子结构性质和贪心选择性质时,贪心算法通常会给出一个简单、直观和高效的解法。贪心算法

30、通过一系列的选择来得到一个问题的解。它所作的每一个选择都是在当前状态下具有某种意义的最好选择,即贪心选择;并且每次贪心选择都能将问题化简为一个更小的与原问题具有相同形式的子问题。尽管贪心算法对许多问题不能总是产生整体最优解,但对诸如最短路径问题、最小生成树问题,以及哈夫曼编码问题等具有最优子结构和贪心选择性质的问题却可以获得整体最优解。而且所给出的算法一般比动态规划算法更加简单、直观和高效。研究内容贪心算法的定义(是指从问题的初始状态出发,通过若干次的贪心选择而得出最优值(或较优解)的一种解题方法),贪心算法的基本要素(最优子结构性质、贪心选择性质)、贪心算法的思路及过程,贪心算法的核心(贪心

31、策略)及特性(无回溯)、探讨贪心算法存在的问题。然后分析已有成果运用贪心策略的解法(哈夫曼编码、单源最短路径问题、最小生成树等),结合实际中的例子(多处最优服务次序问题、删数问题、汽车加油问题、会场安排问题、最优合并问题),对贪心算法进行分析与运用。研究目标通过本课题的研究来探讨贪心算法理论基础以及对贪心策略在更多实例中的运用做可行的研究,为贪心算法能够运用到更多的实际中的问题作示范。研究意义贪心算法是计算机算法策略中常用的一个,往往在需要解决一些最优性问题时,都可以应用贪心算法。贪心算法的用法特点有:一是明显的贪心,一般此类应用问题本身就是贪心;二是贪心数据结构,如:堆,最小树;三是可证明贪心策略的贪心,这是我们最常见的;四是博弈、游戏策略,这些策略大多是贪心;五是求较优解或多次逼近最优解。通过用贪心算法求解以上问题,可以找到解决这些问题的最优算法,为其它的类似问题的解决有示范和例证作用。 本文组织本文从如下方面进行组织:先提出贪心算法的基

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1