下载此文档

第八章-贪心算法.doc


文档分类:IT计算机 | 页数:约16页 举报非法文档有奖
1/16
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/16 下载此文档
文档列表 文档介绍
第八章-:有4种硬币,面值分别为2角5分、一角、五分和一分。现在要求以最少的硬币个数找给顾客6角三分。通常是:先拿两个2角5分的+1个一角+3个一分这种找法所拿出的硬币个数最少。这种算法其实就是贪心算法。顾名思义:该算法总是作出在当前看来最好的选择,并且不从整体上考虑最优问题,所作出的选择只是在某种意义上的局部最优解。上面的解法得到的恰好也是最优解。因此,贪心方法的效率往往是很高的。假如,面值有一角一分、五分和一分,要找给顾客一角五分。如果还是使用上述贪心算法,得到的解是:一个一角一分+4个一分。而最优解是3个5分。又例如:154135437121426153求节点1到节点6的最短路径。用贪心法得19,而实际为17。显然贪心算法不能对所有问题都能得到最优解,但是对很多问题(包括很多著名的问题)都能产生整体最优解。例如,我们今天要讲的图的单元最短路径问题、最小生成树问题。在有些情况下,算法不能得到整体最优解,但是结果确是最优解的很好近似。,即贪心选择来达到。:动态规划算法:每步所做出的选样往往依赖于相关子问题的解,。贪心算法:仅在当前状态下做出最好选样,即局部最优选则。然后再去解做出这个选择后产生的相应的子问题。贪心算法所做出的贪心选则可以依赖于以往做过的选则,但决不依赖于将来所做的选样,也不依赖于子问题的解。动态规划:是自底向上的方法解各子问题;贪心算法:是自顶向下的方法。:证明所设计的算法确实能够正确解决所求解的问题。即对于一个具体的问题,必须证明每一步所做出的贪心选择最终导致问题的整体最优解。首先,考察问题的一个整体最优解,并证明可修改这个最优解,使其以贪心选择开始。。然后,用数学归纳法证明、。其中,证明贪心选择后的问题简化为规模最小的类似子问题的关键在于利用该问题的最优子结构性质。最优子结构性质:当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。贪心算法和动态规划算法都要求问题具有最优子结构性质,这是两类算法的一个共同点。但是都具有最优子结构的问题该选则贪心法还是动态规划算法求解?是否能用动态规划法的也能用贪心算法解?背包问题:给定n种物品和一个背包,物品i的体积为,价值为。已经知道背包的承重量为C。假设是物体i被装入背包的部分,;要求装满背包且背包内物体价值最大。max选择方法:目标函数的值增加最快,而包载容量的消耗较慢的物体装入包中。故优先选择价值体积比最大的物体装入背包。背包与0-1背包的区别:结论0-1背包问题能用动态规划法解,但不能用贪心法解。(狄斯奎诺Dijkstra’s算法)一、问题描述是一个有向图,每条边上有一个非负整数表示长度值,其中有一个顶点称为源节点。所谓的单源最短路径问题就是:求解该源节点到所有其它节点的最短路径值。不失去一般性,我们假设并且=1。那么该问题可以使用Dijkstra’s算法来求解,该算法是一种贪心算法,并且能求得最优解。二、算法思想开始时,我们将所有的顶点划分为两个集合。所有已经计算好的顶点存放在中,中表示还没有计算好的。中的每个顶点有一个对应的量,该值是从源顶点到(并且只经由中的顶点)的最短路径值。下面就是选择一个最小顶点,并将其移动到中。一旦被从移动到中,中每个和相邻的顶点的都要更新:表示经由到的一条更短的路径被发现了。对于任意一个顶点,假如我们使用表示源顶点到顶点的最短路径,最后,我们可以证明上述的贪心法结束后有。三、算法DIJKSTRA输入:含权有向图G=(V,E),V={1,2,…n}输出:G中顶点1到其他顶点的距离1.;;←2tonIfy相邻于1thenElse;←1ton-,←X∪{y}/*将从移动到中10Y←Y-{y}For每条边{y,w}Ifw∈Yand+length[y,w]<then/*、举例说明:(手工解该题目)算法的详细实现:有向图用邻接表来表示如图假设每条边是非负的X和Y集合用两个向量来表示X[1..n],Y[1..n]。初始时X[1]=1,Y[1]=<=i<=n,X[i]=0,Y[i]=,执行的操作,就是X[y]=1,的操作就是,Y[y]=0。五、证

第八章-贪心算法 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数16
  • 收藏数0 收藏
  • 顶次数0
  • 上传人yixingmaoj
  • 文件大小529 KB
  • 时间2019-08-20
最近更新