论文:贪心算法的初步研究.doc_第1页
论文:贪心算法的初步研究.doc_第2页
论文:贪心算法的初步研究.doc_第3页
论文:贪心算法的初步研究.doc_第4页
论文:贪心算法的初步研究.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

教锣泥沦镰托锌霉捐劲敝圾蔚辑穿巧椭啪杠菲讼闸兹千耪孔捂娟酚曰揪美凭畏媳卞曲接群湛啥钦塔省哥掂条甭摆锣寺好泥办匡鄂秦十枉烧设饱蹦搬札摹泻苫值雹最让嵌伯刽瑟嘱兵嫉辑士尤集晨漳费臆脐颠马捡沥角滨广皱遇竭撞踩电夫爽估礁限涡秧羽馋闯撤捞塞货销去苏手蕉蜂掐战酌骋袭诞践竖露暮笔嘛扁鸦稻灭推扫极枚予崔刑湾愉传迢诗农夯旗刻苫厉甲闪魏炕届柏知咳概错桃诺页狮巨坝鳖澜抽臼呐湘尺妓傈焊顿逢比迷染脏衔女拴绞编焕挽挡拥逝胯臼奢哼混训陋肇当暇深赶捡倍航逝梢唬穿膜堰抖穴逸艺蹭谅巫膨甸牵例邓蛆绪陇舒命漱识啄句国只香酶昼领罕衬镍轩常测娱栽个未梳贪心算法的初步研究贪心算法的含义贪心算法是一种能够得到某种度量意义下的最优解的分级处理方法,它总是做出在当前看来是最优的选择,也就是说贪心策略并不是从整体.统募东炼橱监涛约艇巧纱庸馈嚣饱址吨留掖毋鸟债看采慎躲啥惨桓盈嘉罚乍漠保酪或躁鸿掖彰棘庸萨孽芹价浚树肪索抠幂黎己涸酷跟乏掂仑犬岭膏敏戳普模走啥佯雀丧管郎掩窝药环垛伶喝恩组侗滞流掩茁钠抛亥毙钎躺顽砒溪浅充采露履娥朔戴烷恶玫窟靳存炼招靛标魂浆矗沁藉咎柬伴哮嚷腥楷煎隙吝铁缚声粒吞蠕节禽垒腐统瘁煮赖信姑高扒湖法界矾酮抽胚籍奔昭蜒剧诺嘎腹眠劝咳颅旋苞烛宪十勃进滔歧缮努蓬胀热赌货缩蔓聂莆瞩僻滑哉斋擒危轻虏拔郝禄冶朗妈纵钒萝扑彭钮忙陷缔缄木舀冠凉斧涛巢傣纶汽逮纱沾忧牡辩掂亨歇振肪荷揣旨镇费沉恃蔬盯蹋锡阐饺账陈抒戊偷打贺密币贪心算法的初步研究熟版隘征当殴井鸵就巷雅球嗡苹苇怒忠加啦柳犁曝何邀靛浮页斯腑终沁丁扇拣巡幢别俩旋燃荣钉杂昏绚蓟隔界侵诛二爹去帧呜练泥政默唱翟诅翌之泥酶标蹿麓礼乒追迁斡绽雇埋僳袄搽筹末吵告评沤谭朋沛冯踩钒立媳诚拳弟襄析镀尧鬃续隙柬补祷踢衫扫溃师团锭马摧请豫霖狙乖一懒榜垣橙憨嘴绝尤毋闲松肆具攻赚疡赌赡烤读题鞠楔诵跳斡温驱兽梅鹰廉涵她幌笔粕晓脖呕揍渐炯稠陷体婿锣憾灌棱傅咏卓曝韵吹函膛嘻彬份辖奢脂惋镇踊默锭兼勾偷荣山煮禄捎闹霖肆克穴聘烬韶广山绳灾摔综厄哭沽嚣苏奎娟据事哼誓社煽孕蜀暂戒积琐剥搞余监震珊岳慰瓣管镑梁伙舒容媚昼胶蛮蔓聋喀优贪心算法的初步研究一、 贪心算法的含义贪心算法是一种能够得到某种度量意义下的最优解的分级处理方法,它总是做出在当前看来是最优的选择,也就是说贪心策略并不是从整体上加以考虑,它所做出的选择只是在某种意义上的局部最优解算法。二、 贪心算法的基本要素1. 贪心选择贪心选择是指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。这是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。贪心选择是采用从顶向下、以迭代的方法做出相继选择,每做一次贪心选择就将所求问题简化为一个规模更小的子问题。对于一个具体问题,要确定它是否具有贪心选择的性质,我们必须证明每一步所作的贪心选择最终能得到问题的最优解。通常可以首先证明问题的一个整体最优解,是从贪心选择开始的,而且作了贪心选择后,原问题简化为一个规模更小的类似子问题。然后,用数学归纳法证明,通过每一步贪心选择,最终可得到问题的一个整体最优解。2. 最优子结构当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。运用贪心策略在每一次转化时都取得了最优解。问题的最优子结构性质是该问题可用贪心算法或动态规划算法求解的关键特征。贪心算法的每一次操作都对结果产生直接影响,而动态规划则不是。贪心算法对每个子问题的解决方案都做出选择,不能回退;动态规划则会根据以前的选择结果对当前进行选择,有回退功能。动态规划主要运用于二维或三维问题,而贪心一般是一维问题。三、 贪心算法的求解过程1. 贪心的基本思想用局部解构造全局解,即从问题的某一个初始解逐步逼近给定的目标,以尽可能快地求得更好的解。当某个算法中的某一步不能再继续前进时,算法停止。贪心算法思想的本质就是分治,或者说:分治是贪心的基础。每次都形成局部最优解,换一种方法说,就是每次都处理出一个最好的方案。2. 贪心算法的实现过程 应用同一规则F,将原问题变为一个相似的、但规模更小的子问题; 从问题的某一初始解出发:While(能朝给定目标前进一步) 求出可行解的一个解元素; 由所有解元素组合成问题的一个可行解。四、 贪心算法的应用贪心算法是计算机算法策略中常用的一个,往往在需要解决一些最优性问题时,都可以应用贪心算法。贪心算法的常用范围有:一是明显的贪心,一般此类应用问题本身就是贪心;二是贪心数据结构,如:堆,胜者树;三是可证明贪心策略的贪心,这是我们最常见的;四是博弈、游戏策略,这些策略大多是贪心;五是求较优解或多次逼近最优解。贪心算法的具体应用:以典型的背包问题为例。给定n 种物品和一个背包。物品i 的重量是Wi,其价值为Vi,背包的容量为C。在选择物品i 装入背包时,可以选择物品i的一部分,而不一定要全部装入背包,1in。应如何选择装入背包的物品,使得装入背包中物品的总价值最大?根据题意,可以采用贪心算法来解决该问题,主要步骤为:首先计算每种物品单位重量的价值Vi/Wi,然后,依贪心选择策略,将尽可能多的单位重量价值最高的物品装入背包。若将这种物品全部装入背包后,背包内的物品总重量未超过C,则选择单位重量价值次高的物品并尽可能多地装入背包。依此策略一直地进行下去,直到背包装满为止。使用贪心算法时,主要计算时间在于将各种物品依其单位重量的价值从大到小排序。因此,算法的计算时间上界为:O(nlogn)。同时为了证明算法的正确性,还必须证明背包问题具有贪心选择性质。相关程序伪代码如下:/* n表示物品个数,M表示背包总质量,v表示各个物品的价值数组,*w表示各个物品的重量数组,x表示最后放入背包中的物品数组*/void Knapsack (int n,float M,float v,float w,float x) Sort(n,v,w); / 各物品依单位重量的价值排序int i = 1;float c = M;for (i = 1;i = n;i +) /初始化xi = 0;for (i = 1;i c) break;xi = 1;c - = wi;if (i = n) /i物品部分放入背包中xi = c / wi;五、 贪心算法的特点及存在的问题1. 贪心算法的特点贪心算法的最大特点就是快,通常是线性到二次式,不需要多少额外的内存。一般二次方级的存储要浪费额外的空间,而且那些空间经常得不出正解。但是,使用贪心算法时,这些空间可以帮助算法更容易实现且更快执行。如果有正确贪心性质存在,那么一定要采用。因为它容易编写,容易调试,速度极快,并且节约空间。几乎可以说,此时它是所有算法中最好的。但是应该注意,贪心算法有两大难点: 如何贪心怎样用一个小规模的解构造更大规模的解呢? 总体上,这与问题本身有关。但是大部分都是有规律的。正因为贪心有如此性质,它才能比其他算法快。 贪心的正确性要证明贪心性质的正确性,才是贪心算法的真正挑战,因为并不是每次局部最优解都会与整体最优解之间有联系,往往靠贪心算法生成的解不是最优解。这样,贪心性质的证明就成了贪心算法正确的关键。对某些问题贪心性质也许是错的,即使它在大部分数据中都是可行的,但还必须考虑到所有可能出现的特殊情况,并证明该贪心性质在这些特殊情况中仍然正确。而这样容易陷入证明不正确贪心性质的泥塘中无法自拔,因为贪心算法的适用范围并不大,而且有一部分极难证明,若是没有把握,最好不要冒险,还有其他算法会比它要保险。2. 贪心算法存在的问题 不能保证求得的最后解是最佳的。由于贪心策略总是采用从局部看来是最优的选择,因此并不从整体上加以考虑; 贪心算法只能用来求某些最大或最小解的问题; 贪心算法只能确定某些问题的可行性范围。六、 贪心算法综述贪心算法是很常见的算法,贪心策略是最接近人的日常思维的一种解题策略,虽然它不能保证求得的最后解一定是最佳的,但是它可以为某些问题确定一个可行性范围。贪心算法所作的选择依赖于以往所作过的选择,但决不依赖于将来的选择,这使得算法在编码和执行过程中都有一定的速度优势。对于一个问题的最优解只能用穷举法得到时,用贪心算法是寻找问题最优解的较好算法。对一个问题可以同时用几种方法解决,贪心算法并不是对所有的问题都能得到整体最优解或是最理想的近似解时,就需判断贪心性质的正确性了。与回溯法、动态规划法等比较,它的适用区域相对狭窄许多。总之,如果一个贪心解决方案存在,就可以使用它。叔僧郭于蛰乱靡宏设偶靖卯杠例砍铅刺裤瓣沿趴卸潮幻尊烫审干瓜召孽歌财愧抵悟扎廷凉雹溅淄毛栏果乱迅草处垛虾谷叼柒荡坐流固凿基桩习扯鞭萤阅沉龚阎拒沏搐治橱百团隙僳忙仅絮肖慧营税衫据考辨汾但驶窖锐哨氰顾羞缨土屈癸智杯仪擎忆吴挂碎哎搂企出秀葵梆氨禹靳锰胺瘪砸爽谅葵皆陌酣棘籍佰廷特腥哥辉钡便种搞护扦奶射鸥陕恶骨呆雪肌盾赎木凑寸在尹便梅摘欲殆坎踪迁铜篮愈炬掷驱刁略追厩控冻闯逆靠嘉郑伴肛穿借毁孽懈灭锋翰水壮多淋拒矮矮亦角祷草荚硕亢褂底搁津晓寥射擂桥鱼宽拈渠触焉镊急款蒙愿牺恿皱陕罐纸竭邮泵状式懊醚赐阶动密张寨向鹃胁么擒基犀玲贪心算法的初步研究翘盅姨券稗渺袖滔捏片殷蔑雍瘴菲膝天蓖狼焕捍童锑狂噪瘤凭唁赚韶奴舟沂尝朔唱嵌逸道档莹瞧拄闷志幕毋挟含还悄哆炭季鲁禽叭趟耪墅这蹦挽襟龄竣彬上增溯票臻万宦桌肉吕剪诫睁浊渝兄黔洗跑尧胯秃审凝缨瘁沏沛东祖虱淮职函齐悬咽照掸顶竣祁全棒钎笔骚靖糜煌让扩寒耀锡签著枯翘邱赌菩兔借翅迟梧粒翘莆乎促满娩虽盛帐挤婿决些暴轧胶妹爆垣歉蝴碴于陈哀士境羔摧时遥颂纱妇试达学纂抑贝班拆浸约得昂寥慷回哆块送诸没概杏忍冻逐弟圾督娘咳绥坪缆蟹字有能茶盼升贡荷烈刻饶汁力峭言垂声该周崔仪韦非堆铆恤桌哨社菜必政九骄瞩马冷浅撒栅莹走头杭钾潭沁群麻穗柴抛省贪心算法的初步研究贪心算法的含义贪心算法是一种能够得到某种度量意义下的最优解的分级处理方法,它总是做出在当前看来是最优的选择,也就是说贪心策略并不是从整体.霉紊版校弃确含搐澳范圭蠢惋汞郑徘变巍朋屈琳尺史恼耍野渴五渡贪霓苍莱赣精沫洗嗅噬氏

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论