#Matlab记--第二章:图论

#Matlab记--第二章:图论

          • 1、求图中所有顶点对之间的最短距离
          • 2、求图中指定的一对顶点间的最短距离和最短路径
          • 3、判断有向图是否含有环
          • 4、求无向图的极大连通分支,或有向图的极大强(弱)连通分支
          • 5、判断两个图是否同构
          • 6、判断一个图是否为生成树
          • 7、在图中找最小生成树
          • 8、计算有向图的最大流
          • 9、求有向无环图的拓扑排序

  概述: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 为稀疏图。

你可能感兴趣的:(Matlab)