MATLAB工具箱函数graphshortestpath 求带权无向图的最短通路及绘图

这是MATLAB工具箱函数生成的一个带权无向图,图中红色的节点和线表示Node1与Node2之间的最短通路。

使用graphshortestpath函数,可以输出:

①. 图中任意两个节点之间的最短距离

②. 任意两个节点之间的最短路径:此处为1→11→12→13→14→2   (数字为图中节点编号)

 

附上代码:

data=xlsread('edge.xlsx');
start=data(:,1);  %起点编号
endot=data(:,2);   %终点编号
weight=data(:,3);  %连接起点和终点的边权重
graphsize=max(max(start),max(endpt));

%更新距离矩阵
DG = sparse(start,endpt,weight,graphsize,graphsize)%求稀疏矩阵
g =tril(DG+DG')%取矩阵和转置矩阵和的下三角矩阵  
 %这一步的目的是要把稀疏矩阵化为无向

%建立无向图
p=biograph(g,[],'ShowArrows','off','ShowWeights','on');
h=view(p);%显示各个路径权值
 
% 求节点1到节点2的最短路径
[Dist,Path]=graphshortestpath(g,1,2,'Directed',false,'Method','Dijkstra') 

% 将最短路径的结点以红色显示
set(h.Nodes(Path),'Color',[1 0.4 0.4]);
% 将最短路径的弧以红色显示
edges=getedgesbynodeid(h,get(h.Nodes(Path),'ID'),get(h.Nodes(Path),'ID'));
set(edges,'LineColor',[1 0 0]);
set(edges,'LineWidth',2.0);
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值