基于贪心算法的0_1背包问题

ComputerKnowledgeandTechnology电脑知识与技术

软件设计开发本栏目责任编辑:谢媛媛第6卷第35期(2010年12月)

基于贪心算法的0-1背包问题

陈曦

(九江学院,江西九江332005)

摘要:贪心算法是解决问题的一种算法,因其解决问题时具有简单性、直观性和高效性而备受青睐。当待解决的问题具有最优子结

构和贪心选择性质时,就可以考虑用贪心算法求解。0-1背包问题是计算机问题中一个普遍的问题,文章中详述了用贪心算法如何

解决0-1背包问题。并得出用贪心算法求解此问题能得到最优解。

关键词:0-1背包;贪心算法;动态规划中图分类号:TP312文献标识码:A文章编号:1009-3044(2010)35-10061-02

BasedontheGreedyAlgorithmof0-1KnapsackProblems

CHENXi

(JiujiangUniversity,Jiujiang332005,China)

Abstract:Thegreedyalgorithmisthesolutiontotheproblemofanalgorithm,becauseofitssolvingproblemswithsimplicity,intuitiveandtheefficiencyisfavour.Whenun-solvedproblemsthathavethemostYouZistructureandmoment-thegreedy-choiceproperties,cancon-sidertousegreedyalgorithm.0-1knapsackproblemsincomputerproblemsisacommonprobleminthetext,wasdescribedbythegreedyalgorithmtosolve0-1knapsackproblems.Andobtainedbygreedyalgorithmforsolvingthisproblemcanobtainoptimalsolutions.

Keywords:0-1knapsack;greedyalgorithm;dynamicprogramming

1算法设计与分析是一门集应用性、创造性、实践性为一体的综合性极强的课程[1-2]

一个高效的程序不仅需要“编程技巧”,更需要合理的数据组织和清晰高效的算法。当一个问题具有最优子结构时,根据其具体

情况可以用动态规划算法或者贪心算法来求解,但是问题同时具有贪心选择性质时,选择贪心算法更优,贪心算法通常会给出一个

简单、直观和高效的解法[3]。

贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,它

所做出的仅是在某种意义上的局部最优解。贪心算法并不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题它能

产生整体最优解或者是整体最优解的近似解。

作为一种算法设计技术,贪心法是一种简单的方法。与动态规划法一样,贪心法也经常用于解决最优化问题。不过与动态规划

法不同的是,贪心法在解决问题的策略上是仅根据当前已有的信息做出选择,而且一旦做出了选择,不管将来有什么结果,这个选

择都不会改变。这种局部最优选择并不能保证总能获得全局最优解,但是通常能得到较好的近似最优解。例如,平时购物找钱时,为

使找回的零钱的硬币数量最少,从最大面值的币种开始,按递减的顺考虑各币种,先尽量用大面值的币种,当不足大面值币种的金

额时才去考虑下一种较小的面值的币种。这就是在采用贪心算法。这种方法在这里总是最优,因为银行对其发行的硬币种类和硬币

面值的巧妙安排。如果只有面值分别为1,5,和11单位的硬币,而希望找回总额为15单位的硬币,按贪心算法,应找1个11单位面

值的硬币和4个1单位面值的硬币,共找回5个硬币,但是最优的解答应是3个5单位面值的硬币。

1.1贪心算法解题思路

贪心算法[4]是经常用到的一种解题方法,往往在解决最优问题时都可以用贪心算法求解。其解题思路为:1)建立数学模型来描述问题。2)把求解的问题分成若干子问题。3)对每一对问题求解,得到子问题的局部最优解。4)把子问题的解局部最优解合成原来解问题的一个解。

实现该算法的过程:

从问题的某一初始解出发;while能朝给定总目标前进do

求出可行解的一个元素;

由所有解元素组合成问题的一个可行解。

虽然贪心算法有时并不能得到最优解,但是经过证明贪心算法能提高问题的解决效率。

收稿日期:2010-10-15

作者简介:陈曦(1982-),女,江西九江人,讲师,硕士,主要研究方向为计算机应用。E-mail:xsjl@cccc.net.cnhttp://www.dnzs.net.cnTel:+86-551-56909635690964ISSN1009-3044ComputerKnowledgeandTechnology电脑知识与技术Vol.6,No.35,December2010,pp.10061-10062

10061ComputerKnowledgeandTechnology电脑知识与技术

本栏目责任编辑:谢媛媛软件设计开发第6卷第35期(2010年12月)

20-1背包问题

0_1背包问题[5-7]是指给定n件物品和一个背包,物品的重量为wi,其价值为ci,背包的容量为W,求从这n件物品中选取一部分

物品且对每件物品,要么选,要么不选,要求满足被放入背包的物品重量不超过背包的容量。所有物品的重量之和小于背包的容量。

如果所有物品的重量之和小于背包的容量,显然此时的利益为所有物品的价值之和,但实际问题一般是背包的容量小于物品的重

量和,这就要求选取适当的背包放入使得利益最大化且物品的总重量不超过背包容量。可以把某个物品装入或者不装入,拥xi表示

第i个物品,此时xi=0或xi=1;也可以只装入某个物品的一部分,此时0<=xi<=1。

假设现在有6个物品,n=6,W=90,表1给出了物品的重

量,价值和单位重量的价值。

为了得到最优解,必须把背包的容量装到最大值,即W=90,用贪心策略求解此问题,首先选择一个度量的标准,

即在每次选择的时候按照什么样的标准来选择。经过分析,

此问题可分别按照最大价值、最小重量,单位重量价值最大

的标准。分析如下:1)按照最大价值优先放的度量标准

即每次在剩余的科选物品中首先选择价值对大的,即首先选择物品3,重量为40,小于背包的总容量,按照此种策略,依次再放

物品1和2,最后背包的总容量是40+10+30=80,总价值为60+50+45=155。在剩余的物品中物品6的价值最大,但是其容量为20,大

于10,所以不能放入。对应的解空间为{1,1,1,0,0,0}。2)按照最小重量优先放的标准

即每次在剩余的可选物品中首先选择重量最小的物品,依次选择。即先选择物品1,重量为10,小于背包的总容量90,依次选择物

品5、4、6、2,选择物品的总重量为10+10+20+20+30=90,总价值为50+30+20+40+45=185,对应的解空间为{1,1,0,1,1,1}。经过对比,按照最

小重量的标准选择物品所得到的价值总量比按照最大价值的标准来选择物品所得到的价值总量要大。即重量标准优于价值标准。3)按照最大单位价值优先放的标准

即每次在剩余的可选物品中首先选择单位价值最大的物品,依次选择。经过分析,依次选择物品的顺序为1、5、6、2,此时背包的

容量为10+10+20+30=70,不足背包的总容量90,还可以放物品3的一半,总重量达到90,此时背包的总价值量为50+30+40+45+30=

195,经过比较,此种方法最优。

所以0-1背包问题的选择策略,按照最大单位价值优先选择物品,依次贪心的选择在可选的物品中单位价值最大的物品。为了

解决问题,首先对n个物品按照单位价值量排序,然后对排序以后的物品按照单位价值量最大的原则优先选择。算法如下:GeedyKnapsack(C,W,w,,x,,n)x=0v=Wfori=1tondoifw[i]<=vthenx[i]=1v=v-w[i]ifi<=nthenx[i]=v/w[i]returnx

3结论

通过分析,贪心算法解决问题效率高,时间复杂度低,有些问题用贪心算法来求解时间复杂度是线性的,同时,这种算法符合人

们的常规思维方式,而被广泛应用与推广。在实际应用中比如活动选择问题,多机调度问题都可以用此算法求解。但是如果不能每

次放入物品的一部分,而必须是完整的物体,那么用贪心算法就得不到问题的最优解,此时可考虑用动态规划算法。动态规划算法[8]

依据动态规划最优化准则,“作为整个过程的最优策略具有这样的性质:无论过去的状态和决策如何,对前面的决策所形成的状态而

言,余下的诸决策必须构成最优策略”.也就是说,不论前面的状态和策略如何,以后的最优策略只取决于由最初策略所决定的当前状

态,最优决策序列中的任何子序列都是最优的动态规划算法基本思想是将待求解问题分解成若干个子问题,先求解子问题,然后从

这些子问题的解得到原问题的解。适合于动态规划算法求解的问题,经分解得到的子问题往往不是独立的。用一个表来记录所有已

解决的子问题的答案。不管子该子问题以后是否用到,只要它被计算过,就将其结果填入表中,这就是动态规划法的基本思路。

参考文献:

[1]吴哲辉,崔焕庆.算法设计[M].北京:机械工业出版社,2008.

[2]王素立,白首华.算法分析与设计教学方法[J].湘潭师范学院学报,2005(9).

[3]王晓东.计算机算法设计与分析[M].3版.北京:电子工业出版社,2007.

[4]肖衡.浅析贪心算法[J].办公自动化,2009(18).

[5]黄娟.0-1背包问题的遗传算法求解及其改进[J].河西学院学报,2010,26(2).

[6]黄波,蔡之华.0-1背包问题及其解法研究[J].电脑知识与技术,2007(7).

[7]李艳秋,李成城.基于动态规划算法单字估价值的中文自动分词研究[J].内蒙古师范大学学报,2010,39(2).

[8]同甲佳.0-1背包问题及贪心算法应用[J].科技信息

,2010(20).表110062

合集下载

背包算法问题

背包算法问题

背包问题贪心方法 实验日志

实验题目:

1)求以下情况背包问题的最优解:n=7,M=15,(71,,pp)=(10,5,15,7,6,18,3)和(71,,ww)=(2,3,5,7,1,4,1)。

实验目的:

1. 掌握贪心方法算法思想;

2. 熟练使用贪心算法之背包问题解决相应的问题。

实验思想:

贪心方法是一种改进了的分级处理方法。它首先根据题意,选取一种量度标准。然后按这种量度标准对这n个输入排序,并按排序一次输入一个量。如果这个输入和当前已构成在这种量度意义下的部分最优解加在一起不能产生一个可行解,则不把此解输入加到这部分解中。这种能够得到某种度量意义下的最优解的分级处理方法称为贪心方法。

1.背包问题

(1)背包问题的描述:已知有n种物品和一个可容纳M重量的背包,每种物品i的重量为iw。假定将物品i的一部分ix放入背包就会得到iixp的效益,这里,10ix, 0ip。显然,由于背包容量是M,因此,要求所有选中要装入背包的物品总重量不得超过M.。如果这n件物品的总重量不超过M,则把所有物品装入背包自然获得最大效益。现需解决的问题是,这些物品重量的和大于M,该如何装包。由以上叙述,可将这个问题形式表述如下:

极 大 化 niixp1i

约束条件 Mxwnii1i

niwpxiii1,0,0,10

(2)用贪心策略求解背包问题

首先需选出最优的量度标准。不妨先取目标函数作为量度标准,即每装入一件物品就使背包获得最大可能的效益值增量。在这种量度标准下的贪心

方法就是按效益值的非增次序将物品一件件放到背包中去。如果正在考虑中的物品放不进去,则可只取其一部分来装满背包。但这最后一次的方法可能不符合使背包每次获得最大效益增量的量度标准,这可以换一种能获得最大增量的物品,将它(或它的一部分)放入背包,从而使最后一次装包也符合量度标准的要求。算法如下所示。

求解多维0-1背包问题的一种改进的遗传算法

求解多维0-1背包问题的一种改进的遗传算法

计算机科学2006Vo1.33No.7 

求解多维0—1背包问题的一种改进的遗传算法 ) 

曾智杨小帆陈静陈文斌唐荣旺 

(重庆大学计算机学院 重庆400044) 

摘要针对多维O一1背包问题,通过应用贪心法和二分搜索法的思想,本文提出了一种新的杂交算子——中值杂 

交,并且基于此算子提出了求解多维O一1背包问题的一种改进的遗传算法。最后本文通过一系列数值实验,把改进算 

法与传统的遗传算法以及其他最新的遗传算法进行比较,经过对求得近似解的精度及计算所需时间两方面的对比,验 

证了其有效性。 

关键词 多维O一1背包问题,遗传算法,中值杂交算子 

An Improved Genetic Algorithm for the Multidimensional 0—1 Knapsack Problem 

ZENGZhi YANGXiao-Fan CHEN Jing CHENWen-Bin TANGRong-Wang 

(Computer College of Chongqing University,Chongqing 400044) 

Abstract This paper proposes a new crossover operator which is called median crossover.It is designed by using the i— 

deas of the greedy algorithm and the 2一division search algorithm,and aims at the multidimensional 0-1 knapsack prob— 

lem.Based on this median crossover operator,the paper also presents an improved genetic algorithm for solving the 

multidimensional 0-1 knapsack problem.Furthermore,the efficiency of the presented method is investigated by compa— 

基于遗传算法的0/1背包问题的改进算法

基于遗传算法的0/1背包问题的改进算法

第22卷第4期 2013年7月 河南_I.建学院学报 Journal of Henan University of Urban Construction VoI.22 No.4 Ju1.2013 

文章编号:1674—7046(2013)04—0060—03 

基于遗传算法的0/1背包问题的改进算法木 

蔡照鹏,杨盛苑 

(河南城建学院计算机科学与工程学院,河南平顶山467036) 

摘要: 在分析现有遗传算法解决背包问题存在局限性的基础上,将原来的二进制编码 改为十进制实数编码,通过算法模拟收敛了搜索范围,避免了局部搜索,并在实 

验中获得了对于问题的更优近似解。 

关键词: 遗传算法;0/I背包问题;十进制实数 中图分类号:TP301.6 文献标识码:A 

作为强有力且应用广泛的随机搜索和优化方法,遗传算法可能是当今影响最广泛的进化计算方法 之一…。在过去的几年中,研究人员将更多的注意力放在工业工程领域的优化问题上,因而得到了深 

入的研究 。理论方面的研究大多是围绕该问题简单的结构,这种特点既可以深入探索许多组合特 

性,又可以通过解决一系列背包子问题来最终求解更为复杂的优化问题。从实践的角度来看,这些问题 

可以表述许多工业问题的应用,最典型的应用包括资本预算、货物装载和储存分配等 。 

在目前对背包问题的研究中,比较成熟的是使用贪心算法、回溯算法、遗传算法、动态规划算法等求 解。与其他组合优化问题类似,许多研究人员常采用遗传算法来求解背包问题 。本文提出了采用十 

进制实数表示法求解背包问题的方法。 

1背包问题描述 背包问题:假设需要从许多物品中选择一些来填充一个背包。存在n个不同的物品可以使用,每个 

物品_『具有重量埘 和费用c,,物品被装入的部分占该物品的百分比 (0 ,耋1),背包可以承重的上 

限是 。问题是如何寻找物品的最优子集从而在满足背包承重约束上线 的条件下最大化总费用,即在 

n m ∑ f W的条件下,求max(∑c,),其中m表示背包中装人的物品的个数。其中费用、重量和承重是正 角 

算法实验报告范文

算法实验报告范文

算法实验报告范文

《算法设计与分析》

实验报告

班级姓名学号

年月日

目录

实验一二分查找程序实现…………………………………………………………………03页

实验二棋盘覆盖问题(分治法).…………………………………………………………08页

实验三0-1背包问题的动态规划算法设计……………………………………………….11页

实验四背包问题的贪心算法………………………………………………………………14页

实验五最小重量机器设计问题(回溯法)………………………………………………17页

实验六最小重量机器设计问题(分支限界法)…………………………………………20页

指导教师对实验报告的评语

成绩: 指导教师签字:

年月日

2

实验一:二分查找程序实现

一、实验时间:2022年10月8日,星期二,第一、二节地点:J13#328

二、实验目的及要求目的:

1、用c/c++语言实现二分搜索算法。

2、通过随机产生有序表的方法,测出在平均意义下算法比较次数随问题规模的变化曲线,并作图。

三、实验环境

平台:Win732位操作系统开发工具:Codeblock10.05

四、实验内容

对已经排好序的n个元素a[0:n-1],现在要在这n个元素中找出一特定元素某。

五、算法描述及实验步骤

算法描述:

折半查找法也称为二分查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(logn)完成搜索任务。它的基本思想是,将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的某作比较,如果某=a[n/2]则找到某,算法终止。如果某a[n/2],则我们只要在数组a的右半部继续搜索某。二分搜索法的应用极其广泛,而且它的思想易于理解。确定算法复杂度基本步骤:1、首先设定问题规模n;2、随即产生递增数列;

3、在n个有序数中随机取一个作为待查找量,搜索之;

4、记录查找过程中的比较次数,再次生成新的有序表并查找,记录查找次数,每个数组重复10次;

算法设计与分析复习题目及答案 (3)

算法设计与分析复习题目及答案 (3)

.

. 分治法

1、二分搜索算法是利用( 分治策略)实现的算法。

9. 实现循环赛日程表利用的算法是(分治策略 )

27、Strassen矩阵乘法是利用(分治策略 )实现的算法。

34.实现合并排序利用的算法是(分治策略 )。

实现大整数的乘法是利用的算法( 分治策略 )。

17.实现棋盘覆盖算法利用的算法是(分治法 )。

29、使用分治法求解不需要满足的条件是(子问题必须是一样的 )。

不可以使用分治法求解的是(0/1背包问题 )。

动态规划

下列不是动态规划算法基本步骤的是( 构造最优解 )

下列是动态规划算法基本要素的是(子问题重叠性质 )。

下列算法中通常以自底向上的方式求解最优解的是(动态规划法 )

备忘录方法是那种算法的变形。( 动态规划法 )

最长公共子序列算法利用的算法是( 动态规划法 )。

矩阵连乘问题的算法可由(动态规划算法B)设计实现。

实现最大子段和利用的算法是( 动态规划法 )。

贪心算法

能解决的问题:单源最短路径问题,最小花费生成树问题,背包问题,活动安排问题,

不能解决的问题:N皇后问题,0/1背包问题

是贪心算法的基本要素的是(贪心选择性质和最优子结构性质)。

回溯法

回溯法解旅行售货员问题时的解空间树是( 排列树 )。

剪枝函数是回溯法中为避免无效搜索采取的策略

回溯法的效率不依赖于下列哪些因素( 确定解空间的时间) .

.

分支限界法

最大效益优先是( 分支界限法 )的一搜索方式。

分支限界法解最大团问题时,活结点表的组织形式是( 最大堆 )。

分支限界法解旅行售货员问题时,活结点表的组织形式是( 最小堆 )

优先队列式分支限界法选取扩展结点的原则是( 结点的优先级 )

在对问题的解空间树进行搜索的方法中,一个活结点最多有一次机会成为活结点的是( 分支限界法 ).

从活结点表中选择下一个扩展结点的不同方式将导致不同的分支限界法,以下除( 栈式分支限界法 )之外都是最常见的方式.

贪心算法和动态规划的区别与联系

贪心算法和动态规划的区别与联系

贪⼼算法和动态规划的区别与联系

联系

1.都是⼀种推导算法

2.都是分解成⼦问题来求解,都需要具有最优⼦结构

区别

1.贪⼼:每⼀步的最优解⼀定包含上⼀步的最优解,上⼀步之前的最优解则不作保留;

动态规划:全局最优解中⼀定包含某个局部最优解,但不⼀定包含前⼀个局部最优解,因此需要记录之前的所有的局部最优解

2.贪⼼:如果把所有的⼦问题看成⼀棵树的话,贪⼼从根出发,每次向下遍历最优⼦树即可(通常这个“最优”都是基于当前情况下显⽽易见的“最优”);这样的话,就不需要知道⼀个节点的所有⼦树情况,于是构不成⼀棵完整的树;

动态规划:动态规划则⾃底向上,从叶⼦向根,构造⼦问题的解,对每⼀个⼦树的根,求出下⾯每⼀个叶⼦的值,最后得到⼀棵完整的树,并且最终选择其中的最优值作为⾃⾝的值,得到答案

3.根据以上两条可以知道,贪⼼不能保证求得的最后解是最佳的,⼀般复杂度低;⽽动态规划本质是穷举法,可以保证结果是最佳的,复杂度⾼。

4.针对0-1背包问题:这个问题应⽐较选择该物品和不选择该物品所导致的最终⽅案,然后再作出最好选择,由此就导出许多互相重叠的⼦问题,所以⽤动态规划。

算法设计与分析复习题目及答案

WORD格式

专业资料整理

分治法

1、二分搜索算法是利用( 分治策略)实现的算法。

9. 实现循环赛日程表利用的算法是(分治策略 )

27、Strassen矩阵乘法是利用(分治策略 )实现的算法。

34.实现合并排序利用的算法是(分治策略 )。

实现大整数的乘法是利用的算法( 分治策略 )。

17.实现棋盘覆盖算法利用的算法是(分治法 )。

29、使用分治法求解不需要满足的条件是(子问题必须是一样的 )。

不可以使用分治法求解的是( 0/1背包问题 )。

动态规划

下列不是动态规划算法基本步骤的是( 构造最优解 )

下列是动态规划算法基本要素的是(子问题重叠性质 )。

下列算法中通常以自底向上的方式求解最优解的是(动态规划法

备忘录方法是那种算法的变形。( 动态规划法 )

最长公共子序列算法利用的算法是( 动态规划法 )。

矩阵连乘问题的算法可由(动态规划算法 B)设计实现。

实现最大子段和利用的算法是( 动态规划法 )。

)

贪心算法

能解决的问题:单源最短路径问题,最小花费生成树问题,背包问题,活动安排问题,

不能解决的问题:N皇后问题,0/1背包问题

是贪心算法的基本要素的是(贪心选择性质和最优子结构性质) 。

回溯法

回溯法解旅行售货员问题时的解空间树是( 排列树)。

剪枝函数是回溯法中为避免无效搜索采取的策略

回溯法的效率不依赖于下列哪些因素( 确定解空间的时间) WORD格式

专业资料整理

分支限界法

最大效益优先是(

分支界限法 )的一搜索方式。

分支限界法解最大团问题时,活结点表的组织形式是( 最大堆 )。

分支限界法解旅行售货员问题时,活结点表的组织形式是( 最小堆 )

优先队列式分支限界法选取扩展结点的原则是( 结点的优先级 )

在对问题的解空间树进行搜索的方法中 ,一个活结点最多有一次机会成为活结点

greedy的用法及短语

greedy的用法及短语

一、什么是greedy

在计算机科学领域,greedy(贪心)是一种问题求解策略。贪心算法总是在当前情况下做出局部最优选择,希望通过一系列的局部最优选择达到全局最优的目标。在许多情况下,贪心算法可以提供高效的解决方案。

二、贪心算法的基本原理

贪心算法通过每一步选择局部最优解,并将其加入到问题的解决方案中,同时放弃了一些可能的选择。这意味着它不能回退或撤销之前的选择。贪心算法通常具有以下特征:

最优子结构1.:问题的最优解可以通过一系列的局部最优解得到。

贪心选择性质2.:通过局部最优选择能够得到整体的最优解。

三、常见的greedy算法应用

1. 背包问题

背包问题是一种优化问题,目标是在有限的容量下,选择一些物品放入背包,使得背包中物品的总价值最大化。贪心算法可以解决一些特殊的背包问题,如分数背包问题和0/1背包问题。

2. 区间调度问题

区间调度问题是希望从一组区间中选择尽可能多的不相交区间,使得选中的区间个数最大化。贪心算法可以通过按照结束时间从小到大的顺序选择区间来解决该问题。

3. 最小生成树

最小生成树问题是在一个连通无向图中找到一棵包含所有顶点的最小权重生成树。贪心算法的Prim算法和Kruskal算法都可以用于解决最小生成树问题。

4. 哈夫曼编码 哈夫曼编码是一种用于对数据进行压缩的无损编码。贪心算法可以用于构造哈夫曼编码树,使得出现频率较高的字符编码较短,频率较低的字符编码较长。

四、greedy相关短语

除了应用于算法和编程领域,greedy这个词也用于描述人类行为或特定情境。下面是一些与greedy相关的英语短语:

greedyforknowledge1.:渴望知识。

greedyforpower2.:渴望权力。

greedyformoney3.:贪婪金钱。

greedyeater4.:暴饮暴食的人。

greedygrab5.:贪婪的抓取。

greedydesire6.:贪欲。

列举用贪心算法求解的经典问题

列举用贪心算法求解的经典问题

1. 零钱兑换问题:给定一些面值不同的硬币和一个金额,要求用最少的硬币凑出这个金额。

2. 最小生成树问题:给定一个无向带权图,要求用最小的权值构建一棵生成树。

3. 背包问题:给定一些物品和一个背包,每个物品有对应的价值和重量,要求在背包容量限制下,选取物品使得总价值最大。

4. 活动安排问题:有若干个活动需要分配一段时间,每个活动有对应的开始时间和结束时间,要求选取尽可能多的活动,使得任两个安排的活动时间不重叠。

5. 单源最短路径问题:给定一个有向带权图和一个起始节点,要求求出从起始节点到其他所有节点的最短路径。

6. 任务调度问题:有若干个需要完成的任务和多个可执行任务的处理器,要求将任务分配给处理器,使得执行总时间最小。

7. 区间覆盖问题:给定一些区间,要求用尽可能少的区间覆盖整个线段。

8. 哈夫曼编码问题:给定一些字符及其对应的出现概率,要求用最短的编码方式表示这些字符。

【精选】贪心算法的应用

贪心算法的应用

课程名称: 算法设计与分析

院 系: 计算机科学与信息工程学院

学生姓名: ****

学 号: **********

专业班级:**********************************

指导教师: ******

201312-27

1 贪心算法的应用

摘 要:顾名思义,贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。当然,希望贪心算法得到的最终结果也是整体最优的。虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解。如单源最短路经问题,最小生成树问题等。在一些情况下,即使贪心算法不能得到整体最优解,其最终结果却是最优解的很好近似。贪心算法求问题一般具有两个重要性质:贪心选择性质和最优子结构性质。所谓贪心选择性是指所求问题的整体最优解可以通过一系列局部最优解的选择,即贪心选择达

到。这是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法主要区别。当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。问题的最优子结构性质是该问题可用动态规划算法或贪心算法求解的关键特征。

背包问题是一个经典的问题,我们可以采用多种算法去求解0/1背包问题,比如动态规划法、分支限界法、贪心算法、回溯法。在这里我们采用贪心法解决这个问题。

关键词:贪心法 背包问题 最优化

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档