개념

참고블로그

26. 강한 결합 요소(Strongly Connected Component)

**강한 결합 요소(Strongly Connected Component : SCC)**란 그래프 안에서 '강하게 결합된 정접 집합'을 의미한다. 같은 SCC에 속하는 두 정점은 서로 도달 가능하다.

따라서 사이클이 발생하는 경우 SCC에 해당된다. SCC는 Directed Graph일 때만 고려한다. 무향 그래프일떄는 그래프의 전체가 SCC이기 때문에 따로 고려하지 않는다.

SCC를 추출하는 알고리즘에는 대표적으로 2가지가 있다.

이 페이지에서는 타잔 알고리즘에 대해 다룬다.

수행 과정

타잔 알고리즘은 모든 정점에 대해 DFS를 수행하며 SCC를 찾는다.

DFS는 함수 안에서 계산된 최소 parent를 return한다.

아래는 DFS함수의 수행과정이다.

  1. 처음엔 현재노드를 부모노드라고 가정한다. 현재 노드를 Stack에 넣는다.
  2. 현재 노드와 인접한 노드에 대하여..
  3. 현재 노드에서 구할 수 있는 최소 parent가 결정되었다.

위의 DFS를 모든 정점에 대해 실행한다. 단, visit된 노드는 이미 SCC처리가 된 상태이므로 방문하지 않는다.

C++