[ 유니온 파인드 ] 유니온 파인드 이론 정리

2025. 5. 27. 04:28·알고리즘/알고리즘 공부

유니온 파인드(또는 Disjoint Set Union, DSU)는 서로소 집합(Disjoint Set)을 다룰 때 사용하는 자료구조다. 주로 무방향 그래프의 사이클 판별이나 크루스칼 알고리즘을 활용한 최소 신장 트리(MST) 문제에서 자주 사용된다.

 

1. 유니온 파인드의 핵심 아이디어

  • 여러 개의 원소가 있을 때, 이들을 서로소 집합(즉, 겹치지 않는 집합)으로 분리하여 관리한다.
  • 두 원소가 같은 집합에 속하는지 확인하거나, 두 집합을 합치는 연산을 지원한다.
  • 대표적으로 사용하는 연산은 아래 두 가지다:
    • find(x) : 원소 x가 속한 집합의 루트(대표값)를 찾는다.
    • union(x, y) : 원소 x, y가 속한 두 집합을 하나로 합친다.

 

2. 기본 구현

 

# 부모 테이블 초기화
parent = [i for i in range(n + 1)]

# 루트 노드 찾기
def find(x):
    if parent[x] != x:
        parent[x] = find(parent[x])  # 경로 압축
    return parent[x]

# 두 집합 합치기
def union(x, y):
    root_x = find(x)
    root_y = find(y)
    if root_x != root_y:
        if root_x < root_y:
            parent[root_y] = root_x
        else:
            parent[root_x] = root_y

 

 

 

 

3. 경로 압축 (Path Compression)

  • find() 함수를 재귀적으로 호출하면서 루트 노드를 찾을 때, 중간 노드들을 루트에 바로 연결시킨다.
  • 이렇게 하면 find의 시간 복잡도가 거의 O(1)에 수렴하게 된다.
def find(x):
    if parent[x] != x:
        parent[x] = find(parent[x])
    return parent[x]

 

4. 합치기 최적화 (Union by Rank / Size)

  • 집합을 합칠 때, 작은 집합을 큰 집합 밑으로 붙이는 전략.
  • 일반적으로는 생략해도 괜찮지만, 성능을 더 높이고 싶다면 사용한다.

'알고리즘 > 알고리즘 공부' 카테고리의 다른 글

[ 슬라이딩 윈도우 ] 슬라이딩 윈도우 이론 정리  (0) 2025.05.25
[ 완전탐색 ] 완전탐색(Brute Force) 알고리즘 이론정리  (0) 2025.05.13
[ 그리디 ] 그리디 알고리즘 정리  (0) 2025.05.06
[ 분할정복 ] 분할정복 이론 정리  (0) 2025.04.29
[ 이분탐색 ] 이분탐색 이론 정리  (0) 2025.04.29
'알고리즘/알고리즘 공부' 카테고리의 다른 글
  • [ 슬라이딩 윈도우 ] 슬라이딩 윈도우 이론 정리
  • [ 완전탐색 ] 완전탐색(Brute Force) 알고리즘 이론정리
  • [ 그리디 ] 그리디 알고리즘 정리
  • [ 분할정복 ] 분할정복 이론 정리
swallow8801
swallow8801
  • swallow8801
    제비집
    swallow8801
  • 전체
    오늘
    어제
    • 분류 전체보기 (59)
      • KT AIVLE SCHOOL (16)
        • 복습노트 (7)
        • 스터디 (5)
        • 프로젝트 (4)
        • 빅프로젝트 (0)
      • 알고리즘 (43)
        • 백준 (27)
        • 알고리즘 공부 (15)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    웹크롤링
    KT 에이블스쿨
    2609
    BOJ
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
swallow8801
[ 유니온 파인드 ] 유니온 파인드 이론 정리
상단으로

티스토리툴바