Matlab图论工具箱的命令见表1

表1  matlab图论工具箱的相关命令

命令名

功能

graphallshortestpaths

求图中所有顶点对之间的最短距离

graphconncomp

找无向图的连通分支,或有向图的强弱连通分支

graphisdag

测试有向图是否含有圈,不含圈返回1,否则返回0

graphisomorphism

确定两个图是否同构,同构返回1,否则返回0

graphisspantree

确定一个图是否是生成树,是返回1,否则返回0

graphmaxflow

计算有向图的最大流

graphminspantree

在图中找最小生成树

graphpred2path

把前驱顶点序列变成路径的顶点序列

graphshortestpath

求图中指定的一对顶点间的最短距离和最短路径

graphtopootder

执行有向无圈图的拓扑排序

graphtraverse

求从一顶点出发,所能遍历图中的顶点

1.图的最短路径graphallshortestpaths函数的命令格式:

[dist]=graphallshortestpaths(G)

[dist]=graphallshortestpaths(G,...’Directed’,DirectedValue,...)

[dist]=graphallshortestpaths(G,...’Weights’,WeightsValue,...)

G是代表一个图的N*N稀疏矩阵,矩阵中的非零值代表一条边的权值:DirectedValue属性表示图是否为有向图,false代表无向图,true代表有向图,默认为true。WeightsValue是矩阵G中边的自定义权值列向量,该属性可以使我们使用零权值。输出[dist]是一个N*N的矩阵,每一个元素代表两点之间最短距离,对角线上的元素总为零,不在对角线上的零表示起点和终点的距离为零,inf值表示没有路径。

(1)创建并显示一个含有6个结点11条边的有向图

w=[41 99 51 32 15 45 38 32 36 29 21];%权值向量

dg=sparse([6 1 2 2 3 4 4 5 5 6 1],[2 6 3 5 4 1 6 3 4 3 5],w)%构造的稀疏矩阵表示图

h=view(biograph(dg,[],'ShowWeights','on'))%显示图的结构

dist=graphallshortestpaths(dg)%显示图中每对结点之间的最短路径  

dist =

0   136    53    57    21    95

111     0    51    66    32   104

60    94     0    15    81    53

45    79    67     0    66    38

81   115    32    36     0    74

 89    41    29    44    73     0

(2)创建无向图,结点信息同上

ug=tril(dg+dg');%要求生成的无向图是一个下三角矩阵

view(biograph(ug,[],'ShowArrows','off','ShowWeights','on'));

dist=graphallshortestpaths(ug,'directed',false)

dist =

0    53    53    45    21    82

53     0    51    66    32    41

53    51     0    15    32    29

45    66    15     0    36    38

21    32    32    36     0    61

82    41    29    38    61     0

2.最小生成树graphminspantree函数的调用格式:

[Tree,pred]=graphminspantree(G)

[Tree,pred]=graphminspantree(G,R)

[Tree,pred]=graphminspantree(...,’Method’,MethofValue,...)

[Tree,pred]=graphminspantree(...,’Weights’,WeightsValue,...)

该函数用来寻找一个无循环的节点集合,连接无详图的全部节点,并且总的权值最小。Tree是一个代表生成树的稀疏矩阵,pred是包含最小生成的祖先节点的向量。G是无向图,R代表根节点,取值为1到节点数目,Method可以选择‘Kruskal’,’Prim’算法。

(1)构造无向图

w=[ 41    29    51    32    50    45    38    32    36    29    21];

dg=sparse([1 1 2 2 3 4 4 5 5 6 6],[2 6 3 5 4 1 6 3 4 2 5],w)

ug=tril(dg+dg');

view(biograph(ug,[],'ShowArrows','off','ShowWeights','on'));

[st,pred]=graphminspantree(ug)%生成最小生成树

h=view(biograph(st,[],'ShowArrows','off','ShowWeights','on'));

Edges=getedgesbynodeid(h);%提取无向图h的边集

set(Edges,'LineColor',[0 0 0]);%设置颜色属性

set(Edges,'LineWidth',1.5)%设置边值属性

  

3.计算有向图的最大流graphmaxflow,函数格式为:

[MaxFlow,FlowMatrix,Cut]=graphmaxflow(G,SNode,TNode)

[...]=graphmaxflow(G,SNode,TNode,...’Capacity’,CapacityValue,...)

[...]=graphmaxflow(G,SNode,TNode,...’Method’,MethodValue,...)

G是N*N的稀疏矩阵,表示有向图,SNode和TNode都是G中的节点,分别表示起点和目标点,CapacityValue为每条边自定义容量的列向量;MethodValue可以取‘Edmonds’和‘Goldberg’算法。输出MaxFlow表示最大流,FlowMatrix是表示每条边数据流值的稀疏矩阵,Cut表示连接SNode到TNode的逻辑向量,如果有多个解时,Cut是一个矩阵。

(1)构造带有节点和边的有向图

 cm=sparse([1 1 2 2 3 3 4 5],[2 3 4 5 4 5 6 6],[2 3 3 1 1 1 2 3 ],6,6);

%6个节点8条边

[M,F,K]=graphmaxflow(cm,1,6);%计算第1个到第6个节点的最大流

h=view(biograph(cm,[],'ShowWeights','on'));%显示原始有向图的图结构

h1=view(biograph(F,[],'ShowWeights','on'));%显示计算最大流矩阵的图结构

4.图的遍历函数graphtraverse,命令格式如下:

[disc,pred,closed]=graphtraverse(G,S)

[...]=graphtraverse(G,S,...’Directed’,DirectedValue,...)

[...]=graphtraverse(G,S,...’Depth’,DepthValue,...)

[...]=graphtraverse(G,S,...’Method’,MethodValue,...)

G是有向图,S为起始节点,disc是节点索引向量,pred是祖先节点索引向量

(1)创建一个有向图

DG=sparse([1 2 3 4 5 5 5 6 7 8 8 9],[2 4 1 5 3 6 7 9 8 1 10 2],true,10,10)

h1=view(biograph(DG));

order=graphtraverse(DG,4)%使用深度优先算法从第4个节点开始遍历

order2=graphtraverse(DG,4,'Method','BFS')%使用广度优先遍历

index=graphtraverse(DG,4,'depth',2)%标记与节点4邻近的深度为2的节点

order =

4     5     3     1     2     6     9     7     8    10

order2 =

4     5     3     6     7     1     9     8     2    10

index =

4     5     3     6     7

Matlab中图论工具箱的应用的更多相关文章

  1. matlab中gatbx工具箱的添加

    1. 从http://crystalgate.shef.ac.uk/code/下载工具箱压缩包gatbx.zip 2. 解压gatbx.zip,将其子文件夹genetic放在matlab安装目录too ...

  2. MATLAB中拟合算法刚入门

    %%%1.拟合问题:(做预测,主要使用的范围是样本比较小,拟合效果会好,样本比较多,拟合的效果就不是很好) 1.应用预测的场景:已经知道10年的样本,预测第11年以内的数据 2.用拟合的到关系式:样本 ...

  3. MATLAB 中 ksvdbox和ompbox 工具箱的安装和使用

    下载工具箱 链接: http://www.cs.technion.ac.il/~ronrubin/software.html 下载好工具箱之后, 要将解压后的文件夹添加到MATLAB的安装目录下的to ...

  4. 相机标定简介与MatLab相机标定工具箱的使用(未涉及原理公式推导)

    相机标定 一.相机标定的目的 确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,建立摄像机成像的几何模型,这些几何模型参数就是摄像机参数. 二.通用摄像机模型 世界坐标系.摄像机坐标 ...

  5. matlab中的卷积——filter,conv之间的区别

    %Matlab提供了计算线性卷积和两个多项式相乘的函数conv,语法格式w=conv(u,v),其中u和v分别是有限长度序列向量,w是u和v的卷积结果序列向量. %如果向量u和v的长度分别为N和M,则 ...

  6. paper 75:使用MATLAB的神经网络工具箱创建神经网络

    % 生成训练样本集 clear all; clc; P=[110 0.807 240 0.2 15 1 18 2 1.5; 110 2.865 240 0.1 15 2 12 1 2; 110 2.5 ...

  7. MATLAB中如何使用遗传算法

    matlab有遗传算法工具箱. 核心函数:   (1)function [pop]=initializega(num,bounds,eevalFN,eevalOps,options)--初始种群的生成 ...

  8. matlab添加M_map工具箱(转 http://blog.sina.com.cn/s/blog_491b86bf0100srt9.html)

    之前转载过matlab画世界地图的博文.最近正好用到.首先试了matlab自带的worldmap,感觉画出来的图形不尽如人意,比较杂乱.如下图. 略查阅了些资料,请教了Liangjing,一致推荐m_ ...

  9. Matlab计算机视觉/图像处理工具箱推荐

    Matlab计算机视觉/图像处理工具箱推荐 转载http://cvnote.info/matlab-cv-ip-toolbox/ 计算机视觉/图像处理研究中经常要用到Matlab,虽然其自带了图像处理 ...

随机推荐

  1. Django App(四) Submit a form

    经过前面的努力,到这里我们已经基本完成了,从服务器到浏览器的数据下发,还没有解决从浏览器到服务器的数据上传,这一节将创建一个Form获取从浏览器提交的数据 1.新建Form 接着前面建的项目,网上调查 ...

  2. [国嵌攻略][060][LCD工作原理解析]

    LCD硬件体系 1.LCD液晶屏 液晶属于一种有机化合物,分子形状为长棒状,在不同的电流作用下,分子会有规律旋转,这样对光线产生一定的控制形成一个像素,而很多像素右可以构成完整的图像. LCD是Liq ...

  3. 利用object.defineProperty实现数据与视图绑定

    如今比较火的mvvm框架,例如vue就是利用es5的defineProperty来实现数据与视图绑定的,下面我来介绍一下defineProperty的用法. var people= {} Object ...

  4. NYOJ 1249 物资调度(DFS+剪枝)

    题目链接: http://acm.nyist.net/JudgeOnline/problem.php?pid=1249 描述 某地区发生了地震,灾区已经非常困难,灾民急需一些帐篷.衣物.食品和血浆等物 ...

  5. Hibernate查询对象的方法浅析

    Hibernate 查询对象是根据对象的id查询的,只要你有id (id唯一),则无论你是否其他字段与传过来的对象一致,都会查到该id在数据库对应的对象.若是在关联查询中,所关联表的id为空,即所查表 ...

  6. Lucene学习笔记2-Lucene的CRUD(V7.1)

    在进行CRUD的时候请注意IndexWriterConfig的设置. public class IndexCRUD { "}; private String citys[]={"j ...

  7. nginx https配置后无法访问,可能防火墙在捣鬼

    同事发现nginx配置后https 无法访问,我帮忙解决的时候从以下出发点 1.防火墙未开放443端口 2.配置出错 1 2 3 于是就 netstat -anp 查看防火墙开的端口 发现已经在监听了 ...

  8. vue-cli创建的项目中引入第三方库报错 'caller', 'calle', and 'arguments' properties may not be...

    http://blog.csdn.net/sophie_u/article/details/76223978 以在vue中引入mui第三方库为例: 虽然针对vue,有单独的vue-mui库可以使用,但 ...

  9. margin 和 padding 的本质区别

    问题? 如何弄清 margin 和 padding之间的区别? 那,答案呢? margin 边界, padding 填充 假如有一个盒子,padding就相当于盒子的厚度,盒子大小固定,通过修改pad ...

  10. scrapy_随机user-agent

    什么是user-agent? 用户代理,服务器识别用户的操作系统,浏览器类型和渲染引擎,不同浏览器的user-agent是不同的 如何随机更改user-agent? 1. 在setting中添加use ...