EunJng

[Algorithm] Union Find(유니온 파인드) 본문

STUDY/CS

[Algorithm] Union Find(유니온 파인드)

Eunjng 2024. 3. 7. 10:02

Union Find

  • 상호 배타적으로 이루어진 집합을 효율적으로 표현하기 위해 만들어진 자료구조
    • Disjoint-set(서로소 집합, 상호배타 집합) : 서로 중복 포함된 원소가 없는 집합들. 즉, 교집합이 없다.
      집합에 속한 대표자(representative)를 통해 각 집합을 구분한다.
  • Make-Set, Find, Union의 세 연산을 이용한다.
  • make-set(x)
    • 유일한 멤버 x를 포함하는 새로운 집합을 생성하는 연산
    • parents = [i for i in range(n)]과 같이 집합 생성
  • find(x)
    • x를 포함하는 집합을 찾는 연산
    • 재귀 혹은 반복문을 통해 구현할 수 있다.
# 재귀
def find(x):
	if x == parents[x]:	# 자기 자신이 부모 노드라면(루트 노드) return x 
    	return x
    parents[x] = find(parents[x])	# 부모 노드 찾기 및 갱신
    return parents[x]
    
# while 문 사용
def find(x):
	while x != parents[x]:
    	x = parents[x]
    return x
  • union(x, y)
    • x와 y를 포함하는 두 집합을 통합하는 연산
def union(x, y)::
	x = find(x)
    y = find(y)
    
    parents[y] = x

 

 

 

 

 

 

 

관련 문제(백준 1976) 풀이

https://eunjng.tistory.com/85

 

[BOJ] 1976 여행 가자 | Python

문제 백준 1976번 여행 가자 | 골드4 https://www.acmicpc.net/problem/1976 1976번: 여행 가자 동혁이는 친구들과 함께 여행을 가려고 한다. 한국에는 도시가 N개 있고 임의의 두 도시 사이에 길이 있을 수도,

eunjng.tistory.com

 

'STUDY > CS' 카테고리의 다른 글

[HTTP] HTTP 웹 기본 지식 #08  (0) 2024.03.06
[HTTP] HTTP 웹 기본 지식 #07  (0) 2024.03.05
[HTTP] HTTP 웹 기본 지식 #06  (0) 2024.03.04
[HTTP] HTTP 웹 기본 지식 #05  (1) 2024.03.01
[HTTP] HTTP 웹 기본 지식 #04  (0) 2024.03.01