floyd详解
来源:互联网 发布:华为网络技术学院 编辑:程序博客网 时间:2024/05/20 14:16
求单源最短路的算法相信大家都看过了,下面介绍一个各个点之间的最短路算法,它就是floyd算法,这个算法很好记忆,简单的一个三重循环。
我觉得floyd算法其实就用了一个原理:
对于图G(v,e)来说,图中从某个点到另外一个点的最短路其间顶多经过|v|个结点,而floyd算法正是将图的所有结点都加进来作为结点i->j的跳板,从而对图的每对结点进行至多|v|次松弛操作.
由于算法写起来比较简单,这里直接贴下代码:
#include <iostream>#define MAX 30#define INF 9999using namespace std;typedef struct Graph{ int vexnum; int vecnum; int map[MAX][MAX];} Graph;void floyd(Graph G){ int i,j,k; for(k=1; k<=G.vexnum; k++) for(i=1; i<=G.vexnum; i++) for(j=1; j<=G.vexnum; j++) { if(G.map[i][k]!=INF&&G.map[k][j]!=INF)//减少不必要加法操作 { if((G.map[i][k]+G.map[k][j])<G.map[i][j]) G.map[i][j] = G.map[i][k]+G.map[k][j]; } } cout<<"各个顶点间的最短距离分别为:"<<endl; for(i=1; i<=G.vexnum; i++) for(j=1; j<=G.vexnum; j++) cout<<i<<" "<<j<<" "<<dist[i][j]<<endl;}
- floyd详解
- Floyd-Warshall算法详解
- Floyd-Warshall算法详解
- floyd算法详解
- Floyd算法详解
- Floyd算法详解
- floyd 算法详解
- Floyd,Dijkstra的详解
- POJ-2240 Arbitrage(floyd详解)
- 最短路 dijsktra + floyd 详解
- Floyd(弗洛伊德)算法 详解+模板
- Floyd算法详解(转)
- floyd
- Floyd
- Floyd
- floyd
- floyd
- floyd
- RSync实现文件备份同步
- 谈谈如何应对软件开发中的需求变更
- Building and Installing ACE on Windows with Microsoft Visual C++
- Win7 显示器驱动已停止响应
- Win开发当中遇到的各种error以及解决方法
- floyd详解
- Android中RelativeLayout各个属性的含义
- 高性能网络I/O框架-netmap源码分析(4)
- 杭电2176
- 黑马程序员---Thread类总结
- uncaught exception: listDatabases failed:{ "errmsg" : "need to login", "ok" : 0 }
- Linux菜鸟-iconv
- 直接拿来用!最火的Android开源项目(一)
- hdu 1045 dfs 二分匹配