




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章贪心算法适用于求解最优化问题1学习要点理解贪心算法的概念。掌握贪心算法的基本要素(1)最优子结构性质(2)贪心选择性质理解贪心算法与动态规划算法的差异理解贪心算法的一般理论2通过应用范例学习贪心设计策略(1)活动安排问题;(2)最优装载问题;(3)哈夫曼编码;(4)单源最短路径;(5)最小生成树;(6)多机调度问题。3
顾名思义,贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。当然,希望贪心算法得到的最终结果也是整体最优的。贪心算法4
虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解。如单源最短路径问题,最小生成树问题等。在一些情况下,即使贪心算法不能得到整体最优解,其最终结果却是最优解的很好近似。贪心算法5贪心算法解最优化问题>算法设计方法>
贪心算法1.输入(或问题的解):可表为n元向量(x1,x2,...xn).2.约束条件:满足约束条件的向量为可行解.3.优化函数:是与可行解分量相关的函数.4.最优解:使优化函数达到极限值的可行解.6贪心算法基本思想将问题的求解过程看作一系列选择(每次选择确定一个输入值),每次选择都是当前状态下的最好选择(局部最优解).每作一次选择后,所求问题会简化为一个规模更小的子问题.从而通过每一步的最优解逐步达到整体最优解.>算法设计方法>
贪心算法7>算法设计方法>
贪心算法//从a中选择一个当前最好输入//判断x是否包含在当前解中//将x与解合并,修改目标函数贪心算法的一般模式SolutionTypeGreedy(STypea[],intn){SolutionTypesolution=;for(inti=0;i<n;i++){STypex=Select(a);if(Feasiable(solution,x)) solution=Union(solution,x);
}returnsolution;}8
[适用问题]具备贪心选择和最优子结构性质的最优化问题[算法优点]求解速度快,时间复杂性有较低的阶.整体的最优解可通过一系列局部最优解达到.每次的选择可以依赖以前作出的选择,但不能依赖于后面的选择.问题的整体最优解中包含着它的子问题的最优解.[算法缺点]需证明是最优解.
[常见应用]背包问题,最小生成树,最短路径,作业调度等等>算法设计方法>
贪心算法94.1活动安排问题
活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合,是可以用贪心算法有效求解的很好例子。该问题要求高效地安排一系列争用某一公共资源的活动。贪心算法提供了一个简单、漂亮的方法使得尽可能多的活动能兼容地使用公共资源。104.1活动安排问题
设有n个活动的集合E={1,2,…,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,且si<fi。如果选择了活动i,则它在半开时间区间[si,fi)内占用资源。若区间[si,fi)与区间[sj,fj)不相交,则称活动i与活动j是相容的。也就是说,当si≥fj或sj≥fi时,活动i与活动j相容。114.1活动安排问题template<classType>voidGreedySelector(intn,Types[],Typef[],boolA[]){A[1]=true;intj=1;for(inti=2;i<=n;i++){if(s[i]>=f[j]){A[i]=true;j=i;}elseA[i]=false;}}下面给出解活动安排问题的贪心算法GreedySelector:各活动的起始时间和结束时间存储于数组s和f中且按结束时间的非减序排列
124.1活动安排问题 由于输入的活动以其完成时间的非减序排列,所以算法greedySelector每次总是选择具有最早完成时间的相容活动加入集合A中。直观上,按这种方法选择相容活动为未安排活动留下尽可能多的时间。也就是说,该算法的贪心选择的意义是使剩余的可安排时间段极大化,以便安排尽可能多的相容活动。
134.1活动安排问题
算法greedySelector的效率极高。当输入的活动已按结束时间的非减序排列,算法只需O(n)的时间安排n个活动,使最多的活动能相容地使用公共资源。如果所给出的活动未按非减序排列,可以用O(nlogn)的时间重排。
144.1活动安排问题例:设待安排的11个活动的开始时间和结束时间按结束时间的非减序排列如下:i1234567891011S[i]130535688212f[i]4567891011121314最大相容活动子集(1,4,8,11),也可表示为等长n元数组:(1,0,0,1,0,0,0,1,0,0,1)154.沾1活动宾安排侧问题算法gr谜ee党dy肉Se骑le赞ct央or的计昌算过透程如左敌图所脖示。油图中窗每行值相应欧于算椒法的莲一次弓迭代柳。阴牙影长图条表搏示的拆活动惹是已佳选入脏集合A的活任动,座而空鬼白长证条表词示的冈活动感是当访前正饱在检零查相努容性指的活倡动。16算法聪操作把过程174.括1活动煤安排愿问题若被利检查壤的活匀动i的开乱始时呆间si小于甩最近左选择简的活神动j的结鉴束时搅间fj,则肝不选服择活芹动i,否络则选寻择活留动i加入应集合A中。贪心屈算法局并不侨总能驰求得墙问题择的整体芒最优峰解。但绸对于皇活动做安排远问题晓,贪腐心算哀法gr粒ee炎dy镰Se浸le晕ct还or却总档能求歪得的荷整体誓最优黄解,陪即它吓最终擦所确蓄定的葱相容龄活动遵集合A的规予模最挡大。挺这个手结论乌可以够用数隙学归剧纳法盖证明柏。18算法gr急ee贩dy浮Se渗le酸ct舰or的运乞行结农果19
T(n)=O(nlogn)(未排序时)[算法分析]
T(n)=O(n)(排序时)活动切安排赔的贪携心算年法204.泳2贪心进算法件的基姐本要泡素本节鸭着重贪讨论构可以麦用贪圈心算覆法求形解的烈问题坝的一稼般特甩征。对于舅一个经具体饺的问钳题,斯怎么们知道观是否哀可用场贪心型算法输解此棚问题叶,以坚及能粗否得休到问哄题的盏最优橡解呢?这个最问题聋很难某给予常肯定拘的回针答。但是喉,从围许多洽可以喜用贪心愚算法求解懂的问铸题中盟看到猛这类喷问题浓一般额具有2个重坟要的性勇质:贪心蹄选择蹦性质和最优欢子结醋构性凡质。211、贪糊心选味择性累质所谓贪心她选择许性质是指所片求问悟题的整体奇最优只解可以醋通过玻一系兔列局部且最优的选观择,棋即贪纽奉心选狼择来只达到。这是捏贪心丽算法不可行号的第启一个慢基本荣要素际,也楼是贪宰心算鞠法与杯动态武规划拆算法旺的主盲要区洋别。221、贪登心选仅择性败质动态秒规划抬算法需通常像以自底迎向上的方教式解尸各子肿问题桌,而凭贪心雾算法麻则通僚常以自顶筑向下的方荣式进堤行,垃以迭嫂代的订方式牙作出勺相继虹的贪察心选拉择,将每作抹一次扩贪心凭选择胶就将仆所求坚问题晕简化欲为规贝模更炒小的捷子问双题。对于死一个姿具体拼问题影,要热确定煤它是膏否具惊有贪绝心选停择性叫质,梳必须川证明菌每一蛛步所层作的碰贪心硬选择逃最终掘导致贵问题残的整积体最怎优解锯。23当一据个问当题的壤最优宁解包藏含其航子问田题的顾最优惜解时球,称知此问悼题具制有最优称子结凡构性诉质。问止题的休最优皆子结混构性信质是浩该问芳题可白用动接态规批划算芦法或夸贪心寨算法菊求解勉的关板键特惩征。2、最拿优子财结构捉性质24贪心墙算法筐和动斤态规歉划算灵法都宏要求筒问题建具有鱼最优毁子结蚂构性浊质,凝这是2类算金法的请一个献共同砌点。但是球,对胸于具贤有最优僻子结西构的问众题应驱该选辰用贪抢心算旦法还集是动皮态规券划算脖法求肆解?是否反能用爷动态疤规划乌算法素求解例的问变题也夺能用狱贪心兽算法镇求解?下面述研究2个经奔典的组合接优化溜问题,并相以此戒说明羡贪心饺算法吓与动独态规咽划算五法的临主要滋差别钞。3、贪么心算零法与嘴动态焰规划刮算法江的差诱异254.盐2贪心鬼算法得的基得本要衡素0-昂1背包疏问题参:给定n种物护品和娃一个勺背包协。物佛品i的重拾量是Wi,其螺价值贺为Vi,背炒包的助容量喷为C。应燃如何胡选择呆装入侨背包陕的物矛品,锯使得死装入腾背包腔中物渣品的王总价稻值最慕大?在选太择装黄入背房诚包的齐物品迁时,凶对每既种物词品i只有2种选叹择,巡寿即装崇入背佳包或骆不装辛入背花包。魄不能救将物保品i装入阀背包特多次庆,也聪不能识只装说入部青分的气物品i。264.天2贪心仿算法砍的基岩本要鸡素背包恼问题哀:与0-缎1背包询问题边类似谱,所微不同象的是役在选阴择物皂品i装入贞背包定时,可以删选择拢物品i的一箱部分,而愧不一蹦定要递全部熔装入场背包葵,1≤而i≤晌n。这2类问攻题都偿具有最优鸭子结贵构性质武,极衫为相梢似,苗但背包茧问题候可以徒用贪显心算肉法求再解,疮而0-员1背包栏问题转却不能没用贪庄心算造法求树解。274.厉2贪心参算法略的基蚊本要遍素首先凉计算写每种驳物品骡单位屯重量次的价逝值Vi/Wi,然计后,版依贪趋心选佩择策突略,畅将尽哲可能骂多的单位舟重量制价值喷最高的物侍品装勺入背唯包。若将情这种缩慧物品喝全部过装入亏背包秀后,盏背包彻内的躲物品巾总重薪量未酸超过C,则棵选择桑单位意重量食价值觉次高嘉的物幅品并渐尽可御能多秧地装缓入背伯包。窜依此摧策略誓一直币地进善行下显去,惧直到铲背包注装满蔑为止秩。具体碗算法未可描铲述如惩下:用贪后心算吵法解便背包赞问题书的基费本步摸骤:28vo拐idKn怪ap迫sa畜ck悬(i参ntn,寄fl横oa关t没M,销fl浴oa遭t雨v[贴]巡寿,f币lo暖at担w默[数]配,f捎lo命at岂x鱼[壶]){答So窜rt壳(n额,迎v,拴w垦);//按单穿位价拖值排千序in虫ti;fo霉r帮(i迟=翠1;国i戴<=袭n划;i熄++钥)烂x[假i]淹=耐0每;fl价oa那t桌c扎=都M;//俯c为背蓄包剩萝余空步间fo杯r供(i毫=霸1;叉i轨<=冈n太;班i+谋+)宵{if夹(姿w[沸i]住>动c)富b液re军ak姜;x[肿i]伴=密1;c-融=逃w[时i]辽;妻}if岸(i管<=揭n丈)或x[碧i]际=遗c哪/w迎[i锻];图}算法仍分析:排序毁为主平要算筛法时赌间,所以T(安n)但=O(迅nl惩og述n)背包聚问题般的贪神心算完法算法熄证明:该算哈法能姥得到纸最优棉解X[亏]陪:解向火量w[野]证:物体晓重量V[吹]蠢:物体南价值M:背包咏容量n:物体醉数量29若背淹包问馆题中锦的物晕体不军能分烤拆,只能泊整个涨装入京,则贱称为0-护1背包葱问题.用贪睛心算闹法能拦得到0-艰1背包蚀的最条优解脏吗?n=掠3,愧c菌=2杯5,治(v1,v2,v3)敲=(淘35模,欣24纪,团15激),(w附1,园w2擦,w石3)统=(咸18奴,仅15搁,洞10然)例1分析:单位图价值(v1/搂w1柄,v2/仍w2锣,v3/触w3粒)=拦(3妇5/市18脚,垫24定/1棵5,渔1虎5/域10场)=浊(1拼.9讲4,皮1筑.6蝇,模1.约5)装入惠顺序:旧(x择1,撒x2逃,镇x铁3)贪心往解:(累1,扬0你,疼0)骆,总价吗值35最优惑解:(悼0,哗1灰,魄1)贸,总价秋值3930用贪放心算蠢法解带背包桌问题n=层3,协c聪=5腿0,浇(v1,v2,v3)歉=(盯60兄,拍10均0,善1步20刊),(w窑1,萝w2吸,w巾3)带=(眨10火,责20璃,浸30除)//纽奉pa唱ge姨1要07例231用贪呆心算惊法解0-勒1背包妇问题n=艘3,次c闭=5堤0,退(v1,v2,v3)穗=(挡60叼,沃10累0,芬1逆20脆),(w缘瑞1,销w2择,w骡3)缩慧=(谈10侄,被20渐,衫30律)例324.鄙2贪心屈算法咽的基知本要魄素对于0-挣1背包父问题,贪挥心选报择之耍所以排不能宾得到呢最优秀解是钳因为于在这嫌种情饺况下竿,它晓无法歪保证枯最终毒能将挨背包疫装满罗,部肆分闲独置的向背包渴空间盛使每沃公斤坦背包除空间枯的价刮值降竹低了挑。事传实上看,在奏考虑0-乒1背包全问题畏时,酬应比锄较选么择该拳物品辣和不劝选择芹该物粱品所渐导致屠的最释终方富案,净然后器再作晒出最点好选听择。鸣由此胃就导瞧出许喂多互含相重羞叠的森子问砍题。击这正虎是该济问题驼可用动态杏规划朗算法求解仓的另驶一重菌要特钢征。实际峰上也高是如孩此,求动态串规划源算法处的确闯可以阿有效痛地解0-克1背包晨问题满。334.搜3最优快装载有一贝批集术装箱橡要装系上一陵艘载纠重量夹为c的轮痛船。屋其中格集装迟箱i的重善量为Wi。最练优装弦载问仪题要胸求确按定在扫装载浇体积游不受朵限制浓的情妥况下库,将伍尽可由能多策的集也装箱败装上匹轮船玻。1、算孕法描融述最优灿装载杜问题喜可用怀贪心烤算法寄求解蝴。采磨用重抄量最摆轻者剥先装古的贪缸心选姜择策翻略,储可产杠生最插优装骑载问麻题的凤最优碗解。轧具体败算法间描述叛如下辈页。34te谢mp亦la背te滨<田c肌la棍ss伯T变>vo及idLo纠ad蹈in仿g(败in观tx[寇],柜T扩w记[]亮,踏T租c,in线tn旗){in墙t*t圾=绞n衬ewin开t[n盾+驰1焰];//寨w停[驻]的游可标So具rt奴(拐w,卷t既,绪n)丛;//按货吹箱重受量递市增排质序fo扑r恋(in敢ti马=网1;会i宵<笼=短n庆;寻i额++掌)x[之i]领=总0芹;fo答r满(in鸦ti形=瞎1;甘i<穷=雄n付&&酒w益[碗t裕[i分]仪]瓦<=淋c握;补i+个+)释{x[亦t略[森i]菜]懒=使1锯;c壁-飘=棒w[叛t炭[拘i]背]烤;}固}//调整恼剩余于空间X[绣]民:解向伴量w[钳]记:货箱少重量c:船的圆载重戚量n:货箱伪数量最优柴装载骆的贪款心算候法35最优楼装载傅的贪气心算哨法设n=悠8,[w栋1,…w洞8]欠=[铜10垄0,靠2我00俱,听50扑,驶90冬,伏15养0,核5剧0,朴2候0,哑8垄0],c=融40酸0。所考学察货兽箱次轰序为:7担,毛3躁,确6超,冶8反,阿4,登1始,番5,粒2。货箱7,肠3础,亏6,妥8素,惨4,岩1的总术重量裳为39短0个单叛位且弯已被秧装载,剩下个的装果载能逝力为10愁,小于国任意随货箱.所以饲得到栽解:[x艳1,摧..唐.x菠8]躺=[之1余,俊0,锻1停,艘1,村0,渡1僚,届1,岔1璃]36最优掀装载樱的贪失心算壳法>算法田设计锣方法>贪心浑算法设n=雾8,[w棋1,…w澡8]让=[汉10灵0,蛛2筐00刊,低50河,慕90乌,盒15响0,冒5浩0,苹2凤0,比8求0],c=森40微0。37最优跪装载吼的贪捏心算咬法[算法部分析]排序断为主传要算好法时忧间,所以T(磁n)享=O(永nl角og青n)[算法持证明]该算兼法能切得到普最优肯解.>算法航设计溜方法>贪心呢算法384.壁3最优葵装载2、贪带心选凝择性避质可以匆证明凡最优岁装载合问题鄙具有旨贪心咸选择伙性质维。3、最宗优子正结构责性质最优凶装载差问题晃具有签最优方子结冬构性似质。由最很优装疮载问虎题的寺贪心希选择恼性质敌和最激优子宫结构梁性质梨,容窜易证遮明算筛法lo勇ad匆in物g的正馅确性牲。算法lo哪ad用in呢g的主粘要计成算量杯在于君将集脾装箱灾依其在重量腊从小宿到大岔排序塌,故嫁算法蝇所需词的计霸算时迷间为O(链nl饮og贝n)。39[问题]通讯过程中需将传输的信息转换为二进制码.由于英文字母使用频率不同,若频率高的字母对应短的编码,频率低的字母对应长的编码,传输的数据总量就会降低.要求找到一个编码方案,使传输的数据量最少(最佳编码).
找最佳前缀编码问题可化为求一棵为能正确译码,编码需采用前缀码.前缀码和二叉树一一对应.最优二叉树是编码的集合.其任一编码不能是另一编码的前缀.4.江4哈夫拜曼编番码40最优拦二叉朝树树的残权:在叶带菌权二师叉树中,若带权藏为wi的叶,其通债路长房诚度为L(wi),则称艇为薄该叶戚带权适二叉丙树的权.最优刷二叉凳树:在所嚼有叶益带权笨为w1,w2,…翠,wt的二菠叉树T中w(T牢)最小测者称未之.w(T维)=wi•L(wi)123451245334521w(T歇)为33w(T呢)为39w(T拼)为5041输入(x罗1,秒…xn):叶权(各字缸符出鸡现的冒频率)约束揭条件:叶带画权二穴叉树(前缀善码)最优第解:树权涌最小油的二躬叉树帐(最淡佳编尚码)抽象树描述w(T各)42设在10常00个字偏母的男文章肃中各偷字母形出现匙的频毒率为:a:腰83辱,成b旬:1牧4,扭c:假28泰,蛇d傲:3日8,挎e:治13偷1,慈f:睁29理,剃g末:2津0,世h:桨5314沸2哄0每28影29剖3域8拾5草3此8疼3呢1徐3134雾2或8别2礼9启38息53肌8诵3衔1赴3134福57汪3惑8肃5仔3粮83些13挂157治7凯2辞5蛇3戏83励13闲172漫1辽10虾83余13鸦111乏0肯15忠5袋13锹115答5常24植139只6最佳旬编码:a:转10厚;利b:咳11垫11奶;脉c如:0中10购1;纪d:杂11思0;e:却00录;梦f:么01允00孕;防g畏:1传11锻0;伟h祥:0艺111)将权淋从小广到大而排序2)每次里选取集最小袖权合宽并例澡题431)以n个字纯母为愧结点疯构成n棵仅俘含一禽个点皇的二捞叉树集合,字母传的频茎率即邪为结劣点的温权.2)每次于从二罩叉树特集合布中找驾出两钞个权苍最小牲者合受并为一伤棵二朴叉树:增加秘一个尽根结过点将办这两伯棵树棒作为左岭右子舌树.新树勾的权骂为两音棵子纷树的赔权之顺和.3)反复败进行茂步骤2)直到乳只剩机一棵傲树为伯止.算法睛思路44最优剩子结鱼构:设T为带稍权w1≤w2≤.嚼..拒≤wt的最滨优树,若将续以带雪权w1和w2的树通叶为伯儿子怜的分经枝点态改为蓬带权w1+w2的树落叶,得到俱一棵弟新树T',则T'也是竞最优谎树。贪心选择性
:设T为带权w1≤w2≤...≤wt的最优树,a).带权w1和w2的树叶vw1和vw2是兄弟.b).以vw1和vw2为儿子的分枝点,其通路长度最长.算法志证明454.趁4哈夫冲曼编甜码哈夫壶曼编薯码是广摄泛地辽用于红数据趴文件擦压缩婶的十就分有歪效的境编码畏方法贱。其脸压缩诸率通家常在20蚀%~90旺%之间知。哈肃夫曼纯编码脉算法绞用字秧符在泡文件师中出卫现的骆频率榨表来忠建立缴一个避用0,1串表柔示各绪字符竹的最阴优表驾示方屯式。1、前惕缀码对每喊一个查字符邀规定批一个0,召1串作虏为其巩代码味,并界要求抹任一铲字符冶的代恒码都什不是妖其它鱼字符炉代码利的前惕缀。风这种然编码糊称为前缀拔码。464.叉4哈夫战曼编火码编码餐的前锐缀性恢质可件以使触译码耽方法崖非常考简单所。表示最优浮前缀枯码的二很叉树常总是乘一棵完全钉二叉绝树,即区树中弊任一任结点饲都有2个儿武子结东点。平均膛码长定义箭为:使平拨均码傅长达悲到最蚁小的抵前缀缠码编丘码方连案称救为给腾定编煌码字滨符集C的最优泽前缀烟码。474.匠4哈夫隶曼编削码2、构仅造哈尘夫曼犹编码哈夫悼曼提锅出构惊造最滤优前欧缀码彻的贪锐心算秧法,龙由此忽产生类的编究码方薪案称怖为哈夫皂曼编虑码。哈夫沙曼算稳法以自底敌向上的方跃式构筒造表团示最落优前童缀码渐的二爸叉树T。算法租以|C袄|个叶成结点转开始每,执米行|C耐|-1次的左“合团并”摩运算盗后产吐生最鼻终所胞要求剑的树T。484.听4哈夫盟曼编作码在书测上给条出的取算法hu保ff馆ma泛nT塞re垒e中,第编码陕字符沫集中金每一栏字符c的频肯率是f(亿c)。以f为键趋值的洋优先嚼队列Q用在舟做贪心坡选择时有华效地度确定沫算法烤当前等要合呜并的2棵具贵有最糊小频堪率的召树。两一旦2棵具工有最屠小频疏率的灶树合个并后鹅,产兴生一讲棵新茧的树拆,其依频率茄为合苍并的2棵树扣的频咬率之头和,孟并将哪新树欢插入陷优先贷队列Q。经盘过n-1次的往合并防后,甜优先提队列舱中只帮剩下茧一棵堂树,染即所只要求仗的树T。49te宁mp敬la宫te筹<c孝la航ss种T壮>Bi谢na扫ry忙Tr剖ee<in甩t>Hu与ff唉ma虫nT役re历e(T毫f仪[]谅,in微tn){//根据醉权f册[1违:n随]构造逼霍夫宽曼树//创建袜一个笑单节析点树袭的数防组Hu赖ff悉ma哭n传<T循>*那W=ne圣wH非uf驼fm纲an<T价>境[n奥+1毅];Bi隆na后ry箱Tr矛ee<in砖t>押z,踏ze货ro;fo和r(狡in串ti=枝1;i<把=n;i+纺+)哄{z.炼Ma呜ke惹Tr电ee搏(i,堪ze绣ro冤,报ze驳ro匆);W[辆i]脉.w宰ei谊gh瓶t=鸦f[极i];W[较i]玻.t惭re奖e=能z:签}//数组乒变成一个最瞧小堆Mi节nH屿ea敢p<H性uf颠fm架an电<T芳>>绸Q(竿1);Q.拍In梦it条ia醉li比ze德(w去,n千,n饱);哈夫敞曼树茄算法50//将堆救中的稻树不蒸断合品并Hu榴ff安ma始n<杜T>鹅x秃,亦yfo好r(将i=1贯;i听<n;的i++范){Q.扭De滚le带te秘Mi非n(负x);Q.摊De抄le赞te鞭Mi激n(见y);z.拆Ma播ke赚Tr抖ee浊(0废,x.哑tr连ee,y.胖tr糖ee);x.味we忠ig本ht+=y.矩we热ig勿ht;x.针tr鸦ee=z;Q.齿In鼓se层rt慕(x);}Q.De炮le临te姥Mi科n(忙x);//最后设的树Q.哨D笔ea血ct秃iv订at仇e(庙);de屠le拾te国[]民w;re花tu熊rnx.指tr充ee;}哈夫亿曼树摘算法养(续彼)51设在10西00个字怜母的餐文章甚中各丛字母昂出现富的频校率为:a:拌83巷,虫b到:1轨4,喜c:伙28居,燃d捞:3冒8,复e:辱13株1,峡f:月29泛,纷g趟:2填0,形h:恋53524.踏4哈夫务曼编场码复雅杂度多分析算法hu笑ff狂ma准nT漏re场e用最瓦小堆乡丰实现夺优先愤队列Q。初鹅始化撇优先野队列天需要O(公n)计算浑时间考,由叨于最袖小堆虎的De寺le闭te爷Mi颜n和In族se脏rt运算免均需O(疮lo颗gn)时间姥,n-1次的徒合并才总共梅需要O(雀nl符og河n)计算即时间皂。因此滚,关幼于n个字锐符的低哈夫趋曼算坐法的计算午时间为O(赵nl垫og界n)。534.粥5单源迅最短沾路径给定青带权歌有向坑图G将=(衡V,电E),其声中每淹条边芒的权排是非贴负实架数。丸另外惭,还健给定V中的盐一个恋顶点酸,称他为源。现摊在要壮计算钻从源雹到所滴有其望它各型顶点肝的最短洲路长归度。这额里路贷的长哥度是吃指路捉上各关边权搬之和袭。这械个问闭题通浮常称锯为单源违最短无路径凑问题。1、算启法基疑本思献想Di助jk犁st赢ra算法骂是解贤单源灶最短跃路径伪问题幸的贪铺心算撑法。544.上5单源惩最短阵路径其基本框思想是,好设置张顶点麦集合S并不胖断地开作贪心迷选择来扩成充这影个集辉合。论一个蹦顶点捡属于泛集合S当且兵仅当折从源超到该况顶点曲的最舌短路预径长嫌度已督知。初始悦时,S中仅致含有最源。况设u是G的某沃一个正顶点志,把乖从源匹到u且中杏间只吹经过S中顶便点的彩路称尸为从源窝到u的特苹殊路竿径,并匙用数冶组di赖st记录扎当前历每个且顶点硬所对心应的最短兵特殊登路径监长度。Di面jk歌st宅ra算法铲每次卸从V-过S中取块出具白有最牺短特付殊路步长度榜的顶甲点u,将u添加鬼到S中,郑同时却对数仇组di许st作必管要的钞修改难。一捎旦S包含经了所破有V中顶月点,di侦st就记证录了隐从源子到所帅有其抱它顶李点之朵间的词最短训路径贞长度斗。554.逢5单源吓最短马路径例如,对践右图轻中的封有向口图,灶应用Di协jk节st产ra算法闻计算购从源伙顶点1到其刊它顶微点间粒最短凝路径动的过本程列间在下勇页的狼表中及。564.征5单源挺最短阅路径迭代Sudist[2]dist[3]dist[4]dist[5]初始{1}-10maxint301001{1,2}260301002{1,2,4}450903{1,2,4,3}3604{1,2,4,3,5}5Di定jk梅st吩ra算法兽的迭助代过粪程:57vo纤idDi评jk模st序ra毒(i乳ntn,in聚tv,篇T亮d[壁],in嫩tpr抄ev[]怠,伤Ty穷pe爱*戴*c闪){bo钟ols[规ma陵xi写nt];fo衣r鹊(in经ti=刃1;卧i<躺=n扎;卵i+佛+)悔{d[扮i]嘴=c你[v持][毯i];s[务i]往=f桂al院se;if或(d终[i过]=哄=ma们xi虏nt)pr房诚ev池[i]=炼0;el恩sepr齿ev瓦[i]=屑v化;萄}d[货v]倾=0;s[哑v]详=t谁ru圈e;fo披r易(in初ti=坟1;宇i<它n;i+辛+)冠{in貌tte侨mp议=ma治xi翁nt;in肥tu=忠v;fo歼r字(in萌tj秤=雁1;j<蜡=n;j+慎+)单源坚最短捆路径朵问题培的Di煎jk连st睬ra算法58if壤(墙(!盒s[制j]节)&昨&(瓣d[莲j]百<t崭em最p)爽){u=饲j;te丑mp毁=d察[j仓];}s[豪u]飘=t获ru抱e;fo监r蕉(in啄tj=塑1;j<温=n;脏j++火)if延((葛!s蹄[j抖])&&(c联[u客][掉j]菠<ma翼xi味nt))挥{Ty朵pene秃wd=d[嗽u]+c奴[u校][淋j];if载(ne踏wd<d岁[j喜])虫{d[紫j]=ne姜wd;pr鲁ev治[j]=赠u;世}}欧}}单源慢最短蜘路径扇问题黎的Di梳jk继st味ra算法予(续拾)59604.词5单源纳最短怒路径2、算兄法的归正确乳性和叠计算仗复杂启性(1悔)贪心竹选择得性质(2孟)最优吵子结亏构性强质(3惨)计算别复杂捕性对于协具有n个顶竖点和e条边份的带拼权有块向图疾,如锣果用轻带权揭邻接照矩阵楚表示踪蝶这个把图,辅那么Di蓝jk板st堪ra算法猎的主监循环尿体需狠要侧时古间。练这个崭循环论需要习执行n-柳1次,华所以漂完成记循环岩需要编时巾间。粮算法秤的其牺余部妨分所拒需要恭时间拦不超锐过。614.宜6最小币生成怒树设G剃=(散V,简E)是无业向连钟通带袍权图互,即番一个网络。E中每喇条边(v,唐w)的权颈为c[歇v]晴[w]。如析果G的子谊图G’是一战棵包后含G的所读有顶把点的蕉树,圾则称G’为G的生酸成树电。生泥成树居上各兼边权幸的总确和称植为该被生成槐树的耗费。在G的所内有生凯成树咱中,芹耗费祖最小做的生价成树肝称为G的最小犬生成院树。网络游的最赔小生欧成树聪在实蜡际中稻有广父泛应翠用。例如,在绢设计岸通信惠网络舌时,辞用图乓的顶告点表守示城植市,食用边(v,俩w)的权c[液v]剧[w]表示制建立若城市v和城垒市w之间拖的通失信线曲路所用需的烧费用叶,则引最小梁生成跑树就蚀给出它了建雨立通教信网墙络的络最经甚济的雹方案恒。624.向6最小舟生成仅树1、最仔小生闲成树即性质用贪极心算绪法设各计策硬略可葬以设兆计出议构造闯最小桌生成渣树的猾有效道算法冒。本筐节介惠绍的港构造策最小限生成堪树的Pr虚im算法和Kr浩us弟ka喘l算法都可池以看振作是鲜应用丽贪心报算法庭设计邪策略线的例怕子。吹尽管海这2个算特法做枪贪心谦选择磁的方盗式不民同,举它们夺都利吊用了侄下面脊的最小衬生成醋树性写质:设G=疾(V起,E粱)是连仆通带雕权图见,U是V的真梳子集宾。如锡果(u,鹿v)E,且uU,vV-U,且扩在所凯有这专样的尝边中包,(u,器v)的权c[算u]洞[v]最小辱,那驼么一耗定存急在G的一知棵最偿小生栏成树娘,它纵以(u,社v)为其咳中一众条边爸。这辉个性睛质有聚时也扩称为MS畜T性质。634.液6最小洒生成剂树2、Pr衫im算法设G=督(V氧,E驻)是连布通带议权图砍,V=猎{1鄙,2刚,…俭,n汉}。构造G的最蛾小生绑成树狠的Pr消im算法杯的基本钉思想是:喉首先夜置S=赚{1授},然罗后,秆只要S是V的真盏子集蓬,就毅作如厌下的贪心汽选择芦:选取察满足山条件iS,jV-S,且c[喂i]象[j]最小肥的边即,将罪顶点j添加似到S中。哥这个熄过程山一直接进行点到S=葛V时为山止。在这贡个过革程中舟选取塑到的积所有驾边恰忽好构内成G的一予棵最小错生成弃树。644.优6最小嚷生成辈树利用晨最小基生成钓树性困质和披数学葬归纳走法容旷易证把明,她上述套算法步中的边集穴合T始终者包含G的某恭棵最贿小生亦成树椒中的萄边。因块此,裳在算尽法结安束时勺,T中的逼所有筝边构普成G的一稻棵最节小生嫂成树的。例如,对民于右拦图中炒的带曲权图动,按Pr食im算法选取固边的窗过程副如下渐页图涛所示。654.冒6最小乞生成贫树例1:66abcdegf195141827168213127例2:aedcbgf148531621所得谋生成腐树权犹值和=才14非+8觉+3丹+5计+1柏6+刷21饥=蝇6灶767例3:165432651356642513116314164314211643214251654321425368694.欢6最小顽生成格树算法鱼实现博:图用振邻接浓矩阵伶表示。算法惕时间肌复杂姻度:Pr箱im算法涌所需辆的计算雷时间为疫。704.启6最小骂生成辽树3、Kr桥us凯ka剩l算法Kr期us熔ka匀l算法竹构造G的最巩小生礼成树藏的基本筑思想是,皇首先霞将G的n个顶碰点看光成n个孤贺立的填连通阀分支好。将贱所有倍的边话按权承从小长到大韵排序喇。然晚后从习第一毫条边甩开始控,依外边权抄递增危的顺歇序查敏看每沿一条法边,卧并按荣下述述方法亮连接2个不疯同的姻连通药分支爹:当秒查看责到第k条边(v,临w)时,如果貌端点v和w分别向是当饰前2个不械同的州连通擦分支T1和T2中的粮顶点苗时,区就用岂边(v,弊w)将T1和T2连接炸成一熟个连功通分严支,然侵后继素续查禽看第k+望1条边名;如宁果端践点v和w在当量前的拜同一妥个连罪通分输支中侨,就附直接牌再查赏看第k+闭1条边拍。这醋个过雨程一浅直进而行到交只剩愧下一述个连奸通分挽支时抢为止肤。71例1654326513566425165432123453、Kr墙us悬ka轮l算法4.料6最小那生成院树724.顶6最小长生成颈树例如魔,对前盼面的候连通福带权村图,沿按Kr彻us瓜ka顶l算法回顺序果得到锤的最读小生什成树嘱上的彻边的交过程呼如下运图所文示。7374754.钓6最小天生成辟树Kr辽us护ka未l算法毯的时安间复盏杂度:当图芦的边幕数为e时,Kr咽us睛ka锡l算法射所需醒的计算蚁时间是涝。当捆时屠,Kr站us印ka越l算法吼比Pr害im算法闲差,己但当龙时拿,Kr咏us冈ka宴l算法绞却比Pr漆im算法戚好得乓多。76普里坐姆算犹法克鲁扬斯卡够尔算徐法时间爹复杂反度O(剑n2)O(哑el葡og贫e)稠密贺图稀疏组图算法霉名适应呆范围比较屡两种荐算法774.优7多机膛调度祥问题多机挨调度单问题要求语给出秩一种窄作业史调度薯方案婆,使裙所给剧的n个作返业在朝尽可计能短鬼的时桶间内苍由m台机衫器加腾工处猫理完圆成。这个废问题铲是NP完全芳问题,到粗目前逆为止既还没鄙有有酒效的营解法蔑。对朗于这哭一类喇问题,用贪心江选择卸策略有时怎可以谎设计背出较帮好的示近似勺算法牛。约定解,每桐个作巨业均形可在场任何慈一台酬机器传上加导工处华理,乱但掏未完摊工前朴不允益许中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年全国叉车司机职业技能竞赛货物堆码规范考核试卷
- 2025年农业面源污染治理投诉处理考核试卷
- 2025年药师(西药)《临床药物治疗学》新型抗肿瘤药物医保支付标准实施要点考核试卷
- 债权出资协议书
- 协议书离婚 抚养权
- 协议书的日语
- 外聘人员保密协议书
- 提成合作协议书
- 刑事和解协议书范本
- 客户营销智能营销方案
- 新人教版七年级英语上册预备篇1―3单元测试卷
- HR如何筹划年终奖?(10大经典个税筹划案例)汇编
- 中国糖尿病防治指南课件
- 抵押还款协议-1
- 制氢技术简介
- GB/T 79-2007内六角圆柱端紧定螺钉
- GB/T 12755-2008建筑用压型钢板
- OTN技术与应用(阿法迪)
- 高标准基本农田建设项目电力施工组织设计
- 隧道运营养护管理手册-下册
- 旋挖钻桩基施工方案
评论
0/150
提交评论