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:num
17     for j = 1:num
18         if distance(i,j) == 0 & i ~= j
19             distance(i,j) = Inf;
20         end
21     end
22 end
23
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) > 0
28             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         end
33     end
34 end
35
36 %核心算法
37  for k = 1:num
38     for i = 1:num
39         for j = 1:num
40             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) ~= 0
46                     while liantong(i,j) ~= liantong(p,k) & p ~= k
47                         liantong(p,j) = liantong(p,k);
48                         p = liantong(p,k);
49                         r = r + 1;
50                     end
51                 else
52                     liantong(p,j) = liantong(p,k);
53                     r = r + 1;
54                 end
55             end
56             if r > maxnum
57                 maxnum = r;
58             end
59         end
60     end
61  end
62
63 %返回数据
64 optimal = distance;
65 path = liantong;
66 end

转载于:https://www.cnblogs.com/landiljy/p/7567167.html

『实践』Matlab实现Flyod求最短距离及存储最优路径相关推荐

  1. 『实践』VirtualBox 5.1.18+Centos 6.8+hadoop 2.7.3搭建hadoop完全分布式集群及基于HDFS的网盘实现...

    『实践』VirtualBox 5.1.18+Centos 6.8+hadoop 2.7.3搭建hadoop完全分布式集群及基于HDFS的网盘实现 1.基本设定和软件版本 主机名 ip 对应角色 mas ...

  2. 『实践』Yalmip获取对偶函数乘子

    『实践』Yalmip获取对偶函数乘子 一.sdpsetting设置 Yalmip网站给出的说明 savesolveroutput默认为0,需要设置为1才会保存输出结果. 下面是我模型的约束个数: 二. ...

  3. 『实践』Yalmip建模+Cplex类求解

    Yalmip建模+Cplex类求解 一.缘由 Yalmip只能设置部分Cplex的参数,所以需要调用Cplex类.而且optimize是Yalmip提供的常用函数,但此函数的返回结果参数有限. 图1 ...

  4. 『AD域攻防实践』第二期学习笔记

    上一周的直播课中,小伙伴们跟随御守实验室的师傅一起了解了"AD域在攻防对抗场景下的安全现状",课程结束后,我们为大家整理了学习笔记,也将录屏和PPT公布在了公众号和微信群,帮助大家 ...

  5. 『MTCNN』2万多字教科书式详解

    发现一篇关于MTCNN的博文,本来打算自己写一篇的,但看了这篇,我觉得不用我再写了,转载跟大家分享一下 尊重原创,转载自:https://blog.csdn.net/sinat_39783664/ar ...

  6. 『Numpy』常用方法记录

    numpy教程 防止输出省略号 import numpy as np np.set_printoptions(threshold=np.inf) 广播机制 numpy计算函数返回默认是一维行向量: i ...

  7. 2018年『web』开发者不得不知的技术趋势

    作为一个『web』开发者,无论是做前端还是后端,都应该时刻保持着对技术的敏感性.技术的流行需要一定时间的沉淀,有哪些web相关的技术会可能会在2018年成为web开发的新宠呢?下面列举业界经过实践并且 ...

  8. 『数据库』朴实无华且枯燥的数据库文章--关系数据理论

    『数据库』 朴实无华且枯燥的数据库教程–入门必看!(不收藏,真的吃亏了) 文章目录 问题的提出 规范化 数据依赖的公理系统 模式的分解 小结 问题的提出 一.概念回顾 关系:描述实体.属性.实体间的联 ...

  9. 『电子书』分享一波码农必备编程开发类书籍[转]

    分享一些书籍 看到书籍很多,感觉很不错,就收藏下来了,是百度盘的连接,失效的可以评论一下以此更新一下连接. 书籍清单 Python编程快速上手 细说PHP(第2版) Python核心编程(第3版) L ...

最新文章

  1. shell编程基础之基本文本工具集合
  2. 学python可以干嘛-学 Python 都用来干嘛的?
  3. 交叉线和直连线的线序,做法和使用场合
  4. reactjs定义组件:函数式组件
  5. SQL Server日期函数集合
  6. 使用Maven将文件上传和下载到S3
  7. CC1101超低功耗无线模块在物联网能门锁中的应用
  8. 微信JS-SDK选择相册或拍照并上传PHP实现
  9. 跟我一起学习ASP.NET 4.5 MVC4.0(四)(转)
  10. JavaScript循环刷新页面
  11. java file文件大小_Java实现获取文件大小的几种方法
  12. python抢课_python实现强智科技教务系统抢课(两种方法)
  13. Android Studio集成NDK开发环境
  14. Pycharm2018激活注册码(有效期至2019.05)python
  15. web项目经理手册-项目经理需要铭记在心...
  16. 12【不定式  动名词】to-infinitive gerund
  17. 基于Spring Boot的点餐微信小程序设计与实现
  18. 接口测试,利用charles修改app的任意字段
  19. css 高度塌陷_CSS高度塌陷问题解决方案
  20. PHP是核心思路,模拟 OICQ 的实现思路和核心程序(三) 转_php

热门文章

  1. 【Pytorch神经网络理论篇】 26 基于空间域的图卷积GCNs(ConvGNNs):定点域+谱域+图卷积的操作步骤
  2. 【Pytorch神经网络基础理论篇】 01 从零开始介绍深度学习算法和代码实现
  3. React中的组件通信——父传子、子传父、Context
  4. python 代码文件路径注意事项
  5. LeetCode 1710. 卡车上的最大单元数(排序,模拟)
  6. LeetCode 1576. 替换所有的问号
  7. LeetCode 251. 展开二维向量
  8. horizon流程图_项目实施流程和规范模板(测试方向)
  9. 机器学习:sklearn数据集与机器学习组成
  10. Django视图(python函数)