Main Content

adjacency

그래프 인접 행렬(Adjacency Matrix)

설명

예제

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로 설정됩니다. 이 구문에서 Gismultigraph(G)false를 반환하는 단순 그래프가 되어야 합니다.

A = adjacency(G,weights)weights 벡터로 지정되는 간선 가중치를 갖는 가중치 인접 행렬을 반환합니다. G의 각 간선 (i,j)에 대한 인접 행렬은 A(i,j) = weights(findedge(G,i,j))의 값을 갖습니다. 이 구문에서 Gismultigraph(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 = 
   (1,2)        1
   (1,3)        1
   (1,4)        1
   (2,5)        1
   (2,6)        1
   (3,7)        1

상부 삼각 인접 행렬을 사용하여 무방향 그래프를 생성합니다. 인접 행렬을 사용하여 그래프를 생성할 때 행렬에서 0이 아닌 값은 간선 가중치에 해당합니다.

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

가중 그래프(Weighted Graph)를 생성합니다.

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)입니다.

  • 가중치가 0인 간선은 adjacency에 의해 반환되는 희소 인접 행렬에 표시되지 않습니다. 즉, 가중치 인접 행렬은 가중치가 0인 간선이 없는 경우에만 가중 그래프를 나타낼 수 있습니다.

확장 기능

C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

스레드 기반 환경
MATLAB®의 backgroundPool을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool을 사용해 코드 실행 속도를 높일 수 있습니다.

버전 내역

R2015b에 개발됨

참고 항목

| | |