『实践』Matlab实现Flyod求最短距离及存储最优路径
来源:互联网 发布:bilibili以前知乎 编辑:程序博客网 时间:2024/06/07 01:11
Matlab实现Flyod求最短距离及存储最优路径
一、实际数据
已知图中所有节点的X、Y坐标。
图中的节点编号:矩阵中的编号
J01-J62:1-62;
F01-F60:63-122;
Z01-Z06:123-128;
D01-D02:129-130.
二、Floyd求所有节点间的最小距离及通过矩阵存储最优路径的节点
1 function [ optimal,path,maxnum ] = Floyd( distance,liantong,num,p,q ) 2 %Author:ljy 3 %Date:20170919 4 %弗洛伊德算法求最优路径和记录下最优路径中的节点信息 5 %distance为节点间的连通距离。通过已知的节点的X、Y坐标和连通矩阵计算而得。其中Inf为不连通节点间的距离。连通节点间的距离为正数(非Inf),连通情况通过连通(liantong)矩阵判断所得。 6 %num为所有节点个数 7 %p和q为不考虑路径的两端节点编号。例如p=[129,129];q=[9,10];表示129到9、129到10的路不连通。 8 %optimal为最优路径的距离信息 9 %path为最优路径的路径信息,行和列都为节点编号。path(i,j)为i到j的节点编号。例如:节点1到节点3的最优路径为1-》2-》3,那么path(1,3)=2;path(2,3)=3.
10 %maxnum:最长的最优路径的节点总数 11 %liantong:节点间的连通情况,0为不连通,1为连通。12 maxnum = 2;13 14 15 %将distance变为邻接矩阵16 for i = 1:num17 for j = 1:num18 if distance(i,j) == 0 & i ~= j19 distance(i,j) = Inf;20 end21 end22 end23 24 %将p与q之间的路径的权重赋值为Inf,即不考虑p与q之间这条路径的最优路径。p、q为0表示没有不考虑的路径25 for i = 1:size(p)26 for j = 1:size(q)27 if p(i) > 0 & q(j) > 028 distance(p(i),q(j)) = Inf;29 distance(q(j),p(i)) = Inf;30 liantong(p(i),q(j)) = 0;31 liantong(q(j),p(i)) = 0;32 end33 end34 end35 36 %核心算法37 for k = 1:num38 for i = 1:num39 for j = 1:num40 r = 2;%最优路径所包含的节点个数41 if distance(i,j) > distance(i,k) + distance(k,j)42 distance(i,j) = distance(i,k) + distance(k,j);43 %存储最优路径中的节点44 p = i;45 if liantong(p,j) ~= 046 while liantong(i,j) ~= liantong(p,k) & p ~= k47 liantong(p,j) = liantong(p,k);48 p = liantong(p,k);49 r = r + 1;50 end51 else52 liantong(p,j) = liantong(p,k);53 r = r + 1;54 end55 end56 if r > maxnum57 maxnum = r;58 end59 end60 end61 end62 63 %返回数据64 optimal = distance;65 path = liantong;66 end
阅读全文
0 0
- 『实践』Matlab实现Flyod求最短距离及存储最优路径
- 迪杰斯特拉算法处理无向图中最短路径的(dijkstra)Java实现(指定两点,求最短距离及路径)
- Dijkstra算法求最短距离并输出路径(Java实现)
- 求两地的最短距离
- 迪杰斯特拉算法求最短距离
- 求两点间最短距离
- Dijkstra算法求最短距离
- 求球面两点最短距离
- matlab实现最短路径
- 图的最短路径实现最优停车
- 求集合内多个点之间最短距离
- 求数组中元素的最短距离
- poj2251 三维bfs求最短距离
- HDU1007 求最短距离的点对
- floyd算法 多源路径最短距离
- 图邻接表类(图的遍历方法,最短距离及路径)
- 图论02—任意两点间最短距离及路径(经典)
- 图论03—任意两点间最短距离及路径(改进)
- 『实践』Yalmip获取对偶函数乘子
- 输入m和n两个正整数,求其最大公约数和最小公倍数
- Android中Activity触摸事件传递源码学习
- 『转载』Matlab中fmincon函数获取乘子
- KMD算法
- 『实践』Matlab实现Flyod求最短距离及存储最优路径
- 『实践』Yalmip建模+Cplex类求解
- Spring的搭建
- 星星 不知名的玄学看图题
- 算法实现
- js计算文件MD5值
- 机器学习入门学习笔记:(3.1)决策树算法
- Unity3D-VR、PC版本代码动态切换
- Spring MVC基础知识