算法分析与设计-作业二-Dijkstra算法

本文深入解析了Dijkstra算法,一种用于解决单源最短路径问题的经典算法。文章详细阐述了算法的设计思路,包括如何利用Collected数组判断顶点是否被收录,如何使用dist数组保存最短路径,以及path数组保存上一个连接的顶点。通过逐步分析,读者可以理解Dijkstra算法的具体实现过程,包括初始化、收录原点、更新最短路径等关键步骤。

Dijkstra算法:单源最短路径

1、问题:

在这里插入图片描述

2、算法分析:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、算法设计

Collected数组用来判断顶点是否被收录,dist用来保存最短路径,path保存上一个连接的顶点
s为原点
先初始化数组:
Collected=0
Dist[v]=Graph->G[s][v];v:0->Graph->nv-1
Path[v]=s;
/*/收录s原点:
Dist[s]=0;
Collected[s]=1;
Path[s]=-1;
While(1){
V=/未收录顶点中最小权值的点/
如果v==-1 break;
/更新dist/
如果w未收录且与v连通
如果Graph->G[v][w]<0return flase
如果Dist[v]+Graph->G[v][w]<dist[w]
更新dist[w]
}
Return true
}

4、源码:

源码地址:https://github.com/ACynj/Dijkstra.git

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值