Main Content

findedge

그래프에서 간선 찾기

설명

예제

[sOut,tOut] = findedge(G)는 그래프 G에 포함된 모든 간선에 대해 소스 노드 ID sOut과 타깃 노드 ID tOut을 반환합니다.

예제

[sOut,tOut] = findedge(G,idx)idx로 지정된 간선의 소스 노드와 타깃 노드를 구합니다.

예제

idxOut = findedge(G,s,t)는 소스 노드와 타깃 노드 쌍인 st로 지정된 간선에 대해 숫자형 간선 인덱스 idxOut을 반환합니다. 간선 인덱스는 그래프의 G.Edges 테이블에서 행 G.Edges.Edge(idxOut,:)에 대응됩니다. st 사이에 다중 간선이 있는 경우, 간선의 모든 인덱스가 반환됩니다. 간선 인덱스 0은 그래프에 없는 간선을 나타냅니다.

[idxOut,m] = findedge(G,s,t)idxOut의 각 간선 인덱스에 어느 노드 쌍 (s,t)가 연결되었는지 나타내는 벡터 m을 추가로 반환합니다. 이는 동일한 두 노드 사이에 다중 간선이 있는 경우에 유용합니다.

예제

모두 축소

그래프를 생성한 후 간선 (1,2)와 간선 (3,5)에 대한 간선 인덱스를 확인합니다.

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

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

idxOut = findedge(G,[1 3],[2 5])
idxOut = 2×1

     1
     6

idxOut은 지정된 각 간선에 대해 G.Edges.EndNodes에 대한 행 인덱스를 포함합니다.

그래프를 생성한 후 그래프에 포함된 모든 간선에 대한 끝 노드를 확인합니다.

s = {'a' 'a' 'b' 'b' 'c' 'c'};
t = {'b' 'c' 'd' 'e' 'f' 'g'};
G = graph(s,t);
G.Edges
ans=6×1 table
       EndNodes   
    ______________

    {'a'}    {'b'}
    {'a'}    {'c'}
    {'b'}    {'d'}
    {'b'}    {'e'}
    {'c'}    {'f'}
    {'c'}    {'g'}

[sOut,tOut] = findedge(G)
sOut = 6×1

     1
     1
     2
     2
     3
     3

tOut = 6×1

     2
     3
     4
     5
     6
     7

그래프를 생성한 후 인덱스가 37인 간선에 대한 끝 노드를 확인합니다.

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

    Edges: [10x1 table]
    Nodes: [11x0 table]

[sOut,tOut] = findedge(G,[3 7])
sOut = 2×1

     1
     3

tOut = 2×1

     4
     8

그래프를 생성합니다.

s = [1 1 2 3];
t = [2 3 3 4];
weights = [10 20 30 40];
G = graph(s,t,weights)
G = 
  graph with properties:

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

findedge를 사용하여 인덱스를 가져오고 간선 (1,3)의 가중치를 구합니다.

G.Edges.Weight(findedge(G,1,3))
ans = 20

findedge를 사용하여 여러 다중 그래프 간선의 가중치를 변경합니다.

다중 그래프를 생성하고 플로팅합니다. 이 그래프에는 노드 2와 노드 4 사이에 두 개의 간선이 있습니다.

s = [1 1 2 3 2 2];
t = [2 3 3 4 4 4];
weights = [10 20 30 40 10 10];
G = graph(s,t,weights);
plot(G,'EdgeLabel',G.Edges.Weight)

Figure contains an axes object. The axes object contains an object of type graphplot.

노드 (3,2)와 노드 (2,4) 사이의 간선 가중치를 변경합니다. findedge에 두 개의 출력값을 지정하여 끝 노드 인덱스 m을 가져옵니다. idxOutst에 있는 노드 쌍의 개수보다 더 많은 요소를 가질 수 있으므로 이 출력값은 두 노드 사이에 다중 간선이 있는 경우에 유용합니다. 간선 idxOut(1) = 3은 노드 쌍 (s(1),t(1)) = (3,2)를 연결하고, 간선 idxOut(2) = 4idxOut(3) = 5는 간선 (s(2),t(2)) = (2,4)를 연결합니다.

s = [3 2];
t = [2 4];
w = [1 4];
[idxOut, m] = findedge(G, s, t)
idxOut = 3×1

     3
     4
     5

m = 3×1

     1
     2
     2

G.Edges.Weight(idxOut) = w(m);
plot(G,'EdgeLabel',G.Edges.Weight)

Figure contains an axes object. The axes object contains an object of type graphplot.

입력 인수

모두 축소

입력 그래프로, graph 객체 또는 digraph 객체로 지정됩니다. 무방향 그래프를 생성하려면 graph를 사용하고 유방향 그래프를 생성하려면 digraph를 사용하십시오.

예: G = graph(1,2)

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

노드 쌍으로, 노드 인덱스 또는 노드 이름의 개별 인수로 지정됩니다. st에서 유사한 위치의 요소는 그래프에 추가되는 간선에 대한 소스 노드와 타깃 노드를 지정합니다.

다음 표에서는 숫자형 노드 인덱스 또는 노드 이름을 사용하여 하나 이상의 노드를 참조하는 몇 가지 방법을 보여줍니다.

형식단일 노드여러 노드
노드 인덱스

스칼라

예: 1

벡터

예: [1 2 3]

노드 이름

문자형 벡터

예: 'A'

문자형 벡터로 구성된 셀형 배열

예: {'A' 'B' 'C'}

string형 스칼라

예: "A"

string형 배열

예: ["A" "B" "C"]

categorical형 배열

예: categorical("A")

categorical형 배열

예: categorical(["A" "B" "C"])

예: G = findedge(G,[1 2],[3 4])

예: G = findedge(G,{'a' 'a'; 'b' 'c'},{'b' 'c'; 'c' 'e'})

간선 인덱스. 스칼라 또는 양의 정수로 구성된 벡터로 지정됩니다. 간선 인덱스는 그래프 G.Edges(idx,:)G.Edges 테이블에 있는 행에 대응됩니다.

출력 인수

모두 축소

간선 인덱스. 스칼라 또는 음이 아닌 정수로 구성된 벡터로 반환됩니다. 간선 인덱스는 그래프 G.Edges(idxOut,:)G.Edges 테이블에 있는 행에 대응됩니다. 간선 인덱스 0은 그래프에 없는 간선을 나타냅니다.

idxOut의 길이는 입력 그래프가 다중 그래프가 아닌 경우, 입력값의 노드 쌍의 개수에 해당합니다.

끝 노드 인덱스로, 벡터로 반환됩니다. m의 값은 idxOut의 간선 인덱스를 입력 노드 쌍 (s,t)에 연결합니다. 간선 idxOut(j)는 노드 쌍과 인덱스 m(j)를 연결합니다.

노드 ID로, 개별 스칼라 또는 양의 정수로 구성된 벡터로 반환됩니다. sOuttOut에서 유사한 위치의 요소는 간선 G.Edges(idx,:)를 형성하는 소스 노드와 타깃 노드를 지정합니다.

확장 기능

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

버전 내역

R2015b에 개발됨