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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487545.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MIT Technology Review 2020年“十大突破性技术”解读 【中国科学基金】2020年第3期发布...

来源:国家自然科学基金委员会MIT Technology Review 2020年“十大突破性技术”解读[编者按] 2020年2月26日,MIT Technology Review一年一度的“十大突破性技术”榜单正式发布。自2001年起,该杂志每年都会评选出当年的…

动态代理Java实现

思考:在IBuyWatermelon添加一个方法selectWatermelon() 静态代理中需要在RealSubject中实现该方法,而且Proxy也要实现该方法调用RealSubject中的实现,如果再增加10个方法还是得这样操作,导致大量的代码重复。 现在来看动态代理&am…

mysql 非等值条件 索引_慢SQL简述与定位

慢SQL日志简述通过命令和查看日志文件的方式直接查看mysql服务器的慢sql参数配置参数作用slow_query_log是否启用slow_query_log_file日志文件long_query_time慢sql阈值log_slow_adimin_statements是否记录数据库管理相关的sqllong_queries_not_using_indexes是否记录未使用索引…

大数据是怎么知道你去过新发地的?

来源:科学加(北京科技报记者:赵天宇)“经过全市大数据分析,您可能在5月30日(含)以后去过新发地批发市场……”随着新发地市场新冠源头被锁定,近日来,大数据筛查,成为不少北京市民在朋…

[模板]洛谷T3379 最近公共祖先(LCA) 倍增+邻接表

一年前听说的这东西。。。现在终于会了。。。 1 #include<cstdio>2 #include<iostream>3 #include<cstring>4 #include<cmath>5 #include<ctime>6 #include<cstdlib>7 8 #include<string>9 #include<stack>10 #include<que…

mysql更新数据能回滚吗_MySQL数据回滚-误更新和删除时快速恢复

这世界上有后悔药– www.houhuiyao.cc 后悔药数据恢复 站长语前面的内容也提到过update或delete误更新删除了数据后如何恢复。实际生产环境中常常因各种不同场景导致一些办法有效一些办法无效&#xff0c;当然&#xff0c;最有效的办法依然是备份&#xff01;虽然啰嗦&#xff…

口罩巨头挑战“量子霸权”,3个月造出的『最强量子计算机』靠谱不?

摘要霍尼韦尔(Honeywell)最近可是非常忙活。作为全球数一数二的口罩厂商&#xff0c;疫情期间霍尼韦尔一直在努力生产口罩&#xff0c;大家对它的印象也多停留在口罩生产者的层面。但是事实上&#xff0c;人家是正经的多元化高科技制造企业&#xff0c;航空产品、汽车产品、涡轮…

三极管稳压管组成的线性电源关键理解

1. A点电压为20V.B点电压是稳压管电压5.6V.则A到B的电流是固定的。 2. 加电后在调整三极管&#xff0c;负载&#xff0c; 稳压管的电流回路如图。&#xff08;注意电流方向&#xff0c;a->b电流方向和大小都是基本不变的。&#xff09; 转载于:https://www.cnblogs.com/ture…

oci连接mysql_使用 OCILIB 连接并操作 Oracle 数据库

OCILIB是一个跨平台的Oracle驱动程序&#xff0c;可提供非常快速和可靠地访问Oracle数据库。它提供了一个丰富&#xff0c;功能齐全&#xff0c;并易于使用的APIOCILIB是一个跨平台的Oracle驱动程序&#xff0c;&#xff0c;可提供非常快速和可靠地访问Oracle数据库。它提供了一…

万字长文:2020智源大会总结-多角度看AI的未来

来源&#xff1a;混沌巡洋舰导读&#xff1a;智源大会2020 聚焦AI的未来&#xff0c;大家都知道&#xff0c; 2010是深度学习的时代&#xff0c; 我们经历了AI从巅峰进入到瓶颈的过程。那么什么是2020这个十年AI的中心&#xff1f;近一段大家逐步从各个不同的角度切入到这个主题…

python OCR 图形识别

1、pip install pyocr 2、pip install PIL 3、安装tesseract-ocr http://jaist.dl.sourceforge.net/project/tesseract-ocr-alt/tesseract-ocr-setup-3.02.02.exe exe文件&#xff0c;下载后直接安装&#xff0c;建议默认安装过程中的选项&#xff0c;安装目录默认C:\Program F…

python生成文件夹并向文件夹写文件_python - 文件练习生成100个MAC地址写入文件

需求&#xff1a;生成100个MAC地址并写入文件中&#xff0c;MAC地址前6位(16进制)为01-AF-3B解题思路&#xff1a;要求生成这样格式的mac地址&#xff1a;01-AF-3B-xx-xx-xx首先生成-xx格式&#xff0c;16进制组成的数,注意MAC英文字母为大写。拼接成为&#xff1a;01-AF-3B-xx…

智能发展与双重建构

来源&#xff1a; 人机与认知实验室本文摘自1983.5《国内哲学动态》皮亚杰有关同化和顺应及其平衡的图式学说是对智慧机制的一种结构主义的共时性分析,但是他更重视对智慧机制进行建构主义的历时性研究。主体关于客体的知识以及主体自身的认识图式都不仅仅是一种状态体系 , 而首…

2017.09.21学习总结

两天的时间主要学习了html的基本结构&#xff0c;标签&#xff0c;列表以及表格。 表格方面<td><tr>总是弄混&#xff1b; 合并用起来有些眼花&#xff0c;不过仔细的研究一下还是没什么问题。 加油&#xff01;努力&#xff01;目标&#xff1a;资深码农~~转载于:…

springboot2整合mysql5_SpringBoot2整合SSM框架详解

SpringBoot2整合SSM框架详解发布时间&#xff1a;2019-01-15 21:33,浏览次数&#xff1a;1218, 标签&#xff1a;SpringBootSSM<>开发环境* 开发工具&#xff1a;Eclipse STS插件* JDK版本&#xff1a;9.0.4* MySQL版本&#xff1a;8.0.12* Spring Boot版本&#xff1a;…

前途无量的MEMS传感器

来源&#xff1a;转载自「民生证券」&#xff0c;谢谢微机电系统&#xff08;Microelectromechanical Systems&#xff0c;简称 MEMS&#xff09;是将微电子技术与精密机械技术结合发展出来的工程技术&#xff0c;尺寸在 1 微米到 100 微米量级&#xff0c;涵盖机械&#xff08…

怎么查看kudu的版本_apache版本kudu kudu-impala安装方法

kudu安装方法简介第一步&#xff1a;下载rpm包http://archive.cloudera.com/kudu/redhat/6/x86_64/kudu/5.12.2/RPMS/x86_64/kudu-1.4.0cdh5.12.20-1.cdh5.12.2.p0.8.el6.x86_64.rpmkudu-client-devel-1.4.0cdh5.12.20-1.cdh5.12.2.p0.8.el6.x86_64.rpmkudu-client0-1.4.0cdh5.…

错误:子进程 已安装 pre-removal 脚本 返回了错误号 1

解决办法sudo rm /var/lib/dpkg/info/<package name>.*转载于:https://www.cnblogs.com/rabitvision/p/7588113.html

【技术趋势】德勤发布2020技术趋势报告,五个新趋势可引发颠覆性变革

来源&#xff1a;产业智能官“2020 年的趋势将颠覆整个行业&#xff0c;并在未来十年重新定义业务&#xff0c;即使数字创新已成为各种规模企业的常规行为。”德勤管理咨询新兴技术研究总监兼政府及公共服务首席技术官 Scott Buchholz 在一份报告中如是说。近日&#xff0c;《德…

Java IO流

IO流是用来处理设备之间的数据传输的&#xff0c;Java对数据的操作都是使用流的方式处理的&#xff0c;而且Java将处理流的操作封装成IO流对象了。 一、IO流的分类 流按照操作的数据分为&#xff1a;字节流、字符流 流按照流的方向分为&#xff1a;输入流、输出流 二、字节流&a…