任意两点间最短路径算法实现
2010-06-03 13:25
363 查看
使用动态规划计算任意两点间的最短路径,O(n^3)的复杂度,与基于Dijkstra的floyd算法复杂度一样,
但有些情况下有更好的性能
但有些情况下有更好的性能
/* *时间:2010-05-13 *作者:heroyan *邮箱:zndxysf@126.com *QQ:357351104 *功能:求任意两结点之间最短路径长度 */ #include "stdio.h" const int INFINITY = 9999; int n = 3; int cost[10][10] = { {0,4,11}, {6,0,2}, {3,9999,0} }; int A[10][10]; int path[10][10]; //另一种实现:弗洛伊德算法,基于Dijstra算法 //本算法使用动态规划算法 void dynam() { int i,j,k; //将A初始化为cost for(i = 0; i < n; ++i) { for(j = 0; j < n; ++j) { A[i][j] = cost[i][j]; path[i][j] = i; } } for(k = 0; k < n; ++k) { for(i = 0; i < n; ++i) { for(j = 0; j < n; ++j) { if(A[i][j] > A[i][k]+A[k][j]) { A[i][j] = A[i][k]+A[k][j]; path[i][j] = k; } } } } } //打印结果 void print() { int i,j; for(i = 0; i < n; ++i) { for(j = 0; j < n; ++j) { if(A[i][j] >= INFINITY) { printf("INFINITY "); } else { printf("%d ",A[i][j]); } } printf("/n"); } } void main() { dynam(); print(); }
相关文章推荐
- 任意两点间最短路径算法实现
- Matalab代码 实现 Dijkstra求 有向图及无向图之间,任意两点之间的最短路径
- 【算法】单源最短路径和任意两点最短路径总结(补增:SPFA)
- 图两点间的最短路径,所有路径算法C语言实现
- Dijkstra单源最短路径实现 及 Floyd任意两点之间的最短路径
- 最短路径 (单源最短路径Dijkstra和任意两点最短路径Floyd) C实现
- 图两点间的最短路径,所有路径算法C语言实现
- acm题目及我的程序(2)——Knight Moves (骑士跳跃) ——任意两点间的最短路径所有信息(算法1)
- acm题目及我的程序(2)——Knight Moves (骑士跳跃) ——任意两点间的最短路径所有信息(算法2)
- Dijkstra [迪杰斯特拉]算法思路(求单点到其他每个点的各个最短路径)Floyd算法:任意两点间最短距离
- Hadoop生态圈技术光速入门(最短路径算法MR实现、社交好友推荐算法)
- 最短路径前两种算法实现 例题 sdut oj2143
- 最短路径算法—Dijkstra(迪杰斯特拉)算法分析与实现(C/C++)
- 最短路径算法—Dijkstra(迪杰斯特拉)算法分析与实现(Python)
- 最短路径算法,VC6源码,基于STL的实现
- 图的最短路径算法(Dijkstra,Floyd)的实现
- 最短路径算法设计与实现(Dijkstra算法和Floyd算法)
- warshall-floyd算法:POJ No 2139 Six Degress of Cowvin Bacon(任意两点最短路径))
- 图论算法-求(有向)图中任意两点间所有路径