34. biconnected componet [13 1주차]

Posted by aliontory on January 15, 2024 · 30 mins read

34. Biconnected Componet [13-1주차]

2024 1 14일 일요일

오후 5:02

<BCC (Biconnected Component)>

Biconnected Graph : 임의의 한 노드를 제거해도 나머지 모든 노드들이 연결되어 있는 그래프. 따라서 biconnected graph에는 cut vertex가 존재하지 않는다.

Biconnected graph는 몇 개의 사이클이 겹쳐져 있는 형태를 띤다. (두 개의 노드로 구성된 경우도 있다)

 

An example graph with biconnected components marked

(그림 출처 : https://commons.wikimedia.org/wiki/File:Graph-Biconnected-Components.svg)

그래프 G Biconnected Component, G내의 Biconnected인 부분 그래프를 의미한다. 그래프 내에 여러 BCC가 존재할 수 있으며, 각각의 BCC는 최대 크기여야 한다.

 

BCC cut vertex와 관련해 다음 특징을 가진다.

  • cut vertex는 여러 BCC에 걸쳐 있다.
  • cut vertex가 아닌 노드는 하나의 BCC에만 포함된다.

 

위 특징을 이용해 그래프의 BCC를 찾을 수 있다.

 

 

<BCC를 찾는 방법>

먼저 DFS를 통해 cut vertex를 찾는다.

 

다음으로, 임의의 노드 v에 대해 다음을 수행한다.

 

  • v가 루트 노드인 경우

루트 노드가 자식을 하나만 가지면 그대로 둔다. 루트 노드가 자식을 두 개 이상 가지면, 즉 루트 노드가 cut vertex이면, 루트 노드를 자식 노드 수만큼 복사해 각각의 자식 노드와 연결한다. 분리된 DFS 트리 각각에 대해 다시 BCC를 찾는다.

 

  • v가 루트 노드가 아닌 경우

v cut vertex가 아니면, 하나의 BCC에만 포함되는 것이므로, 그대로 둔다. 해당 노드가 cut vertex이면, v cut vertex로 만드는 자식 노드 개수만큼 노드 v를 복사한다. v cut vertex로 만드는 자식 노드를 루트로 하는 서브트리를 분리한 뒤, 그 서브트리의 최상단에 복사한 노드 v를 잇는다.

분리된 DFS트리 각각에 대해 다시 BCC를 찾는다.

 

OneNote에서 작성되었습니다.