Matlab 最短路径问题 构建运输网络 可视化 最小成本(易理解)

本文详细介绍了如何使用MATLAB代码解决最短路径问题,通过实例演示了如何输入节点、权重和路径,最终输出成本最低的路线及其总成本,适合初学者快速上手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解决最短路径问题(最小运输成本)

网上许多解决方法 但是我运行的时候存在问题

在此提供直白一点的过程和可以运行到底的代码

只需要输入:
①相应的节点
②权重w(如果你求的是最短路径:w就是各个节点间的距离 如果求最小成本:w=各节点间的距离*成本)
③出发点 终点

代码输出:
①最短路径的路线 该路径的总距离(花费成本最低的路线 总成本)
②路线图

【案例】

比如说:求节点4→节点3的最小成本

在这里插入图片描述

超级简单!
听我解释给你听

代码:
只需要把a,b,c,d四个地方改成你的数据:(到代码里找这两行变量)
①DG=sparse(b,c,w,a,a);
②w;
a:你的题的节点的个数(此案例中共4个节点 如图)

b:初始节点(一定要注意!!我之前就是错在这个地方,必须要从小到大写)
c:下一个节点
w:(b→c)对应的距离或者成本
比如说假设这个题只有4个节点:
节点1:它有到节点2、4 两条路径(1→2)(1→4)
节点2:它有到节点1、3、4三条路径(2→1)(2→3)(2→4)
节点3:它有到节点2一条路径(3→1)
节点4:它有到节点1、2两条路径(4→1)(4→2)
那么:
a=4
b=[1 1 2 2 2 3 4 4]
c=[2 4 1 3 4 2 1 2]

w=[6 2 6 1 2 1 2 2]

// 只需要改动两个地方
clear
clc

% 定义路线权
w= [6 2 6 1 2 1 2 2];
      
% 构造邻接矩阵
DG = sparse([1 1 2 2 2 3 4 4],[2 4 1 3 4 2 1 2],w,4,4);

first = input('请输入初始节点:');
last = input('请输入终止节点:');
% 绘制有向赋权图
h = view(biograph(DG,[],'ShowWeights','on'));
[dist,path,pred] = graphshortestpath(DG,first,last);
% 标记路线经过的节点
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',1.5);
path
dist

输出的图:(红色的是成本最低的路线)
在这里插入图片描述
path:花费成本最低的路径:4→2→3
dist:该路径的总成本:3元
在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值