通过一道题来解决matlab中最短距离问题

介于现在新版的matlab已经淘汰了graphshortestpath函数,由此写了这个代码

这道题要求的是使用matlab做最短距离

我采用的方法比较笨,但是非常适合初学者

   s、t和weights是三个向量,分别表示边的起始点、终止点和权重。

题目要求我们求起点(s)A到终点(t)G的最短距离(因为A,B1,B2,等符号写入matlab中表示有问题),那么我们可以用1 2 3....来代替。

weights:权重。例如A→B1距离=5        

即weights=5

一一对应在等式中写出来

   graph函数根据这些信息创建一个图Q。

   plot函数用于绘制图Q,'EdgeLabel'参数表示在边上显示权重。

   shortestpath函数用于计算从节点1到节点16的最短路径。它返回两个值:P和d。P是一个向量,表示最短路径上的节点序列;d是一个标量,表示最短路径的长度。他的方法和graphshortestpath函数差不多。

这道题的代码如下:

s = [1 1 2 2 2 3 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 15];

t = [2 3 4 5 6 5 6 7 8 9 8 9 9 10 9 10 11 12 12 13 12 13 14 15 14 15 14 15 16 16];

weights = [5 3 1 3 6 8 7 6 6 8 3 5 3 3 8 4 2 2 1 2 3 3 3 5 5 2 6 6 4 3];

Q = graph(s,t,weights);

plot(Q,'EdgeLabel',Q.Edges.Weight)

[P,d] = shortestpath(Q,1,16)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值