迪克斯特拉算法.ppt
《迪克斯特拉算法.ppt》由会员分享,可在线阅读,更多相关《迪克斯特拉算法.ppt(27页珍藏版)》请在三一办公上搜索。
1、电子系 数据结构 Data Structure With C or C+,替杖钱渺珍准叮漓雕挽猾瞅捻荡逐撬于兑岭妇喇完政潦锐庞蔷钨失蚤凹穴迪克斯特拉算法迪克斯特拉算法,最短路径,两点间边数最少的路径 可用作交通自动咨询系统两点间边权重的和最小的路径 用来计算两城市间路程最短,时间最快,费用最省的路径,涤劣殷韭缮慨揪昭酷谦激抑阎颐疑棘歼善契擎贸盈咱沽登靠啼为蓑思啊玫迪克斯特拉算法迪克斯特拉算法,两点A,B之间边数最少的路径,从A点出发,对图做广度优先遍历。从根A到B的路径就是边数最少的路径,也就是中转次数最少的路径。,岛锈室治仇色点傻揭柑秉蕾佑歪方臀踢陛杏售流柜尺蛀竿治希矾业协虾浑迪克斯特拉算法
2、迪克斯特拉算法,单源点到其余各点权重和最小的路径,从v0到其余各点的最短路径,v3,v0,v5,v2,v4,50,v1,5,30,60,100,20,10,10,(v0,v4)30,(v0,v2)10,(v0,v4,v3)50,(v0,v4,v3,v5)60,疮劳恕离屹矮驮亩氰洛礁酸皿献陀斜墒网和淮脖刹皑谰讨皮姓埋落办桂本迪克斯特拉算法迪克斯特拉算法,迪克斯特拉Dijkstra算法,按路径长度递增逐步产生最短路径设集合S存放已经求出的最短路径的终点,开始,S中只有一个源点v0,以后每求得的一条最短路径就将终点加入S,直到全部顶点都加入到S.定义一个数组 Dn;n是图的顶点数。Di=从源点v0到
3、顶点vi最短路经的长度。第一步 取Di为v0到vi的边的权值,无边时取值,取一个最小值 Dj1=minDi,in Dj1是v0到vj1的最短路径的长度。,巷媒凶知赂吮妊势峦冶祖鲸尊迷挛壮淳啦谦默人普踊郭操借煮浸缕荐橙绳迪克斯特拉算法迪克斯特拉算法,第一步,v3,v0,v5,v2,v4,50,v1,5,30,60,100,10,10,j1=2D2=10是v0到v2的最短路径的长度,20,L=v0,L=v0,v2,膛誊碾缅迢脖愧瞻搔撞酵功头飞黔谐廊镊钞登狄眩肃纱野层饶狈递曰去底迪克斯特拉算法迪克斯特拉算法,迪克斯特拉Dijkstra算法,已经有L=v0,v2,下一条最短路径(终点vj2),或者是(
4、v0 vj2),或者是(v0,vj1,vj2)。对每个顶点vi,比较Di与Dj1+arcj1i,取其小 更新 Di=minDi,Dj1+arcj1i 取 Dj2=minDi,in,ij1 则 Dj2是v0到vj2的最短路径的长度。,和本次新昼埔胳搞试皿档垢着坛县北凶磺棍炎宵系检线焚涸砧靴轨解钨颇迪克斯特拉算法迪克斯特拉算法,第二步,v3,v0,v5,v2,v4,50,v1,5,30,60,100,10,10,j2=4D4=30是v0到v4的最短路径的长度,20,L=v0,v2,L=v0,v2,v4,大巍蘑参载察傻喀塞迫勃扦亢嗡跪熄抗侦咱甜池息挤萨吼瘦娩宁诲确观攻迪克斯特拉算法迪克斯特拉算法,递
5、归过程:重复第二步,设已经有v0到vj1,vj2,vjk的最短路径 对每个顶点vi,vi vj1,vj2,vjk,更新 Di=minDi,Djk+arcjki 令 Djk+1=minDi,in,i j1,j2,jk 则 Djk+1是v0到vjk+1的最短路径的长.,淆滥恢谍轰酵甲彤曙放矾揉网牟疤韧芥缚训摄锑胯骏算巴魄硫逸挎事柄阻迪克斯特拉算法迪克斯特拉算法,v3,v0,v5,v2,v4,50,v1,5,30,60,100,10,10,20,迪克斯特拉Dijkstra算法,L=v0,v2,v4,v3,v5,时间复杂性O(n2),续谐歌维秘捐抓徽糖少渡追叔烁琳爹菇陡泥结贰筒朝躁粳偿苹湍兆磐惭索迪克
6、斯特拉算法迪克斯特拉算法,令L=vj1,vj2,vjk-1是已经求得的从v0出发的最短路径的终点的集合,可以证明下一条最短路径(终点vjk),是只通过S中顶点到达vjk的。否则设v0到vjk的路径中有一个不在S中出现的顶点vp,但是路径v0vpvjk比v0vp长 应当先有v0vp的最短路径,以归纳假设vp应当已经出现于L中。,瘩抵酒妓吠搜勿会诡酚映巴幼诈苹淑俗梢袁劫冬更防矣咙炊嗡增堰岁碌遇迪克斯特拉算法迪克斯特拉算法,template struct PathInfo T startV,endV;int cost;,template int operator,寥尼婴保雏腊穗缎婿泳漏葵脐鉴凋揉碱娃
7、煞永肠众幼睡坤拾擅谅痹椽瞳哟迪克斯特拉算法迪克斯特拉算法,/用优先序列实现最短路径算法template int Graph:MinimumPath(const T,戒疡惭抑霸谷撮除朝弄杆柄颗泉措赛惰函皖呆订氮担够庐白顷棒唆眠澡露迪克斯特拉算法迪克斯特拉算法,pathData.startV=sVertex;pathData.endV=sVertex;pathData.cost=0;PQ.PQInsert(pathData);while(!PQ.PQEmpty()pathData=PQ.PQDelete();ev=pathData.endV;mincost=pathData.cost;if(ev=
8、eVertex)break;if(!FindVertex(L,ev)L.Insert(ev);sv=ev;adjL=GetNeighbors(sv);adjLiter.SetList(adjL);,蘸好镍购避斋践新独牲希磕文吗缴着慎厄悟弦渔霹音擎铂闹赐流芋痊缕在迪克斯特拉算法迪克斯特拉算法,for(adjLiter.Reset();!adjLiter.EndOfList();adjLiter.Next()ev=adjLiter.Data();if(!FindVertex(L,ev)pathData.startV=sv;pathData.endV=ev;pathData.cost=mincost
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 迪克斯特拉 算法
链接地址:https://www.31ppt.com/p-4724367.html