Main Content

ismultigraph

그래프에 다중 간선이 있는지 여부 확인

설명

예제

tf = ismultigraph(G)G에서 임의의 두 노드 사이에 다중 간선이 있으면 논리형 1(true)을 반환합니다. 그렇지 않으면 논리값 0(false)을 반환합니다.

규칙상, ismultigraph는 자가 루프를 포함하지만 반복되는 간선이 없는 그래프에 대해 논리형 0(false)을 반환합니다. 하지만, 한 노드에 여러 개의 자가 루프를 갖는 그래프는 다중 그래프로 간주합니다.

예제

모두 축소

ismultigraph를 사용하여 입력 그래프에서 두 노드 사이에 다중 간선이 있는지 확인합니다.

그래프를 생성합니다.

G = graph([1 1 1 1 1 2 2 2],[2 2 3 4 5 6 7 8]);
plot(G)

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

G가 다중 그래프인지 확인합니다. 노드 1과 노드 2 사이에 두 개의 간선이 있으므로 결과는 논리형 1(true)이 됩니다.

tf = ismultigraph(G)
tf = logical
   1

ismultigraph를 사용하여 그래프를 간소화할 필요가 있는지 여부를 확인합니다.

빈 그래프를 생성한 다음 addedge를 사용하여 프로그래밍 방식으로 간선을 추가하는 경우에는 중복 간선이 발생하는 경우가 많습니다. 이러한 중복간선이 생기지 않게 하려면 간선에 사용된 데이터가 고유해야 합니다.

이를 확인하려면 난수로 이루어진 2개의 열로 구성된 행렬과 빈 그래프를 생성하십시오. 난수는 1과 5 사이에만 있으므로 이 데이터는 다중 간선을 생성합니다.

G = graph;
rng default % for reproducibility
X = randi(5,15,2)
X = 15×2

     5     1
     5     3
     1     5
     5     4
     4     5
     1     4
     2     1
     3     5
     5     5
     5     4
      ⋮

소스 데이터를 정리하여 각 행이 고유하도록 하는 대신 그래프에 모든 간선을 추가합니다. 참조 목적으로 그래프를 플로팅합니다.

G = addedge(G,X(:,1),X(:,2));
plot(G)

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

이 그래프가 다중 그래프인지 테스트한 다음, 다중 그래프라면 simplify를 사용하여 반복되는 간선과 자가 루프를 제거합니다.

if ismultigraph(G)
    G = simplify(G);
end

이 결과 생성되는 그래프를 플로팅합니다.

plot(G)

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])

확장 기능

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

버전 내역

R2018a에 개발됨