早教吧作业答案频道 -->数学-->
求有向图两个顶点间的最短路径的方法,用简单语言或举例描述.
题目详情
求有向图两个顶点间的最短路径的方法,用简单语言或举例描述.
▼优质解答
答案和解析
在交通网络中,常常会提出许多这样的问题:两地之间是否有路相通?在有多条通路的情况下,哪一条最近?哪一条花费最少等.交通网络可以用带权图表示,图中顶点表示域镇,边表示两城之间的道路,边上权值可表示两城镇间的距离,交通费用或途中所需的时间等.
以上提出的问题就是带权图中求最短路径的问题,即求两个顶点间长度最短的路径.
最短路径问题的提法很多.在这里仅讨论单源最短路径问题:即已知有向图(带权),我们希望找出从某个源点S∈V到G中其余各顶点的最短路径.
例如:下图(有向图G14),假定以v1为源点,则其它各顶点的最短路径如下表所示:
图 G14
从有向图可看出,顶点v1到v4的路径有3条:(v1,v2,v4),(v1,v4),(v1,v3,v2,v4 ),其路径长度分别为:15,20和10.因此v1到v4的最短路径为(v1,v3,v2,v4 ).
为了叙述方便,我们把路径上的开始点称为源点,路径的最后一个顶点为终点.
那么,如何求得给定有向图的单源最短路径呢?迪杰斯特拉(Dijkstra)提出按路径长度递增产生诸顶点的最短路径算法,称之为迪杰斯特拉算法.
迪杰斯特拉算法求最短路径的实现思想是:设有向图G=(V,E),其中,V={1,2,…,n},cost是表示G的邻接矩阵,cost[i][j] 表示有向边的权.若不存在有向边,则cost[i][j]的权为无穷大(这里取值为32767).设S是一个集合,其中的每个元素表示一个顶点,从源点到这些顶点的最短距离已经求出.设顶点v1为源点,集合S的初态只包含顶点v1.数组dist记录从源点到其他各顶点当前的最短距离,其初值为dist[i]=cost[v1][i],i=2,…,n.从S之外的顶点集合V-S 中选出一个顶点w,使dist[w]的值最小.于是从源点到达w只通过S 中的顶点,把w加入集合S中调整dist中记录的从源点到V-S中每个顶点v的距离:从原来的dist[v] 和dist[w]+cost[w][v]中选择较小的值作为新的dist[v].重复上述过程,直到S中包含V中其余顶点的最短路径.
最终结果是:S记录了从源点到该顶点存在最短路径的顶点集合,数组dist记录了从源点到 V中其余各顶点之间的最短路径,path是最短路径的路径数组,其中path[i] 表示从源点到顶点i之间的最短路径的前驱顶点.
以上提出的问题就是带权图中求最短路径的问题,即求两个顶点间长度最短的路径.
最短路径问题的提法很多.在这里仅讨论单源最短路径问题:即已知有向图(带权),我们希望找出从某个源点S∈V到G中其余各顶点的最短路径.
例如:下图(有向图G14),假定以v1为源点,则其它各顶点的最短路径如下表所示:
图 G14
从有向图可看出,顶点v1到v4的路径有3条:(v1,v2,v4),(v1,v4),(v1,v3,v2,v4 ),其路径长度分别为:15,20和10.因此v1到v4的最短路径为(v1,v3,v2,v4 ).
为了叙述方便,我们把路径上的开始点称为源点,路径的最后一个顶点为终点.
那么,如何求得给定有向图的单源最短路径呢?迪杰斯特拉(Dijkstra)提出按路径长度递增产生诸顶点的最短路径算法,称之为迪杰斯特拉算法.
迪杰斯特拉算法求最短路径的实现思想是:设有向图G=(V,E),其中,V={1,2,…,n},cost是表示G的邻接矩阵,cost[i][j] 表示有向边的权.若不存在有向边,则cost[i][j]的权为无穷大(这里取值为32767).设S是一个集合,其中的每个元素表示一个顶点,从源点到这些顶点的最短距离已经求出.设顶点v1为源点,集合S的初态只包含顶点v1.数组dist记录从源点到其他各顶点当前的最短距离,其初值为dist[i]=cost[v1][i],i=2,…,n.从S之外的顶点集合V-S 中选出一个顶点w,使dist[w]的值最小.于是从源点到达w只通过S 中的顶点,把w加入集合S中调整dist中记录的从源点到V-S中每个顶点v的距离:从原来的dist[v] 和dist[w]+cost[w][v]中选择较小的值作为新的dist[v].重复上述过程,直到S中包含V中其余顶点的最短路径.
最终结果是:S记录了从源点到该顶点存在最短路径的顶点集合,数组dist记录了从源点到 V中其余各顶点之间的最短路径,path是最短路径的路径数组,其中path[i] 表示从源点到顶点i之间的最短路径的前驱顶点.
看了求有向图两个顶点间的最短路径的...的网友还看了以下:
读“澳大利亚年降水量分布图”(单位:mm),回答下列问题。8分(1)描述澳大利亚年降水量的空间分布 2020-05-14 …
盒子里有10个球,每次可以从里面拿出一个或两个,要把所有球拿完,有多少种不同的拿法?请你简单说明. 2020-07-10 …
盒子里有10个球,每次可以从里面拿出一个或两个,要把所有的球拿完,有多少种不同的拿法?请简单说明并 2020-07-10 …
如图所示为同一实验室中甲、乙两个单摆的振动图象,从图象可知()A.两摆球质量相等B.两单摆的摆长相 2020-07-30 …
如图所示,甲、乙是摆长相同的两个单摆,它们中间用一根细线相连,两摆线均与竖直方向成θ角.已知甲的质 2020-07-31 …
如图所示,虚线和实线分别为甲、乙两个弹簧振子做简谐运动的振动图象.已知甲、乙两个物体质量相等.则( 2020-08-01 …
读图1、图2回答下列问题:(1)请比较图中两条河流汛期出现的异同?并简述其形成原因是什么?(2)请比 2020-11-05 …
盒子里有10个球,每次可以从里面拿出一个或两个,要把所有的球拿完,有多少种不同的拿法?请简单说明并用 2020-11-25 …
(1)氨基树脂常用于做装饰板的贴面,下图是其结构片段,它可以看做是两种单体缩合而成,这两种单体的结构 2020-12-28 …
在同一地点的两个单摆做简谐振动图象如图所示,则由图象可知,两单摆的()A.摆长一定相等B.摆球质量一 2021-01-02 …