에듀테크 프로젝트 대시보드
강한 연결 요소 (Tarjan)
방향 그래프에서 서로가 서로를 (간선을 따라) 왔다 갔다 할 수 있는 노드 묶음을
강한 연결 요소(SCC, Strongly Connected Component) 라고 부릅니다.
Tarjan 알고리즘은 DFS를 딱 한 번 돌면서 각 노드에 disc(발견 순서)와
low(자신이 되돌아갈 수 있는 가장 이른 조상)라는 두 값만으로 이 묶음들을 찾아냅니다.
아래에서 다음 단계 버튼을 눌러 한 걸음씩 따라가 보세요.
트리 간선(첫 방문) 역방향 간선(back edge, low 갱신 유발) 스택에 있음 SCC 확정
low[u]=min(low[u], low[v])low[u]=min(low[u], disc[v])| 항목 | Tarjan | Kosaraju |
|---|---|---|
| DFS 횟수 | 1번 | 2번 (원본 1번 + 역방향 그래프 1번) |
| 핵심 아이디어 | low-link 값으로 그 자리에서 판별 | 완료 시간 역순 + 그래프 뒤집기 |
| 부가 자료구조 | 스택 1개, onStack 플래그 | 역방향 인접 리스트, 완료 순서 스택 |
| 시간 복잡도 | O(V + E) — 둘 다 선형 | |
어디에 쓰일까요? 컴파일러의 순환 의존성 탐지, 소셜 그래프의 맞팔 커뮤니티 찾기, 2-SAT 문제 풀이, 웹 크롤러의 상호 링크 클러스터 파악 등에 쓰입니다. SCC 하나를 노드 하나로 뭉치면 사이클이 없는 축약 그래프(condensation DAG) 가 되어, 이후 위상 정렬 같은 알고리즘을 그대로 적용할 수 있습니다.
학습용 인터랙티브 페이지 · 한양과학기술고등학교 프로젝트 허브