1、[问题分析] 对于一个含有n个顶点和e条边的图来说,从某一个顶点Vi到其余任一顶点Vj的最短路径,可能是它们之间的边(Vi,Vj),也可能是经过k个中间顶点和k+1条边所形成的路径(1≤k≤n-2)。
(资料图片)
2、下面给出解决这个问题的Dijkstra算法思想。
3、 设图G用邻接矩阵的方式存储在GA中,GA[i,j]=maxint表示Vi,Vj是不关联的,否则为权值(大于0的实数)。
4、设集合S用来保存已求得最短路径的终点序号,初始时S=[Vi]表示只有源点,以后每求出一个终点Vj,就把它加入到集合中并作为新考虑的中间顶点。
5、设数组dist[1..n]用来存储当前求得的最短路径,初始时Vi,Vj如果是关联的,则dist[j]等于权值,否则等于maxint,以后随着新考虑的中间顶点越来越多,dist[j]可能越来越小。
6、再设一个与dist对应的数组path[1..n]用来存放当前最短路径的边,初始时为Vi到Vj的边,如果不存在边则为空。
7、 执行时,先从S以外的顶点(即待求出最短路径的终点)所对应的dist数组元素中,找出其值最小的元素(假设为dist[m]),该元素值就是从源点Vi到终点Vm的最短路径长度,对应的path[m]中的顶点或边的序列即为最短路径。
8、接着把Vm并入集合S中,然后以Vm作为新考虑的中间顶点,对S以外的每个顶点Vj,比较dist[m]+GA[m,j]的dist[j]的大小,若前者小,表明加入了新的中间顶点后可以得到更好的方案,即可求得更短的路径,则用它代替dist[j],同时把Vj或边(Vm,Vj)并入到path[j]中。
9、重复以上过程n-2次,即可在dist数组中得到从源点到其余各终点的最段路径长度,对应的path数组中保存着相应的最段路径。
10、 下面给出具体的Dijkstra算法框架(注:为了实现上的方便,用一个一维数组s[1..n]代替集合S,用来保存已求得最短路径的终点集合,即如果s[j]=0表示顶点Vj不在集合中,反之,s[j]=1表示顶点Vj已在集合中)。
11、 Procedure Dijkstra(GA,dist,path,i); {表示求Vi到图G中其余顶点的最短路径,GA为图G的邻接矩阵,dist和path为变量型参数, 其中path的基类型为集合} Begin For j:=1 To n Do Begin {初始化} If j<>i Then s[j]:=0 Else s[j]:=1; dist[j]:=GA[i,j]; If dist[j]
12、首先来分析Dijkstra的算法思想设图G用邻接矩阵的方式存储在GA中,GA[I,j]=maxint表示vi,vj是不关联的,否则为权值(大于0的实数)。
13、设集合S用来存储保存已求得最短路径的终点序号,初始时S=[vi]表示只有源点,以后每求出一个终点vj,就把它加入到集合中并作为新考虑的中间顶点。
14、设数组dist[1..n]用来存储当前求得的最短路径,初始时vi,vj如果是关联的,则dist[j]等于权值,否则等于maxint,以后随着新考虑的中间顶点越来越多,dist[j]可能越来越小。
15、再设一个与dist对应的数组path[1..n]用来存放当前最短路径的边,初始时vi到vj的边,如果不存在边则为空。
16、执行时,先从S以外的顶点(即待求出最短路径的终点)所对应的dist数组元素中,找出其值最小的元素(假设为dist[m]),该元素值就是从源点vi到终点vm的最短路径长度,对应的path[m]中的顶点或边的序列即为最短路径。
17、接着把vm并入集合S中,然后以vm作为新考虑的中间顶点,对S以外的每个顶点vj,比较dist[m]+GA[i,j]与dist[j]的大小,若前者小,表明加入了新的中间顶点后可以得到更好的方案,即可求得更短的路径,则用它代替dist[j],同时把vj或边(vm,vj)并入到path[j]中。
18、重复以上过程n-2次,即可在dist数组中得到从源点到其余个终点的最短路径长度,对应的path数组中保存着相应的最短路径。
19、为了实现上的方便,用一个一维数组s[1..n]代替集合s,用来保存已求得最短路径的终点集合,即如果s[j]=0表示顶点vj不在集合中,反之,s[j]表示顶点vj已在集合中)。
20、Procedure dijkstra (GA,dist path,I) begin for j:= 1 to n do begin if j<>I then s[j]:=0;{j不在集合中} else s[j]:=1;{j在集合中}; dist[j]:=GA[I,J];IF dist [j]
本文到此分享完毕,希望对大家有所帮助。
标签:
1、[问题分析]对于一个含有n个顶点和e条边的图来说,从某一个顶点Vi到其余任一顶点Vj的最短路径,可能是它
会有许多莱莎的炼金工房童鞋想知道莱莎的炼金工房3十字审判配方怎么获得,那么以下第一资讯网小编为你带来
金投网提供中国银行女儿金金条价格今天多少一克(2023年05月02日),中国银行女儿金金条价格最新消息(2023
1、家用投影机的话,有两种选择,第一,用商务机在家里用。2、一般商务机的分别率是1024*768 如果要求不是
航程中,空乘为旅客保驾护航;赛场上,领队为全局排兵布阵;阡陌间,规划师绘出诗意栖居正所谓,劳动是世界
继多个城市放松楼市政策后,4月28日,惠州市惠阳区发布了《关于全方位宣传购房优惠政策的函》。这份优惠政
极目新闻记者致电景区,一位工作人员回应称,有两位游客受了轻伤,问题已解决,景区目前正常开放
原标题:大陆超2 4亿人次出游,台湾只能干眼馋?民进党全责早在五一假期前,淄博烧烤就“火出了圈”,...
直播吧5月2日讯阿森纳主帅阿尔特塔接受媒体的采访,驳斥了阿森纳需要更多强壮球员的论调,他表示梅西、伊涅
CBA消息:郭艾伦赛季报销,朱荣振或回归辽宁,广东搞定2米25中锋,鲁能,郭艾伦,朱荣振,辽宁队,广东队,cba,广
当地时间5月1日,美国白宫宣布将在5月11日取消对联邦雇员、联邦承包商和国际航空旅客的新冠疫苗接种要求。
青海新闻网·大美青海客户端讯记者近日从海东市市场监督管理局获悉,为进一步深化商事制度改革、推进企...
日前,大型系列主题公益活动绿色中国行—走进大美南阳暨2023首届世界月季博览会在河南省南阳市举办,来...
格隆汇5月1日丨环汇跌6 06%,报105 89美元,总市值277亿美元。环汇第一季度营收20 5亿美元,超预期的20 1亿
1、UGGame游戏平台是为PC端用户打造的一款steam游戏免费试玩平台答:这个只能试玩。2、不能直接购买游戏的!ug
新华社西宁5月1日电 题:玛尼坚:做合格的“蓝朋友”新华社记者李宁、李占轶、赵玉和“出发时撒一条,...
刚结束的“韵味杭州”2023年全国游泳冠军赛男子100米自由泳决赛中,浙江运动员潘展乐以47秒22打破了由韩...
4月29日,济南市文化和旅游局指导下,泉城导游义工与济南府学文庙联合举行“蒲公英计划”公益宣传活动。...
今日周一,截止目前美元兑日元报136 764,上涨0 35%。日元基本面行情分析5月1日,日元多头正准备迎接一段时
创业板影视板块股票(创业板影视上市企业名单),截至4月28日,创业板影视板块股票有幸福蓝海、华谊兄弟、会
X 关闭
X 关闭