算法导论-25.1-最短路径与矩阵乘法
来源:互联网 发布:淘宝ceo和天猫ceo 编辑:程序博客网 时间:2024/05/16 09:03
一、介绍
二、代码
#include <iostream>#include <algorithm>using namespace std;#define N 6//点的个数#define M 10//边的个数//邻接矩阵struct Graph{int map[N+1][N+1];int row;Graph(int n):row(n){int i, j;for(i = 1; i <= N; i++){for(j = 1; j <= N; j++)if(i == j)map[i][j] = 0;elsemap[i][j] = 0x7fffffff;}}Graph(Graph &G){row = G.row;int i, j;for(i = 1; i <= N; i++){for(j = 1; j <= N; j++)map[i][j] = G.map[i][j];}}};int min(int a, int b){return a < b ? a : b;}void Print(Graph G){int i, j;for(i = 1; i <= N; i++){for(j = 1; j <= N; j++)cout<<G.map[i][j]<<' ';cout<<endl;}cout<<endl;}Graph Extend_Shortest_Paths(Graph L, Graph W){int i, j, k, n = W.row;Graph ret(n);for(i = 1; i <= n; i++){for(j = 1; j <= n; j++){ret.map[i][j] = 0x7fffffff;for(k = 1; k <= n; k++){if(L.map[i][k] != 0x7fffffff && W.map[k][j] != 0x7fffffff)ret.map[i][j] = min(ret.map[i][j], L.map[i][k] + W.map[k][j]);}}}return ret;}Graph Matrix_Multiply(Graph A, Graph B){int i, j, k, n = A.row;Graph ret(n);for(i = 1; i <= n; i++){for(j = 1; j <= n; j++){ret.map[i][j] = 0;for(k = 1; k <= n; k++){ret.map[i][j] = ret.map[i][j] + A.map[i][k] * B.map[k][j];}}}return ret;}Graph Slow_All_Pairs_Shortest_Paths(Graph W){int n = W.row, m;Graph L(W);for(m = 2; m < n; m++){L = Extend_Shortest_Paths(L, W);//Print(L);}return L;}Graph Faster_All_Pairs_Shortest_Paths(Graph W){int n = W.row, m = 1;Graph L(W);while(m < n - 1){L = Extend_Shortest_Paths(L, L);m = 2 * m;Print(L);}return L;}/*1 5 -12 1 12 4 23 2 23 6 -84 1 -44 5 35 2 76 2 56 3 10*/int main(){int i, start, end, value;Graph G(N);for(i = 1;i <= M; i++){cin>>start>>end>>value;G.map[start][end] = value;}Print(G);Slow_All_Pairs_Shortest_Paths(G);Faster_All_Pairs_Shortest_Paths(G);return 0;}
三、练习
25.1-1
SLOW-ALL-PARIS-SHORTEST-PATHS:
FASTER-ALL-PAIRS-SHORTEST-PATHS:
25.1-2
自己到自己不需要代价
25.1-3
单位矩阵E
25.1-5
25.1-6
25.1-7
25.1-8
25.1-9
25.1-10
- 算法导论-25.1-最短路径与矩阵乘法
- 算法导论-最短路径
- 算法导论—最短路径
- 算法导论 所有节点对的最短路径问题 矩阵法
- 【算法导论】矩阵乘法
- 算法导论-最短路径-Dijkstra算法+Bellman-Ford 算法
- 矩阵最短路径
- 《算法导论》笔记 第24章 24.4 差分约束与最短路径
- 第25章:每对顶点间的最短路径—基于矩阵乘法的动态规划算法
- 算法导论 所有节点对的最短路径
- 算法导论 所有结点最短路径问题 Johnson
- 算法导论-矩阵链乘法
- 矩阵链乘法 算法导论
- 矩阵链乘法--【算法导论】
- 【算法导论】矩阵链乘法
- 算法导论--------------Strassen矩阵乘法
- 算法导论之矩阵乘法
- 算法导论 矩阵链乘法
- 十个方法,让你的线框原型更具沟通能力
- vs2010安装后sql server 2008的安装:
- php连接mysql数据库
- pthread相关介绍
- struts 登录实例
- 算法导论-25.1-最短路径与矩阵乘法
- linux中创建特殊文件mknod命令用法详解:
- kmp 朴素和升级 附 hdu 1711 3746 思想
- UItableViewCell的复用机制,原理解答
- doGet与doPost的区别
- J2SE基础夯实系列之List中的数据如何根据对象的某一个或多个字段排序引出Comparable和comparator的使用
- Real-Time Shadow Technique
- Selenium获取页面中树形结构的值,并存储到Vector中
- 房地产不同视角