matlab求无向图的最短路径

1 matlab图论工具箱的函数

matlab图论工具箱主要用于求最短路径,最小生成树和最大流。
其常见命令如下表:

函数名功能
graphallshortestpaths求图中所有顶点对之间的最短距离
graphconncomp找无向图的连通分支,或有向图的强(弱)连通分支
graphisdag测试有向图是否含有圈,不含圈返回1,否则返回0
graphisomorphism确定两个图是否同构,同构返回1,否则返回0
graphisspantree确定一个图是否生成树,是返回1,否则返回0
graphmaxflow计算有向图的最大流
graphminspantree在图中找最小生成树
graphpred2path把前驱顶点序列变成路径的顶点序列
graphshortestpath求图中指定的一对顶点间的最短距离和最短路径
graphtopoorder执行有向无圈图的拓扑排序
graphtraverse求从一顶点出发,所能遍历图中的顶点

2 求无向图中任意两点间的最短路径

图片如下:
在这里插入图片描述
图中M2_1和M2_2之间的数字2057代表两点之间的距离。matlab中函数graphshortestpath用于求无向图任意两点间的最小距离。根据无向图,需要构造任意相邻两点之间的距离矩阵。
例如:

a(1,2)=2057 ;a(1,3)=2031;  

代表点M2_1和点M2_2之间的距离为2057,点M2_1和点M2_3之间的距离为2031

matlab编程实现求图中任意两点之间的距离最小值。

clc;
clear;
close all;
% 计算任意两个之间的最小距离
sum = 0;  %保存距离求和
a(1,2)=2057 ;a(1,3)=2031;   %1和点2之间的距离为2057,点1和点3之间的距离为2031
 a(2,3)=1967;  a(2,5)=1042; a(2,6)=1403; 
 a(3,4)=821;  a(3,5)=1115; 
 a(4,9)=2281; 
 a(5,8)=1905;
 a(6,7)=1329; 
 a(7,8)=1666; 
 a(8,9)=1513; 
 a = a';  %matlab工具箱要求数据是下三角矩阵
 [i,j,v] = find(a);
 b = sparse(i,j,v,9,9); %构造稀疏矩阵
 [x,y,z] = graphshortestpath(b,1,9,'directed',false);  %函数括号内19分别代表图中第一和第九个顶点,更改数字即可求任意两点的最小距离,x为计算得到的19两点间的最小距离
 

函数计算结果,x为5133,y为从点1到点9得到的最短距离经过的点,输出为[1 3 4 9]代表经过了第3点和第4点。

  • 6
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值