matlab工具包实现最短路径问题

该博客探讨了三种用于解决最短路径问题的算法——迪杰斯特拉、弗洛伊德和贝尔曼福特算法,并指出迪杰斯特拉不适用于权重为负的情况。此外,还介绍了如何在Matlab中绘制有向图、无向图及标注最短路径。
摘要由CSDN通过智能技术生成

算法类型

迪杰斯特拉算法
弗洛伊德算法
贝尔曼福特算法

算法优缺点

迪杰斯特拉算法不能够进行计算当权重为负数时的最短优化问题
弗洛伊德算法可以计算所有种类的图论问题

matlab实现

画出简单的有向图和无向图的代码

clc,clear
s = [1,2,3,4];
t = [2,3,4,1];
w = [3,2,4,6];
G1 = graph(s,t,w); %无向图
G2 = digraph(s,t,w); %有向图
plot(G1) %不带权重的图
plot(G1,'EdgeLabel',G1.Edges.Weight,'linewidth',2) %带有权重的图
set(gca,'Xtick',[],'Ytick',[]) %对坐标轴进行表示
% plot(G2)

画出简单的最短路径并进行标注出来

clc,clear
s = [9 9 1 1 2 2 2 7 7 6 6  5  5 4];
t = [1 7 7 2 8 3 5 8 6 8 5  3  4 3];
w = [4 8 3 8 2 7 4 1 6 6 2 14 10 9];
G = graph(s,t,w);
plot(G,'EdgeLabel',G.Edges.Weight,'linewidth',2)  
set(gca,'Xtick',[],'Ytick',[])
[P,D] = shortestpath(G, 9, 4);  //会自动进行最短规划,选择正确的算法种类,具体
                                //详细参考官方文档,help sho
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值