Floyd最短路算法的MATLAB程序.docx
- 文档编号:12447170
- 上传时间:2023-04-19
- 格式:DOCX
- 页数:14
- 大小:18.76KB
Floyd最短路算法的MATLAB程序.docx
《Floyd最短路算法的MATLAB程序.docx》由会员分享,可在线阅读,更多相关《Floyd最短路算法的MATLAB程序.docx(14页珍藏版)》请在冰豆网上搜索。
Floyd最短路算法的MATLAB程序
Floyd最短路算法的MATLAB程序
2006-08-1720:
14
%floyd.m
%采用floyd算法计算图a中每对顶点最短路
%d是矩离矩阵
%r是路由矩阵
function[d,r]=floyd(a)
n=size(a,1);
d=a;
fori=1:
n
forj=1:
n
r(i,j)=j;
end
end
r
fork=1:
n
fori=1:
n
forj=1:
n
ifd(i,k)+d(k,j) d(i,j)=d(i,k)+d(k,j); r(i,j)=r(i,k) end end end k d r end void Dijkstral(int v0) { int i; bool s[MAX_VEX]; for(i=0;i { d[v0][i]=map[v0][i]; s[i]=false; if((i! =0)&&(d[v0][i] p[v0][i]=v0; else p[v0][i]=-1; } s[v0]=true; d[v0][v0]=0; for(i=0;i { double min=INF; int u=v0; for(int j=0;j if(! s[j]&&d[v0][j] { u=j; min=d[v0][j]; } s[u]=true; for(int w=0;w { if((! s[w])&&(d[v0][w]>d[v0][u]+map[u][w])) { d[v0][w]=d[v0][u]+map[u][w]; p[v0][w]=u; } } } } Justin Hou 介绍 寻找最有价值路径(c语言) 描述: 从上(入口)往下行走,直到最下节点(出口)结束,将所经节点上的数值相加,要求找到一条最有价值路径(既是路径总数值最大)并输出总数值。 图: 入口 ↓ ③ /\ ⑤ ④ / \ / \ ① ② ⑤ \ / \ / ⑨ ⑧ \ / ③ 出口 ↓ 输入文件: (abc.in) 第一行只有一个数n(1<=n<=199),且n为奇数,说明节点的层。 从第二行到底n+1行为每一层中各节点的数值(在0和100之间),各个数用空格隔开,输入不要求判错。 输出文件: (abc.out) 只有一个数,为所求路径的价值数。 例子: 输入文件内容: 5 3 5 4 1 2 5 9 8 3 输出文件内容: 23 正文 /* * File: longest.c * Desciption: 动态规划算法计算网络的最长路线和最短路线 * Created: 2001/12/2 * Author: Justin Hou [mailto: justin_hou@] * */ #include #define N 7 /* 顶点数目 */ #define I 999 /* 表示无穷大 */ int graph[N][N] = { /* 图的邻接矩阵 */ {I, 4, 5, 8, I, I, I}, {I, I, I, 6, 6, I, I}, {I, I, I, 5, I, 7, I}, {I, I, I, I, 8, 9, 9}, {I, I, I, I, I, I, 5}, {I, I, I, I, I, I, 4}, {I, I, I, I, I, I, I} }; int List[N]; /* 存放拓扑序列 */ int TopologicalOrder(); /* 拓扑排序函数 */ void main() /* 主 函 数 */ { int i, j, k, l; int ee[N], el[N]; /* 最长最短距离 */ int path_e[N][N], path_l[N][N], n_e[N], n_l[N]; /* 记录路径数据 */ /* 初始化数据 */ for (i = 0; i < N; i++) { n_e[i] = 0; /* 到 i 的最短路线的结点数 */ n_l[i] = 0; /* 到 i 的最长路线的结点数 */ ee[i] = I; el[i] = 0; } ee[0] = el[0] = 0; /* 初始化头结点 */ path_e[0][0] = 0; path_l[0][0] = 0; n_e[0] = 1; n_l[0] = 1; /* 拓扑排序 */ if (! TopologicalOrder()) return; 未完 Top 2楼atlantis13579(更深的蓝)(^_^)回复于2002-07-2115: 42: 06得分0 作者 Justin Hou 介绍 寻找最有价值路径(c语言) 描述: 从上(入口)往下行走,直到最下节点(出口)结束,将所经节点上的数值相加,要求找到一条最有价值路径(既是路径总数值最大)并输出总数值。 图: 入口 ↓ ③ /\ ⑤ ④ / \ / \ ① ② ⑤ \ / \ / ⑨ ⑧ \ / ③ 出口 ↓ 输入文件: (abc.in) 第一行只有一个数n(1<=n<=199),且n为奇数,说明节点的层。 从第二行到底n+1行为每一层中各节点的数值(在0和100之间),各个数用空格隔开,输入不要求判错。 输出文件: (abc.out) 只有一个数,为所求路径的价值数。 例子: 输入文件内容: 5 3 5 4 1 2 5 9 8 3 输出文件内容: 23 正文 /* * File: longest.c * Desciption: 动态规划算法计算网络的最长路线和最短路线 * Created: 2001/12/2 * Author: Justin Hou [mailto: justin_hou@] * */ #include #define N 7 /* 顶点数目 */ #define I 999 /* 表示无穷大 */ int graph[N][N] = { /* 图的邻接矩阵 */ {I, 4, 5, 8, I, I, I}, {I, I, I, 6, 6, I, I}, {I, I, I, 5, I, 7, I}, {I, I, I, I, 8, 9, 9}, {I, I, I, I, I, I, 5}, {I, I, I, I, I, I, 4}, {I, I, I, I, I, I, I} }; int List[N];
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Floyd 短路 算法 MATLAB 程序