- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
有向图中任意令两点之间的最短路径
有向图中任意两点之间的最短路径
问题
求出有向图中任意两点之间的最短路径并打印结果
语言环境
C++
问题分析
要解决有向图中任意两点之间的最短路径问题首先应解决的问题是
从源点到其余各点的最短路径问题
每一对定点之间的最短路径问题
对于”从源点到其余各点的最短路径问题” 有经典算法-------“迪杰斯特拉算法”.该算法的思想是:
(1). 如图(A)
图(A )
路径长度最短的最短路径的特点:
在这条路径上,必定只含一条弧,并且这条弧的权值最小。
下一条路径长度次短的最短路径的特点:
它只可能有两种情况:或者是直接从源点到该点(只含一条弧); 或者是从源点经过顶点v1,再到达该顶点(由两条弧组成)。
再下一条路径长度次短的最短路径的特点:
它可能有三种情况:或者是直接从源点到该点(只含一条弧); 或者是从源点经过顶点v1,再到达该顶点(由两条弧组成);或者是从源点经过顶点v2,再到达该顶点。
其余最短路径的特点:
它或者是直接从源点到该点(只含一条弧); 或者是从源点经过已求得最短路径的顶点,再到达该顶点。
由以上特点可知:
假设S为已求得最短路径的终点的集合,则可证明:下一条最短路径(设其终点为x)或者是弧(v,x),或者是中间只经过S中的顶点而最后到达终点x的路径。
假设此路径上有一个顶点不在S中,则说明存在一条终点不在S中,而长度比此路径短的路径。但这是不可能的,因为我们是按路径长度递增的次序来产生最短路径的,故长度比此路径短的所有路径均已产生,他们的终点必定在S中,即假设不成立。
设置辅助数组Dist,其中每个分量Dist[k] 表示 当前所求得的从源点到其余各顶点 k 的最短路径。
一般情况下,
Dist[k] = 源点到顶点 k 的弧上的权值
或者 = 源点到S中某顶点j的路径长度
+ 顶点j到顶点 k 的弧上的权值。
(1). 在所有从原点出发的弧中选取一条权值最小的弧即为第一条最短路径(如图(a ))
V0和k之间存在弧
V0和k之间不存在弧
其中的最小值即为最短路径的长度。
(2). 修改其它各顶点的Dist[k]值。假设求得最短路径的顶点为u,若 Dist[u]+G.arcs[u][k]Dist[k] 则将 Dist[k] 改为 Dist[u]+G.arcs[u][k]。
迪杰斯特拉算法程序段
Shortpath(Mgraph G,int v0, int path[], int dist[])
//path[v]为从v0到v的最短路径的前驱顶点,
//dist[v]为其当前的最短距离.s为全局变量,s[v]=1,
//表示v已在S集合中,即已求得从v0到v的最短距离。
{ For(v=0;vG.vexnum;++v)
{ s[v]=0; dist[v]=G.arcs[v0][v];
If(dist[v]infinity) path[v]=v0; //v0是v的前驱
else path[v]=-1; //v无前驱
}
dist[v0]=0; s[v0]=1; //S集中开始时只有v0
{ For(i=1;iG.vexnum;++i)
{ min=infinity;
for(w=0;wG.vexnum;++w)
if(s[w]==0) //w∈V-S
if(dist[w]min) {v=w; min=dist[w];}
s[v]=1; //将v加入S
for(w=0;wG.vexnum;++w) //调整其余在V-S的点
if(s[w]==0 (dist[v]+G.arcs[v][w]dist[w]))
{ dist[w]= dist[v] + G.arcs[v][w];
path[w]=v;
}
}
}
}
步骤 第一步 第二步 第三步 第四步 第五步 v1 ∞
∞
∞
∞
∞
无 v2 10
(v0,v2) v3 ∞
60
(v0,v2,v3) 50
(v0,v4,v3) v4 30
(v0,v4) 30
(v0,v4) v5 100
(v0,v5) 100
(v0,v5
您可能关注的文档
- 影楼门市销售技巧大全超有效_.doc
- 影院招商全套资料.doc
- 往届非师范类毕业生请下载往届非师范类毕业生申请人行政许可案卷卷宗2.doc
- 徐州市主城区河道蓝线专项规划文本.doc
- 徐斌《9的乘法口诀》教学实录与分析.doc
- 徐文军临床医学专科毕业论文.doc
- 影视广告设计制作1ppt.ppt
- 彭义铭反腐倡廉警示教育.ppt
- 徒手心肺复苏术操作流程.doc
- 御花苑夏威夷风情嘉年华活动方案.ppt
- 金融产品2024年投资策略报告:积极适应市场风格,行为金融+机器学习新发现.pdf
- 交运物流2024年度投资策略:转型十字路,峰回路又转(2023120317).pdf
- 建材行业2024年投资策略报告:板块持续磨底,重点关注需求侧复苏.pdf
- 宏观2024年投资策略报告:复苏之路.pdf
- 光储氢2024年投资策略报告:复苏在春季,需求的非线性增长曙光初现.pdf
- 公用环保2024年投资策略报告:电改持续推进,火电盈利稳定性有望进一步提升.pdf
- 房地产2024年投资策略报告:聚焦三大工程,静待需求修复.pdf
- 保险2024年投资策略报告:资产负债匹配穿越利率周期.pdf
- 政策研究2024年宏观政策与经济形势展望:共识与分歧.pdf
- 有色金属行业2024年投资策略报告:新旧需求共振&工业原料受限,构筑有色大海星辰.pdf
文档评论(0)