mir.pe (일반/어두운 화면)
최근 수정 시각 : 2016-08-02 16:28:45

Disjoint-set

1. 무엇인가?

집합을 미친듯이 빠르게 구하는 자료구조이다.

2. 시간 복잡도

최악의 경우 O(α(n))O(\alpha(n))이다. (α는 아커만 함수의 역함수)

3. 어떻게 구현하는가?

트리의 노드 x,yx, y에 대해 }}} }}} }}}
연산자 정의를 이렇게 하면 트리의 균형이 안 맞아 매우 불완전한 Disjoint-set을 만들 수 있다. 최악의 경우 O(n)O(n)의 시간 복잡도가 된다.

x부터 root까지의 경로를 줄이고 }}}
합병을 O(logn)O(log n)로 좀 더 효율적으로 구현하면 }}}
O(α(n))O(\alpha(n))만큼의 시간이 걸린다.

4. 출처

http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-design-and-analysis-of-algorithms-spring-2012/lecture-notes/MIT6_046JS12_lec16.pdf를 참고함.