본문으로 건너뛰기
김신건의 로그

Transitive Closure: 도달 가능성 폐포

· 수정 · 📖 약 1분 · 121자/단어 #algorithm #graph #reachability
Transitive Closure, 이행 폐포, reachability closure

정의

Transitive Closure 는 그래프의 모든 (u, v) 쌍에 대해 u 에서 v 로 도달 가능한지 담은 부울 행렬입니다.

Floyd-Warshall 변형

vector<vector<bool>> reach(n, vector<bool>(n));
for (int u = 0; u < n; u++) reach[u][u] = true;
for (auto [u, v] : edges) reach[u][v] = true;

for (int k = 0; k < n; k++)
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            reach[i][j] = reach[i][j] || (reach[i][k] && reach[k][j]);

O(V³). 비트셋으로 최적화 시 O(V³/64) 실전 유리.

DFS/BFS 반복

각 정점 s 마다 도달 가능한 정점 표시. O(V(V+E)). Sparse graph 에서 유리.

응용

  • DAG 축약 후 이행 폐포
  • 관계 추론 (family tree, dependency)

참고

이 개념을 다룬 위키 페이지 (1)

💬 댓글

사이트 검색 / 명령어

검색

스크롤 = 확대/축소 · 드래그 = 이동 · 0 = 원래 크기 · ESC = 닫기