2016 - 2024

感恩一路有你

dijkstra算法步骤 试利用Dijkstra算法求图中从顶点a到其他各顶点间的最短路径,写出执行算法过程中各步的状态?

浏览量:2937 时间:2021-03-12 10:55:16 作者:admin

试利用Dijkstra算法求图中从顶点a到其他各顶点间的最短路径,写出执行算法过程中各步的状态?

1 c:2

2 c:2 f:6

3 c:2 f:6 e:10

4 c:2 f:6 e:10 d:11

5 c:2 f:6 e:10 d:11 g:14

6 c:2 f:6 e:10 d:11 g:14 b:15

(用Dijkstra算法)求出图中顶点1到其余各顶点的最短路径?

我用自己写的软件运行了一下,只截图顶点1到顶点8吧,橙色线就是最短路径了。 其实从图就不难看出答案,1-5-6-7-4-8。这也是1到各顶点5,6,7,4,8的各点最短路径。 如果顶点1到顶点3就是1-5-6-7-3.

利用Dijkstra算法求下图中从顶点1到其它各顶点间的最短路径,按下面表格形式?

初始化d[i]为无穷大,由于从v4开始,所以将d4=0,标记v4已选择。

下面开始Dijkstra算法:

和v4相连的且未标记的点有v2和v6,这样更新d2=20,d6=15,选择未标记所有点中最小的d6=15,标记v6已选择,这样我们算出了v4->v6最短距离d6=15;

从v6开始,和v6相连的且未标记的是v2,此时算d6 6=21>20,所以不更新d2,选择未标记所有点中最小的d2=20,标记v2已选择,这样算出了v4->v2最短距离d2=20;

从v2开始,和v2相连的且未标记的有v1和v5,d1=d2 10=30,d5=d2 30=50,选择未标记所有点中最小的d1=30,标记v1已选择,这样我们算出了v4->v1最短距离d1=30;

从v1开始,和v1相连的且未标记的有v3,d3=d1 15=45,选择剩下没被选的所有点的最小的d3=45(d5=50),标记v3已选择,这样我们算出了v4->v3最短距离d3=45

从v3开始,没有出去的路径,不更新距离,选择剩下没被选的所有点的最小的d5=50,标记v5已选择,这样我们算出了v4->v5最短距离d5=50.

此时所有的点都被访问,结束。

注:上面的标记点已选择注意下,在算法的实现中用的是将所有的点放入队列中,一旦一个点被选择就是说求出了最短距离,就从此队列删除该点,一直到此队列为空,结束算法,我写标记只是为了方便理解。

希望能帮你清晰了解Dijkstra算法,图论中很重要的算法之一。

dijkstra算法步骤 哈夫曼编码的优缺点 dijkstra最短路径算法表格

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。