Main Content

adjacency

图邻接矩阵

说明

A = adjacency(G) 返回图 G 的稀疏邻接矩阵。如果 (i,j)G 中的一条边,则 A(i,j) = 1。否则,A(i,j) = 0

示例

A = adjacency(G,'weighted') 返回加权邻接矩阵,其中对于每条边 (i,j),值 A(i,j) 包含边的权重。如果图没有边权重,则 A(i,j) 设置为 1。对于此语法,G 必须是简单图,从而使 ismultigraph(G) 返回 false

A = adjacency(G,weights) 返回加权邻接矩阵,其边权重由向量 weights 指定。对于 G 中的每条边 (i,j),邻接矩阵的值 A(i,j) = weights(findedge(G,i,j))。对于此语法,G 必须是简单图,从而使 ismultigraph(G) 返回 false

示例

全部折叠

使用边列表创建一个有向图,然后求该图的等价邻接矩阵表示形式。邻接矩阵以稀疏矩阵形式返回。

s = [1 1 1 2 2 3];
t = [2 3 4 5 6 7];
G = digraph(s,t)
G = 
  digraph with properties:

    Edges: [6x1 table]
    Nodes: [7x0 table]

A = adjacency(G)
A = 7x7 sparse double matrix (6 nonzeros)
   (1,2)        1
   (1,3)        1
   (1,4)        1
   (2,5)        1
   (2,6)        1
   (3,7)        1

使用上三角邻接矩阵创建一个无向图。使用邻接矩阵构造一个图时,矩阵中的非零值对应于边权重。

A = [0 5 3 0;0 0 1 2; 0 0 0 11; 0 0 0 0]
A = 4×4

     0     5     3     0
     0     0     1     2
     0     0     0    11
     0     0     0     0

G = graph(A,'upper')
G = 
  graph with properties:

    Edges: [5x2 table]
    Nodes: [4x0 table]

G.Edges
ans=5×2 table
    EndNodes    Weight
    ________    ______

     1    2        5  
     1    3        3  
     2    3        1  
     2    4        2  
     3    4       11  

使用 adjacency 返回图的邻接矩阵。无论用于构造图的邻接矩阵形式如何,adjacency 函数始终返回一个对称的稀疏邻接矩阵,其中只包含 1 和 0。

B = adjacency(G)
B = 4x4 sparse double matrix (10 nonzeros)
   (2,1)        1
   (3,1)        1
   (1,2)        1
   (3,2)        1
   (4,2)        1
   (1,3)        1
   (2,3)        1
   (4,3)        1
   (2,4)        1
   (3,4)        1

创建一个加权图。

G = digraph([1 1 1 2 3 4],[2 3 4 4 2 3],[5 6 7 8 9 10]);
G.Edges
ans=6×2 table
    EndNodes    Weight
    ________    ______

     1    2        5  
     1    3        6  
     1    4        7  
     2    4        8  
     3    2        9  
     4    3       10  

求图的邻接矩阵。

A = adjacency(G)
A = 4x4 sparse double matrix (6 nonzeros)
   (1,2)        1
   (3,2)        1
   (1,3)        1
   (4,3)        1
   (1,4)        1
   (2,4)        1

这种形式的邻接矩阵不包含边权重。请使用 'weighted' 选项在邻接矩阵中包含边权重。

A = adjacency(G,'weighted')
A = 4x4 sparse double matrix (6 nonzeros)
   (1,2)        5
   (3,2)        9
   (1,3)        6
   (4,3)       10
   (1,4)        7
   (2,4)        8

预览矩阵的满存储版本。由于 G 是有向图,因此邻接矩阵不对称。但对无向图来说,邻接矩阵对称的。

B = full(A)
B = 4×4

     0     5     6     7
     0     0     0     8
     0     9     0     0
     0     0    10     0

输入参数

全部折叠

输入图,指定为 graphdigraph 对象。可使用 graph 创建一个无向图,或使用 digraph 创建一个有向图。

示例: G = graph(1,2)

示例: G = digraph([1 2],[2 3])

边权重,指定为向量。

示例: A = adjacency(G,[1 2 3 4])

数据类型: double | logical
复数支持:

输出参量

全部折叠

邻接矩阵,以稀疏矩阵形式返回。A 的大小为 numnodes(G)×numnodes(G)

提示

  • adjacency 返回的稀疏邻接矩阵中,权重为零的边不可见。这意味着加权邻接矩阵仅在没有权重为零的边时才能表示加权图。

扩展功能

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

基于线程的环境
使用 MATLAB® backgroundPool 在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool 加快代码运行速度。

版本历史记录

在 R2015b 中推出

另请参阅

| | |