什么是最短路径?简述经典的最短路径算法过程。
发布日期:2020-12-11
试题解析
最短路径算法
从某顶点出发,沿图的边到达另一顶点所经过的路径中,各边上权值之和最小的一条路径叫做最短路径。解决最短路的问题有以下算法,Dijkstra算法,Bellman-Ford算法,Floyd算法和SPFA算法等。
- 中文名
-
最短路径算法
- 解决问题
-
最短路径问题
- 外文名
-
Shortest Path Algorithm
- 定义
-
各边上权值之和最小的一条路径
最短路径
用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法能得出最短路径的最优解,但由于它遍历计算的节点很多,所以效率低。
- 中文名
-
最短路径
- 性质
-
一类经典算法问题
- 解决方法
-
SPFA算法
- 外文名
-
shortestpath
- 解决思路
-
由已知点/边向外扩展
简述
简述是一个汉语词汇,意思是用简要的语言陈述,描述或总结。
正确答案:
最短路径:就是指在带权有向图中,寻找从指定起点到终点的一条具有最小权值总和的路径。
经典的最短路算法
一、迪杰斯特拉(Dijkstra)算法:
由荷兰数学家E.W.Dijkstra于1959年提出的一个适用于非负权值网络的单源最短路算法,是目前求解最短路问题的理论上最完备、应用最广的经典算法,它可以给出从某指定节点到图中所有其他节点的最短路。
迪杰斯特拉(Dijkstra)算法主要思想是:按照路径长度逐点增长的方法构造一棵路径树,从而得到从该树的根节点(即指定起点)到其它所有节点的最短路。
按路径长度递增次序产生最短路径算法:
把V分成两组:
(1)S:已求出最短路径的顶点的集合
(2)V-S=T:尚未确定最短路径的顶点集合
将T中顶点按最短路径递增的次序加入到S中,
保证:
(1)从源点V 0到S中各顶点的最短路径长度都不大于从V 0到T中任何顶点的最短路径长度
(2)每个顶点对应一个距离值
S中顶点:从V 0到此顶点的最短路径长度
T中顶点:从V 0到此顶点的只包括S中顶点作中间
顶点的最短路径长度
求最短路径步骤
1、初始时令S={V 0},T={其余顶点},T中顶点对应的距离值
1)若存在 0,Vi>,为 0,Vi>弧上的权值
2)若不存在 0,Vi>,为μ
2、从T中选取一个其距离值为最小的顶点W,加入S
3、对T中顶点的距离值进行修改:若加进W作中间顶点,从V 0到Vi的距离值比不加W的路径要短,则修改此距离值
4、重复上述步骤,直到S中包含所有顶点,即S=V为止
二、弗洛伊德(Floyd)算法
算法思想:逐个顶点试探法
求最短路径步骤
初始时设置一个n阶方阵,令其对角线元素为0,若存在弧 ,则对应元素为权值;否则为μ
逐步试着在原直接路径中增加中间顶点,若加入中间点后路径变短,则修改之;否则,维持原值
所有顶点试探完毕,算法结束
解析:
暂无解析
题王网让考试变得更简单
扫码关注题王,更多免费功能准备上线!