Main Content

isisomorphic

두 그래프가 동형인지 확인

설명

예제

tf = isisomorphic(G1,G2)는 그래프 G1G2 간에 그래프 동형사상이 존재할 경우 논리값 1(true)을 반환하고, 그렇지 않을 경우 논리값 0(false)을 반환합니다.

예제

tf = isisomorphic(G1,G2,Name,Value)는 하나 이상의 이름-값 쌍의 인수로 추가 옵션을 지정합니다. 예를 들어, 'NodeVariables'와 노드 변수 목록을 지정하여 동형사상이 유효하기 위해서는 이러한 변수가 유지되어야 함을 나타낼 수 있습니다.

예제

모두 축소

두 개의 유방향 그래프를 생성하고 플로팅한 후 서로 동형인지 확인합니다.

G1 = digraph([1 1 1 2 3 4],[2 3 4 4 4 1]);
G2 = digraph([3 3 3 2 1 4],[1 4 2 3 2 2]);
subplot(1,2,1)
plot(G1)
subplot(1,2,2)
plot(G2)

Figure contains 2 axes objects. Axes object 1 contains an object of type graphplot. Axes object 2 contains an object of type graphplot.

isisomorphic(G1,G2)
ans = logical
   1

두 개의 그래프 G1G2를 생성하고 플로팅합니다.

G1 = graph([1 1 1 2 2 3 3 4 5 5 7 7],[2 4 5 3 6 4 7 8 6 8 6 8]);
plot(G1,'XData',[1 4 4 1 2 3 3 2],'YData',[4 4 1 1 3 3 2 2])

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

G2 = graph({'a' 'a' 'a' 'b' 'b' 'b' 'c' 'c' 'c' 'd' 'd' 'd'}, ...
    {'g' 'h' 'i' 'g' 'h' 'j' 'g' 'i' 'j' 'h' 'i' 'j'});
plot(G2,'XData',[1 2 2 2 1 2 1 1],'YData',[4 4 3 2 3 1 2 1])

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

G1G2에 대해 동형사상이 존재하는지 여부를 확인합니다. 결과를 보면 그래프는 레이블과 레이아웃이 서로 다르더라도 구조적으로 동일합니다.

tf = isisomorphic(G1,G2)
tf = logical
   1

두 가지 다른 비교를 사용하여 두 그래프 간에 동형사상 관계가 있는지 확인합니다. 두 비교 중 하나는 노드 속성을 유지하고, 다른 하나는 노드 속성을 무시합니다.

두 개의 유사한 그래프를 생성합니다. 각 그래프에 노드 속성 Color를 추가합니다.

G1 = graph({'d' 'e' 'f'},{'e' 'f' 'd'});
G1.Nodes.Color = {'red' 'red' 'blue'}';

G2 = graph({'a' 'b' 'c'},{'b' 'c' 'a'});
G2.Nodes.Color = {'blue' 'blue' 'red'}';

동일한 Figure에 그래프를 나란히 플로팅합니다. Color = 'red'인 노드를 빨간색으로 표시합니다.

subplot(1,2,1)
p1 = plot(G1);
highlight(p1,{'d' 'e'},'NodeColor','r')

subplot(1,2,2)
p2 = plot(G2);
highlight(p2,'c','NodeColor','r')

Figure contains 2 axes objects. Axes object 1 contains an object of type graphplot. Axes object 2 contains an object of type graphplot.

Color 속성을 무시하고 그래프가 동형인지 여부를 확인합니다.

tf = isisomorphic(G1,G2)
tf = logical
   1

그래프가 동형이고 비교에서 Color 속성의 값을 유지하는지 여부를 확인합니다. 이 경우, 각 그래프의 Color 속성에 각각 다른 개수의 'red' 값과 'blue' 값이 포함되어 있으므로 동형사상이 존재하지 않습니다.

tf = isisomorphic(G1,G2,'NodeVariables','Color')
tf = logical
   0

입력 인수

모두 축소

입력 그래프로, graph 객체나 digraph 객체로 구성된 개별 인수로 지정됩니다. 무방향 그래프를 생성하려면 graph를 사용하고 유방향 그래프를 생성하려면 digraph를 사용하십시오.

G1G2는 모두 graph 객체이거나 모두 digraph 객체여야 합니다.

예: G1 = graph(1,2)

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

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: tf = isisomorphic(G1,G2,'NodeVariables',{'Var1' 'Var2'})

유지할 간선 변수로, 'EdgeVariables'와 함께 문자형 벡터, string형 스칼라, 문자형 벡터로 구성된 셀형 배열 또는 string형 배열이 쉼표로 구분되어 지정됩니다. G1.EdgesG2.Edges 모두에 있는 간선 변수를 하나 이상 지정하려면 이 옵션을 사용하십시오. 동형사상 비교가 유효하려면 지정된 간선 변수를 유지해야 합니다. 동일한 두 노드 사이에 다중 간선이 있는 다중 그래프의 경우, 동일한 노드 쌍에 대한 간선 변수의 순서는 중요하지 않습니다.

데이터형: char | string | cell

유지할 노드 변수로, 'NodeVariables'와 함께 문자형 벡터, string형 스칼라, 문자형 벡터로 구성된 셀형 배열 또는 string형 배열이 쉼표로 구분되어 지정됩니다. G1.NodesG2.Nodes 모두에 있는 노드 변수를 하나 이상 지정하려면 이 옵션을 사용하십시오. 동형사상 비교가 유효하려면 지정된 노드 변수를 유지해야 합니다.

데이터형: char | string | cell

세부 정보

모두 축소

그래프 동형사상

두 그래프 G1G2는 노드 P의 치환이 존재하는 경우, 즉 reordernodes(G2,P)G1과 동일한 구조를 갖는 경우 동형입니다.

동형인 두 그래프는 유사한 구조를 갖습니다. 예를 들어, 하나의 순환이 포함된 그래프와 동형인 모든 그래프는 하나의 순환을 포함합니다.

확장 기능

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

버전 내역

R2016b에 개발됨