清风第八讲:图论最短路径问题

强烈推荐清风的视频

可以在B站搜索清风,他的数模教学视频简单易懂,内容丰富,真心推荐!!!

作图的方法

在线作图:

1.打开网站
2.看到界面如图在这里插入图片描述

3.在左上方选择Undirected(无向图)或Directed(有向图)
4.在中间上面有三个分别是0-index(从0排序)、1-index(从1排序)、custom labels(自定义标签)
5.然后在左边Node Count下输入预设的节点数
6.在Graph Date下输入各节点与各节点的关系,例如: 输入"1" “2” “1 2 8” 表示连接1到2且边的权重为8
7.点击右下角Download as PNG下载制作好的图就搞定了

matlab作图

matlab作图需要用到函数graph(s,t),可以在s与t之间创建边
例如:

G1 = graph(s1,t1);
plot(G1)

加权重的话只需在后面加上权重w
例如:

G2 = graph(s,t,w)
plot(G2)

去掉坐标可以使用代码:

set( gca, 'XTick', [], 'YTick', [] );

做出有向图只需将函数graph(s,t,w) 改成函数disgraph(s,t,w)

迪杰斯特拉算法(dijkstra)

这里只做简单的概述:
问题现有一无向图如图所示:
在这里插入图片描述
求0到4的最短路径

在这里插入图片描述

Matlab程序演示

需要注意的点:matlab只能从1开始计数
于是本题将起始点0改为9
输入代码

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)

效果
在这里插入图片描述
返回任意两点距离代码:

d = distances(G [,'Method',algorithm])

效果
在这里插入图片描述

参考资料

迪杰斯特拉算法讲解(dijkstra)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值