matlab grapshortestpath函数解析

声明

本文章是对官方的很空泛的概况,以后会更新,推荐看官方文档----官方链接

参数和返回值

[dist,path,pred] = graphshortestpath(G,S,D,Name,Value)
dist:是最小路径的长度
path是经过的点
pred包含从节点1(源节点)到所有其他节点(而不仅仅是指定的目标节点)的最短路径的前置节点。可以使用pred查询从源节点到图中任何其他节点的最短路径。(等下在讲怎么用)
G是稀疏矩阵
S是起点
D是终点
Name,Value是一些可加的选项

perd

perd可以帮助我们查找到从任一点到源节点(1节点)的最短路径
例如:
要查询从4到1的最短路径
pred = 1×6

 0     6     5     5     1     4

在这里插入图片描述
一直找到next=0,中间出来的点就是经过的点,也就是最短路径上的点

G:稀疏矩阵

创建的方法:
先得到图的邻接矩阵a
在利用find函数:[i,j,v]=find(a)
得到每个不为0的元素的下标和值(i储存横坐标,j存储纵坐标,v为权值)
G=sparse(i,j,v);的到稀疏矩阵
如果是无向矩阵,还要变为下三角才行,多下面一步:
G = tril(G+G’)

可选参数

主要就是有向和无向的option
Name: Directed
Value:false/0(表示无向)
又向图可以不填这类参数

画图

h = view(biograph(DG,[],'ShowWeights','on','ShowArrows','off'))//DG是得到的稀疏矩阵,如果显示边的值,就第一个设为on,如果是有向图第二个就设为on

效果:
在这里插入图片描述

标明路径(有向图):

set(h.Nodes(path),'Color',[1 0.4 0.4])%第一个参数是个struct矩阵,最后是一个rgb的数字,值不同代表颜色不同
edges = getedgesbynodeid(h,get(h.Nodes(path),'ID'));%通过id拿到路径的边
set(edges,'LineColor',[1 0 0])%设置边的颜色和宽度
set(edges,'LineWidth',1.5)

标明路径(无向图)

set(h.Nodes(path),'Color',[1 0.4 0.4])
fowEdges = getedgesbynodeid(h,get(h.Nodes(path),'ID'));
revEdges = getedgesbynodeid(h,get(h.Nodes(fliplr(path)),'ID'));
edges = [fowEdges;revEdges];
set(edges,'LineColor',[1 0 0])
set(edges,'LineWidth',1.5)
  • 4
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值