#Matlab记--第二章:图论
概述:Matlab 工具箱要求图用稀疏矩阵或者邻接矩阵表示,且若为无向图,则应为下三角矩阵。
输入矩阵:
% 输入原始矩阵信息(无向图)
a = zeros(11)
a(1,2)=2;a(1,3)=8;a(1,4)=1;
a(2,3)=6;a(2,5)=1;
a(3,4)=7;a(3,5)=5;a(3,6)=1;a(3,7)=2;
a(4,7)=9;
a(5,6)=3;a(5,8)=2;a(5,9)=9;
a(6,7)=4;a(6,9)=6;
a(7,9)=3;a(7,10)=1;
a(8,9)=7;a(8,11)=9;
a(9,10)=1;a(9,11)=2;
a(10,11)=4;
% 转化为下三角矩阵
a = a';
% 构造稀疏矩阵
G = sparse(a)
% 将稀疏矩阵转化为普通矩阵
b = full(G)
% 画出稀疏矩阵表示的图
IDs = {}; % IDs 即为每个结点的名称
bg=biograph(G,IDs,'showWeights','on','ShowArrows','off','NodeAutoSize','off');
set(bg,'layoutType','radial','arrowSize',6,'edgeFontSize',9);
set(bg.nodes,'shape','circle','color',[1,1,1],'lineColor',[0,0,0],'textColor',[0,0,0],'lineWidth',2,...
'fontsize',8,'size',[20,20]);
view(bg);
1、求图中所有顶点对之间的最短距离
求解函数为:
[dist] = graphallshortestpaths(G, ‘Directed’, DirectedValue)
函数解释:(1). 返回值dist即为用二维数组表示的任意顶点对之间的最短距离。
(2). 参数 G 为稀疏图, DirectedValue指定此图是否为有向图。
2、求图中指定的一对顶点间的最短距离和最短路径
求解函数为:
[dist,path,pred] = graphshortestpath(G,SNode,TNode,‘Directed’, DirectedValue)
函数解释:(1). 返回值 dist 即为指定顶点间的最短距离,path 即为最短路径。
(2). 参数 G 为稀疏图,SNode为源点,TNode为目标点, DirectedValue指定此图是否为有向图。
3、判断有向图是否含有环
求解函数为:
fval = graphisdag(G)
函数解释:(1). 若含有环则返回true,否则返回false。
(2). 参数 G 为稀疏图。
4、求无向图的极大连通分支,或有向图的极大强(弱)连通分支
求解函数为:
[S, C] = graphconncomp(G, ‘Directed’, DirectedValue, ‘Weak’, WeakValue)
函数解释:(1). 返回值 S 表示找到的极大连通分支的数量。C 是一个向量,表示每个结点属于哪个极大连通分支,从1开始。
(2). 参数 G 为稀疏图, DirectedValue 指定此图是否为有向图,WeakValue 指定是否寻找极大弱连通分支。
5、判断两个图是否同构
求解函数为:
[Isomorphic, Map] = graphisomorphism(G1, G2,‘Directed’, DirectedValue)
函数解释:(1). 返回值 Isomorphic 表示两个图是否同构
(2). 参数 G1 G2 为稀疏图,DirectedValue 指定此图是否为有向图。
6、判断一个图是否为生成树
求解函数为:
TF = graphisspantree(G)
函数解释:(1). 返回值 TF 表示此图是否为生成树。
(2). 参数 G 为稀疏图。
7、在图中找最小生成树
求解函数为:
[Tree, pred] = graphminspantree(G)
[Tree, pred] = graphminspantree(G, R)
函数解释:(1). 返回值 Tree 即为稀疏矩阵表示的最小生成树
(2). 参数 G 为稀疏图,R 为指定的根节点,默认为极大连通分支的第一个结点。
8、计算有向图的最大流
求解函数为:
[MaxFlow, FlowMatrix, Cut] = graphmaxflow(G, SNode, TNode)
函数解释:(1). 返回值 MaxFlow 为有向图的最大流。
(2). 参数 G 为稀疏图,SNode为源点,TNode为目标点。
9、求有向无环图的拓扑排序
求解函数为:
order = graphtopoorder(G)
函数解释:(1). 返回值 order 即为用结点序号表示的拓扑排序。
(2). 参数 G 为稀疏图。