Data & ML & AI/NetworkX

[NetwrokX] 그래프 연결성분(연결요소, Connected Components)

뇌님 2022. 11. 15. 01:47
반응형

 

그래프 연결성분(연결요소)이란 쉽게 말해서 서로 분리되어 있는 그래프를 뜻합니다.

위의 (A~O)그래프에서는 3개의 연결성분이 있는거죠.

 

연결성분의 조건

  • 연결성분 안의 모든 노드들은 동일한 성분 내의 다른 노드와 연결되어 있어야한다.
  • 연결성분 밖에 있는 노드와 연결되면 안된다.

 

즉,  소외 되는 노드가 없으면서도 외부와의 접촉도 없는,

일종의 섬같은 성분을 연결성분이라고 부르는 겁니다.

 

위의 조건에 따라, 

1번 : {A,E,F,G}는 연결성분이 아닙니다. (서로 분리되어 있으므로)

2번 : {K,L,O}는 연결성분이 아닙니다. (외부의 노드 M,L과 연결되어있으므로)

3번 : 오로지 {A,B,C,D,E}, {E,F,G,H,I}, {J,K,L,M,N,O}만 위 그래프의 연결성분입니다.

 

 

무방향 그래프 연결성분 확인하기

연결성분 개수 확인하기

nx.number_connected_components(G)  # 3

 

연결성분 내용 확인하기

sorted(nx.connected_components(G))
# [{"A","B","C","D","E"}, {"F","G","H","I","J"}, {"K","L","M","N","O"}]

 

특정 노드가 속한 연결성분 확인하기

nx.node_connected_component(G, "M")
# {"K","L","M","N","O"}

 

반응형