Hard deck/Module

Minimum Spanning Tree

서버관리자 페페 2022. 8. 18. 20:39

모든 노드를 연결할 때 사용된 에지들의 가중치의 합을 최소로 하는 트리

 

> 가중치가 작은 에지부터 에지가 N-1개가 될 때까지 연결하되(정렬 > union)

> find로 대표 노드가 같으면(왼쪽 방향 회전(find로 찾아진 대표 노드)이 오른쪽 새 연결과 만날 때) 사이클이 생기므로 건너뛴다

 

- 사이클이 포함되지 않는다

- N개의 노드가 있을 때, 최소 신장 트리를 구성하는 에지의 개수는 항상 N-1 개이다

- 에지 중심의 시행

 

------------------------------------

1

재료

edge list 형태로 저장

edge class에는 Node-start, Node-end, weight로 구성

union find 배열도 초기화

 

2

가중치 기준으로 오름차순 정렬

comparable() 함수 사용가능

 

3

cycle unit

가중치가 낮은 edge부터 연결 시도한다

바로 연결하지 않고, 연결했을 때 그래프의 사이클 형성 유무를 find연산 이용하여 확인 > union을 이용해 두 노드 연결

왼쪽 방향 회전(find로 찾아진 대표 노드)이 오른쪽 새 연결과 만난다

 

4

에지 개수가 N-1이 될 때까지 반복(N개 노드일 때)

 

'Hard deck > Module' 카테고리의 다른 글

Lowest Common Ancestor  (0) 2022.08.31
세그먼트 트리  (0) 2022.08.28
Floyd - Warshall  (0) 2022.08.17
Bellman-ford-moore  (0) 2022.08.17
Dijkstra  (0) 2022.08.15