Floyd算法求解所有顶点间的最短路径
2015-05-26 16:55
204 查看
•Floyd算法
–1. 引入数组D[N]
,其中D[i][j]表示从顶点i到顶点j的最短距离。
–2. 对于每一对顶点i和j,看是否存在顶点k使得通过k中转得到的D[i][j]更小。
#include <iostream>
using n
4000
amespace std;
const int MAX_INT = 1000000;
const int M = 4;
int graph[M][M];
void floyd(int g[M][M],int D[M][M])
{
for(int k = 0;k<M;k++) {
for(int i = 0;i<M;i++) {
for(int j = 0;j<M;j++) {
if(k == 0) {
D[i][j] =g[i][j];
} else {
D[i][j] = D[i][j] < (D[i][k]+D[k][j]) ? D[i][j] : (D[i][k]+D[k][j]);
}
}
}
}
}
void printgraph(int g[M][M],int v)
{
for(int i = 0;i<v;i++) {
for (int j = 0;j<v;j++) {
if(g[i][j] == MAX_INT) {
cout <<"*" << " ";
} else {
cout <<g[i][j ]<< " ";
}
}
cout << endl;
}
cout << endl;
}
int main()
{
int g[M][M]={{0,1,MAX_INT,MAX_INT},{MAX_INT,0,2,MAX_INT},{MAX_INT,MAX_INT,0,3},{4,MAX_INT,MAX_INT,0}};
printgraph(g,M);
floyd(g,graph);
printgraph(graph,M);
return 0;
}
–1. 引入数组D[N]
,其中D[i][j]表示从顶点i到顶点j的最短距离。
–2. 对于每一对顶点i和j,看是否存在顶点k使得通过k中转得到的D[i][j]更小。
#include <iostream>
using n
4000
amespace std;
const int MAX_INT = 1000000;
const int M = 4;
int graph[M][M];
void floyd(int g[M][M],int D[M][M])
{
for(int k = 0;k<M;k++) {
for(int i = 0;i<M;i++) {
for(int j = 0;j<M;j++) {
if(k == 0) {
D[i][j] =g[i][j];
} else {
D[i][j] = D[i][j] < (D[i][k]+D[k][j]) ? D[i][j] : (D[i][k]+D[k][j]);
}
}
}
}
}
void printgraph(int g[M][M],int v)
{
for(int i = 0;i<v;i++) {
for (int j = 0;j<v;j++) {
if(g[i][j] == MAX_INT) {
cout <<"*" << " ";
} else {
cout <<g[i][j ]<< " ";
}
}
cout << endl;
}
cout << endl;
}
int main()
{
int g[M][M]={{0,1,MAX_INT,MAX_INT},{MAX_INT,0,2,MAX_INT},{MAX_INT,MAX_INT,0,3},{4,MAX_INT,MAX_INT,0}};
printgraph(g,M);
floyd(g,graph);
printgraph(graph,M);
return 0;
}
相关文章推荐
- 所有顶点之间的最短路径——Floyd算法
- 所有顶点之间的最短路径算法:Floyd算法。
- Floyd算法求解每一对顶点之间的最短路径2
- Floyd算法-所有顶点之间的最短路径(C++模板)
- Floyd算法验证-每队顶点之间的最短路径
- Geeks面试题:Floyd Warshall Algorithm 所有顶点之间的最短路径问题
- 所有顶点对之间的最短路径之Floyd-Warshall算法
- 图——所有顶点之间的最短路径问题-弗洛伊德算法
- Floyd算法(所有点对最短路径)
- 动态规划之所有点对的最短路径问题(Floyd算法)
- 顶点间最短路径求解
- floyd算法求解最短路径
- 每对顶点间最短路径----Floyd算法 收藏
- 图的所有节点对之间的最短路径—Floyd算法(C++)
- 所有顶点间最短路径FloydWarshall算法头文件C++
- 每对顶点间最短路径----Floyd算法
- 所有顶点间最短路径FloydWarshall算法实现文件C++
- Python基于Floyd算法求解最短路径距离问题实例详解
- 所有顶点间最短路径FloydWarshall算法主例程C++
- 第十三周 每对顶点之间的最短路径(Floyd算法)