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 に設定されます。この構文では、ismultigraph(G)false を返すように G は単純グラフでなければなりません。

A = adjacency(G,weights) は、ベクトル weights で指定されたエッジの重みをもつ重み付き隣接行列を返します。G の各エッジ (i,j) では、隣接行列は A(i,j) = weights(findedge(G,i,j)) の値を持ちます。この構文では、ismultigraph(G)false を返すように G は単純グラフでなければなりません。

すべて折りたたむ

エッジ リストを使用して有向グラフを作成し、次にグラフの等価な隣接行列の表現を求めます。隣接行列はスパース行列として返されます。

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 = 
   (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 = 
   (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 = 
   (1,2)        1
   (3,2)        1
   (1,3)        1
   (4,3)        1
   (1,4)        1
   (2,4)        1

この形式の隣接行列は、エッジの重みを含みません。'weighted' オプションを使用して、隣接行列にエッジの重みを含めます。

A = adjacency(G,'weighted')
A = 
   (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

入力引数

すべて折りたたむ

入力グラフ。graph オブジェクトまたは digraph オブジェクトとして指定します。無向グラフの作成には 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 で導入