专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

王者编程大赛之五最短路径

  关注公众号后端搬运工《王者编程大赛之五最短路径》
  外卖平台为了让骑手能在一天里送出更多的外卖,需要不断的优化从商家A到用户G的路径或者商家B到用户E的路径及距离。
  请写出一种算法给你任意图中两点,计算出两点之间的最短距离。注:ABCDEFGH都可能是商家或者用户,点与点之间是距离。
  解题思路
  该题是求解无向图单源点的最短路径,经常采用Dijkstra算法求解,是按路径长度递增的次序产生最短路径。算法理论
  Dijkstra算法是运用了最短路径的最优子结构性质,最优子结构性质描述为:
  P(i,j){Vi,。。。,Vk,。。。Vs,Vj}是从顶点i到j的最短路径,顶点k和s是这条路径上的一个中间顶点,那么P(k,s)必定也是从k到s的最短路径。
  由于P(i,j){Vi,。。。,Vk,。。。Vs,Vj}是从顶点i到j的最短路径,则有P(i,j)P(i,k)P(k,s)P(k,j)。若P(k,s)不是从顶点k到s的最短路径,那么必定存在另一条从顶点k到s的最短路径P’(k,s),故P’(i,j)P(i,k)P’(k,s)P(k,j)P(i,j),与题目相矛盾,因此P(k,s)是从顶点k到s的最短路径。
  根据最短路径的最优子结构性质,Dijkstra提出了以最短路径长度递增,逐次生成最短路径的算法。譬如对于源顶点Vo,首先选择其直接相邻的顶点中最短路径的顶点Vi,那么可得从Vo到Vi顶点的最短距离D〔j〕min(D〔j〕,D〔j〕matrix〔i,j〕)(matrix〔i,j〕)为从顶点Vi到Vj的距离)。
  假设存在图G{V,E},V为所有顶点集合,源顶点为Vo,U{Vo}表示求得终点路径的集合,D〔i〕为顶点Vo到Vj的最短距离,P〔i〕为顶点Vo到Vj最短路径上的顶点。
  算法描述为:
  1)从VU中选择使D〔i〕值最小的顶点Vi,将Vi加入U中;
  2)更新Vi与任一顶点Vj的最短距离,即D〔j〕min(D〔j〕,D〔j〕matrix〔i,j〕);
  3)直到UV,便求得从顶点Vo到图中任一一点的最短路径;
  例如,求CG最短路径,算法过程可图示为:
  源顶点VoC,顶点与索引关系为AH07,初始时:U{false,false,false,false,false,false,false,false}D{INF,INF,0,INF,INF,INF,INF,INF}P{{},{},{C},{},{},{},{},{}}
  将顶点C包含至U中:U{false,false,true,false,false,false,false,false}
  更新顶点C至任一节点的距离:D{6,9,0,11,INF,INF,INF,INF}P{{C,A},{C,B},{C},{C,D},{},{},{},{}}
  再选择不在U中的最短路径顶点A,则将A包含至U中:U{true,false,true,false,false,false,false,false}
  更新顶点A至任一节点的距离:D{6,9,0,11,INF,25,INF,INF}P{{C,A},{C,B},{C},{C,D},{},{C,A,F},{},{}}
  继续选择不在U中的最短路径顶点B,则将B包含至U中:U{true,true,true,false,false,false,false,false}
  更新顶点B至任一节点的距离:D{6,9,0,11,16,25,INF,INF}P{{C,A},{C,B},{C},{C,D},{C,B,E},{C,A,F},{},{}}
  以此类推,直到遍历结束:U{true,true,true,true,true,true,true,true}D{6,9,0,11,16,21,33,16}P{{C,A},{C,B},{C},{C,D},{C,B,E},{C,B,E,F},{C,B,E,F,G},{C,D,H}}
  因此,CG的最短距离为33,最短路径为CBEFG。编码实现
  实现的代码如下,并将一一详细说明。define(MAX,9999999999);classPath{图对应索引数组publicindexMatrixarray();顶点与索引映射关系publicindexMaparray();publicstartPoint;publicendPoint;publiclen0;最短距离publicDarray();已寻找集合publicUarray();最短路径publicParray();publicfunctionconstruct(arraymatrix,startPoint,endPoint){thisindexMaparraykeys(matrix);thislencount(matrix);arraywalk(matrix,function(value){valuearrayvalues(value);});thisindexMatrixarrayvalues(matrix);thisstartPointarraysearch(startPoint,thisindexMap);thisendPointarraysearch(endPoint,thisindexMap);thisinit();}publicfunctioninit(){for(i0;ithislen;i){初始化距离thisD〔i〕thisindexMatrix〔thisstartPoint〕〔i〕0?thisindexMatrix〔thisstartPoint〕〔i〕:MAX;thisP〔i〕array();初始化已寻找集合if(i!thisstartPoint){arraypush(thisP〔i〕,i);thisU〔i〕false;}else{thisU〔i〕true;}}}publicfunctiongetDistance(){returnthisD〔thisendPoint〕;}publicfunctiongetPath(){paththisP〔thisendPoint〕;arrayunshift(path,thisstartPoint);foreach(pathasvalue){valuethisindexMap〔value〕;}returnpath;}}
  Dijkstra算法求解:publicfunctiondijkstra(){for(l1;lthislen;l){minMAX;查找距离源点最近的节点{v}vthisstartPoint;for(i0;ithislen;i){if(!thisU〔i〕thisD〔i〕min){minthisD〔i〕;vi;}}thisU〔v〕true;更新最短路径for(i0;ithislen;i){if(!thisU〔i〕(minthisindexMatrix〔v〕〔i〕thisD〔i〕)){thisD〔i〕minthisindexMatrix〔v〕〔i〕;thisP〔i〕arraymerge(thisP〔v〕,array(i));}}}}
  接收标准输入处理并输出结果:图matrixarray(Aarray(AMAX,B15,C6,DMAX,EMAX,F25,GMAX,HMAX),Barray(A15,BMAX,C9,DMAX,E7,FMAX,GMAX,HMAX),Carray(AMAX,B9,CMAX,D11,EMAX,FMAX,GMAX,HMAX),Darray(AMAX,BMAX,C11,DMAX,E12,FMAX,GMAX,H5),Earray(AMAX,B7,C6,D12,EMAX,F5,GMAX,H7),Farray(A25,BMAX,C6,DMAX,E5,FMAX,G12,HMAX),Garray(AMAX,BMAX,CMAX,DMAX,EMAX,F12,GMAX,H17),Harray(AMAX,BMAX,CMAX,D5,E7,F25,G17,HMAX),);CGwhile(!inputtrim(fgets(STDIN),r〔〕));pathnewPath(matrix,input{0},input{1});pathdijkstra();echopathgetDistance(),,implode(,pathgetPath()),PHPEOL;总结
  本问题是求无向图源点的最短路径,时间复杂度为O(nn),若求解有向图源点的最短路径,只需将相邻顶点的逆向路径置为,即修改初始图的矩阵。不得不说的是,比求单源点最短路径更加复杂的求某一对顶点的最短路径问题,也可以以每一个顶点为源点使用Dijkstra算法求解,但是有更加简洁的Floyd算法。

禽兽王朝无常人,将妃子做成琵琶,皇帝宫中裸奔扮女人禽兽王朝北齐,是中国历史上一个极为特殊的朝代。这个朝代的皇帝们,一个比一个更加疯狂,更加禽兽。他们的行为举止,让人们不禁感叹这些人到底是怎么当上皇帝的?北齐的皇宫裸奔事件,是这个朝浅论印度民族大起义中农民的作用和意义阅读文章前辛苦您点个关注,方便讨论和分享。我们每天为您更新精彩的内容!文木易编辑布咔历史简介印度民族大起义是19世纪印度最著名规模最大的反殖民主义武装起义,也是印度独立运动的开端。探索发现第16集白骨遍地的万骨寨,究竟发生过什么?专栏分类户外探索山寨匪洞地理坐标重庆市巫溪县天元乡拍摄取景卡门万骨寨探索成员户外孟少杰当地村民尸骨2023年3月12日,在同学父亲(任大叔)的带领下,我们前往重庆市巫溪县天元乡进行科学家巧妙ampampquot破解ampampquot光合作用为可再生能源的突破铺平道路研究人员已经入侵了光合作用的最早期阶段,光合作用是为地球上绝大多数生命提供动力的自然机器,并发现了从该过程中提取能量的新方法,这一发现可能催生清洁燃料和可再生能源的新方法。由剑桥大TVB版西游记猪八戒的千世情劫影视杂谈西游记哪个版本你最喜欢港版猪八戒黎耀祥多情自古空余恨,此恨绵绵无绝期。话说猪八戒原来是掌管天河八万水军的天蓬元帅。天蓬私动凡心,对嫦娥一见钟情,多次想表白嫦娥未果后,在一次梦幻西游109极品封天宫,无符1万4血994速,这样搭配才叫会玩!Hello大家好,我是浩仔!关注浩仔,每天给你带来最新梦幻西游游戏资讯!以下点评仅代表个人意见,不代表官方或平台立场。前两天给大家展示了一个109级全服4强的天宫,在拥有4件无级别茅台酒瓶里的珠子有啥作用?据说撬开后能多喝一两酒,是真的吗提到茅台酒,相信大家都不陌生,10个饮酒者里面至少有9个人都想喝,剩余一个人或许正在享受茅台的美味。了解过或者喝过茅台酒的酒友们都知道,茅台酒的瓶口有两个晶莹剔透的玻璃珠,有的人说浅析数字普惠金融影响城乡收入差距的机理作用文春尽安编辑文知远数字普惠金融是指利用数字技术手段为普惠金融的持续发展提供助力的服务形式,数字普惠金融深刻改变了小微弱势群体对金融服务的触达方式。以数字普惠金融便捷高效低成本的特点国家水网建设发挥积极作用保障经济发展惠民生央视网消息今年以来,一批重大水利工程建设取得积极进展。那么,过去一年,国家水网建设以及发挥的作用如何?一起通过一组数据看一下。2022年全年我国完成水利建设投资10893亿元,比2曾单场砍26分,上周又闪耀全明星,国产锡安真该值得被李春江重用这几年上海男篮大手笔投入,不仅有着充足的即战力,对于年轻球员的培养也很有一套,继上赛季提拔了戴昊李添荣这些小牛上一队后,本赛季他们又将李弘权程望樊这些年轻球员给派上了一队,这其中有哪一个王朝才是中国历史上真正的盛世唐朝是中国历史上继隋朝之后的大一统中原王朝,共历二十一帝,享国二百八十九年。中国历史上最繁华的时期之一,傲然屹立八方来朝,1237万平方公里的国土面积,与当时的阿拉伯帝国并称为世界
农民工,都要学建筑技术农民工,多数都在搞建筑,那么,农民工都要学建筑技术。搞建筑不难,难在懂图纸,修建一些高要求高技术的建筑。高难度的活,工资高,竞争小,钱也好拿,何乐而不为呢?农民犁田一些农民工不思进四川有座隐藏着的古镇,至今还保持着原始面貌,低调得让人遗忘秋日生活打卡季四川古镇千千万,如今有些古镇车水马龙,早已经成为了当地最热门的旅游打卡地,而有些古镇至今还保持着它的原貌,却很少有人知道它的存在,比如坐落在四川眉山境内既有一座低调的梦回三峡屈原故里,秭归古建筑人杰地灵的秭归,历史上出现过全国闻名的诗人与美女,也曾有无数闪耀着古人智慧的精美建筑。秭归胜迹溯源长。秭归不仅山川雄伟,风景如画,古老的建筑,与历史一样源远流长。岁月的尘土,悄然掩中国有个神奇的古镇一脚踏三省,三省一条街,一街有三语在中国的版图上,三省交界之地共有40余处。其中最为奇葩的,当数鸡鸣听三省,犬吠三省闻的豫鄂陕接壤处白浪街。摄兰叶青青,侵删初闻白浪街,当是儿时读贾平凹的白浪街,得知有这么一个神奇的茶马古道上遗落的古老小镇,一半烟火人间,一半避世桃源头条创作挑战赛有人说云南是流浪者的故乡,在云南的古镇里,可以治愈每一位受伤的旅客。悠闲,慢节奏的生活格调,可以安抚我们焦虑而躁动的心,在忙碌且枯燥的工作或生活中,给你一方栖息乐土。太惊艳!上海将新添一座大型中央公园!目前有这些中央公园,乘公交直达公园是一座城市的绿肺风和日丽的时候带上家人郊游赏花野餐别提有多惬意了!好消息来了上海即将诞生一座超惊艳的大型城市公园美兰湖中央公园。该公园坐落于宝山区罗店镇,与美兰湖仅隔了一条沪太中国规模最大的妈祖庙,封诰名称最长的神,就在泉州天后宫我们都知道海神妈祖是莆田的林墨,但是泉州的天后宫却被认定为国内外建筑规格最高规模最大的祭祀妈祖的庙宇,也是大陆妈祖庙中唯一被国务院审定公布的国家重点文物保护单位。说起妈祖,在我国沿关闭电商,取消外卖,恢复人间烟火气?还这么想的是什么人?文十夏现在,很少有人没有在网上买过东西或叫过外卖吧,甚至很多爷爷奶奶都很乐意在网上购物。对于大多数年轻消费者来说,外卖和电商都是非常重要的生活方式。在日常生活中,我们的很多购物活动陪娃学习也是一抹迷人的人间烟火我们家长应该把长看成是成长,而不是一股官气,要把家长二字看成与走入学堂的孩子一起成长的暗示。那样的话,你我就能摆正自身位置了,在陪娃学习的过程中就能心平气和了。作者马耳朵夜幕降临,古墓被破坏,1998年泉州一女致电市长我是公主,请保护我家祖坟清晨山雾缭绕,路上行人稀少,许世吟娥行色匆匆,她不愿浪费一丝一毫的时间,马不停蹄赶往泉州清源山。山上有一口大钟,经常有人到这里敲钟许愿。许世吟娥之所以这么匆忙,主要是有三个愿望想要泉州8地入选省金牌旅游村全域生态旅游小镇11月7日,省文化和旅游厅对外公示了2022年福建省金牌旅游村全域生态旅游小镇名单,泉州8地名列其中。为贯彻省委省政府乡村振兴战略,落实省政府工作报告关于建设一批金牌旅游村和全域旅
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网