『实践』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年起,该杂志每年都会评选出当年的…

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

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

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

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

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

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

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

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

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

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

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文件,下载后直接安装,建议默认安装过程中的选项,安装目录默认C:\Program F…

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

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

智能发展与双重建构

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

前途无量的MEMS传感器

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

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

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

Java IO流

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

Nature:FB和推特的数据是如何革新社会科学,改变世界的?

大数据文摘出品来源:nature编译:张睿毅2007年,一群有野心的科学家召集了一次会议,讨论新兴的社会科学数据处理的艺术。他们想运用自己的技能来改变世界。在演讲中,马萨诸塞州剑桥市哈佛大学的政治学家加里金&#xff0…

格力入局的数控机床,掌握“核心科技”有多难?

来源:脑极体梦想还是要有的,万一要实现了呢?即便不能马上实现,坚持努力也是可以的。2016年,在格力主办的“第二届中国制造高峰论坛”上,董明珠曾放出这样的豪言壮语:两年后,做出最顶…

深度解析:国产化软硬件全景梳理

本文来源:信创研究框架作者:谢春生、郭雅丽、郭梁良、金兴内容包括产业概括,发展背景、推进节奏和产业全景图,云计算全栈架构、产业链全景图。核心技术,CPU处理器、操作系统、中间件、办公套件、安全保密等。芯片处理器…

空间连接时计算总和_学习CALCULATE函数(六)丨帕累托之累计求和

(写在前面的话:非常感谢韭菜大神和冬神的指点,万分感谢。)哎,说归说,还是需要继续学习CALCULATE函数,也是蛮无奈的。最近白茶在研究帕累托分析法,本期分享一下帕累托ABC分析法的基础——累计求和。这里简要…

揭秘仿人机器人背后的技术秘密 | 优必选研究院技术专家刘益彰【附PPT】

来源:机器人大讲堂机器人大讲堂直播间037期目前国际上主要有两种控制方式的仿人机器人:一种是基于位置控制的仿人机器人,另一种是基于力矩控制的仿人机器人。由于类人运动的功能的多样性、复杂性以及高维度性,所以仿人机器人的研究…

luoguP1463:反素数ant(打表心得☆)

题目描述对于任何正整数x&#xff0c;其约数的个数记作g(x)。例如g(1)1、g(6)4。如果某个正整数x满足&#xff1a;g(x)>g(i) 0<i<x&#xff0c;则称x为反质数。例如&#xff0c;整数1&#xff0c;2&#xff0c;4&#xff0c;6等都是反质数。现在给定一个数N&#xff0…

席南华院士:数学的意义

本文转自返朴公众号2020年5月30日&#xff0c;中国科学院院士、中国科学院数学与系统科学研究院研究员席南华受邀作远程报告“数学的意义”&#xff0c;从数学的发展史、数学的特性、数学巨匠的一些观点以及数学美的含义等多个角度讲述了数学的意义。本文为报告文字整理版&…

2017-9-26 NOIP模拟赛

NOIP 2017 全真模拟冲刺 ---LRH&&XXY 题目名称 那些年 铁路计划 毁灭 题目类型 传统 传统 传统 可执行文件名 years trainfare destroy 输入文件名 years.in trainfare.in d…