数据结构和算法------最短路径

本文探讨了计算图中两点间最短路径的算法,包括Dijkstra算法和Floyd算法,同时提及了拓扑排序在解决此类问题中的应用。
摘要由CSDN通过智能技术生成

最短路径

Dijstra 算法

void shortestPath_DIJ(MGraph G, int v0, bool path[MaxVertexNum][MaxVertexNum], int pathlen[]) {
    
// ⽤ Dijstra 算法求有向⽹ G 的 v0 顶点到其余顶点 v 的最短路径 
// 如果 path[v][w]为 true,则 w 是从 v0到 v 当前求得最短路径上的顶点 
// pathlen[v]存储 v0 到 v 的最短路径⻓度 
bool final[G.vexnum]; // final[v]为 true 表示 v0 到 v 的最短路径已经求得 
for(int v=0; v<G.vexnum; ++v) {
    // 初始化 final,path 和 pathlen 数组 
final[v] = false; 
pathlen[v] = G.Edge[v0][v]; 
for(int w=0; w<G.vexnum; ++w) path[v][w] = false; 
if(pathlen[v] <INF) {
    path[v][v0] = true; path[v][v] = true; } 
}pathlen[v0] = 0; 
final[v0] = true; // 将 v0加⼊顶点集合 S 开始主循环,每次求得 v0到某个 v 顶点的最短路径,并将 v 加⼊ S 集合 
for(int i=1; i<G.vexnum; ++i) {
    // 考虑剩下的 G.vexnum-1个顶点 
int min = INF, v; // 当前所知不在 S 中离 v0 顶点的最近距离 
for(int w=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值