SlideShare a Scribd company logo
By POSTECH Computer Algorithm Team
최소 신장 트리
이건규
Minimum Spanning Tree
POSTECH Computer Algorithm Team
- 그래프 G(v,e,w) 가 주어질 때, 최소의 가중치 합을 지니는 트리를 말함
- 위 그래프에서는 A-C, B-C, C-D, D-E, D-F 5개의 간선을 선택, 13의 가중치로 트리 구현
최소 신장 트리란? Graph
POSTECH Computer Algorithm Team
- 가중치 포함 그래프 G(V,E,W)가 주어질 때, 가중치의 합이 최소가 되는 tree를 반환
- 최소 신장 트리 MST(minimum spanning tree)
- 크루스칼은 edge기반, 프림은 node기반으로 작동
최소 신장 트리(MST) 알고리즘 MST
POSTECH Computer Algorithm Team
- N개의 원소를 몇 개의 영역으로 나눌 때 절대적인 기준이 없는 경우 사용
- 2개의 원소를 합치는 union, 한 원소와 같은 그룹의 원소를 반환하는 find을 지원
- 처음 n개의 원소가 n개의 그룹으로 나누어져 있음 각각의 그룹은 tree로 구성
- Union(a,b) : a.tree.root.parent = b.tree.root
- Find(a) : return a.tree
- 최악의 상황?
- N개의 원소가 일렬로 연결될 경우 O(N^2)의 시간이 소요
상호 배타적 집합(union-find) 데이터 구조4
POSTECH Computer Algorithm Team
- Find(a,b) : a와 b의 depth를 비교하여 같거나 낮은 tree.root의 parent를 다른 tree.root로 한다
- Depth는 처음에 1, 같은 depth가 합쳐진 경우 +1한다
- 최대 depth = log(N)
- 최대 시간 = O(Nlog(N))
상호 배타적 집합(union-find) 데이터 구조5
POSTECH Computer Algorithm Team
- N개의 node를 가지는 tree는 반드시 N-1개의 edge를 가짐
- 초기에는 N개의 node가 N개의 tree로 나누어져 있다.
- 모든 edge E를 가중치 순서대로 정렬
- 가중치가 작은 edge부터 살펴보며 2개의 다른 tree를 연결하면 포함, 아니면 포함하지 않는다.(union-find 사용)
- 1개의 edge가 추가될 때마다 tree의 개수가 1개씩 줄어든다 -> N-1번 포함하면 MST 완성
- 정렬에 Elog(E), 탐색에 E, union-find에 Nlog(N)으로 총 O(Elog(E)) = O(Elog(N))
크루스칼 알고리즘 Kruskal algorithm
POSTECH Computer Algorithm Team
크루스칼 Kruskal algorithm
POSTECH Computer Algorithm Team
- Node를 1개씩 추가하는 방식
- 1개의 시작점을 정하고, N개의 node까지의 가중치를 edge과 같이 저장, edge가 없는 경우 무한대
- N개의 node를 돌아보며 tree에 포함되지 않은 node중 가중치가 최소인 node를 추가
- 추가한 node의 edge를 돌아보며 아직 포함되지 않은 node중 가중치가 더 적어지는 edge가 있으면 갱신
- N개의 node를 추가할 때까지 반복
- N개의 node를 N번에 걸쳐서 추가, E개의 edge를 확인 총 O(N^2)
프림 알고리즘 Prim algorithm
POSTECH Computer Algorithm Team
프림 Prim algorithm
POSTECH Computer Algorithm Team
https://www.acmicpc.net/problem/1197 - 최소 스패닝 트리
https://algospot.com/judge/problem/read/LAN# - 근거리 네트워크
https://algospot.com/judge/problem/read/TPATH - 여행 결로 정하기
예시 문제 problem

More Related Content

PDF
Graph
PPT
[0326 석재호]상호배타적 집합의 처리
PPTX
06. sorting
PPTX
6. Sorting
PPTX
Binary search tree
PDF
정보과학회 FTL논문 아이디어
PPTX
The Art of Computer Programming 2.3.2 Tree
PPTX
분할정복
Graph
[0326 석재호]상호배타적 집합의 처리
06. sorting
6. Sorting
Binary search tree
정보과학회 FTL논문 아이디어
The Art of Computer Programming 2.3.2 Tree
분할정복

What's hot (7)

PDF
BOJ10547
PDF
Graph search
PPT
Data Structure 2
PDF
Binary Search
PPTX
4. dynamic programming(1)
PDF
2021 여름방학 정기 세미나 3주차
PPTX
Sqrt decomposition
BOJ10547
Graph search
Data Structure 2
Binary Search
4. dynamic programming(1)
2021 여름방학 정기 세미나 3주차
Sqrt decomposition
Ad

Similar to Graph mst (20)

PDF
자료구조(data structure)_NOTE 11. 그래프2.pdf
PDF
Algorithms summary korean
PPTX
02. binary search tree
PPTX
Tree algorithm
PPTX
코딩테스트 합격자 되기 C++ 16장 그리디를 강의한 자료 입니다. 영상도 있습니다.
PPTX
03. segment tree
PDF
[D2CAMPUS] Algorithm tips - ALGOS
DOCX
자료구조 Project4
PDF
Semina tree
PDF
퍼시스턴트 세그먼트 트리 - Sogang ICPC Team, 2020 Winter
PDF
CS Study - Data Structure 자료 구조. Tree 발표자료
PDF
자료구조 트리 보고서
PPTX
알고리즘 스터디 탐색
PDF
자료구조 04 최종 보고서
PDF
2012 Ds 04
DOCX
이산치수학 Project4
PDF
알고리즘 스터디 트리
PDF
[SOPT] 데이터 구조 및 알고리즘 스터디 - #04 : 트리 기초, 이진 트리, 우선순위 큐
PDF
Sqrt(n) algorithm
PDF
DS_04
자료구조(data structure)_NOTE 11. 그래프2.pdf
Algorithms summary korean
02. binary search tree
Tree algorithm
코딩테스트 합격자 되기 C++ 16장 그리디를 강의한 자료 입니다. 영상도 있습니다.
03. segment tree
[D2CAMPUS] Algorithm tips - ALGOS
자료구조 Project4
Semina tree
퍼시스턴트 세그먼트 트리 - Sogang ICPC Team, 2020 Winter
CS Study - Data Structure 자료 구조. Tree 발표자료
자료구조 트리 보고서
알고리즘 스터디 탐색
자료구조 04 최종 보고서
2012 Ds 04
이산치수학 Project4
알고리즘 스터디 트리
[SOPT] 데이터 구조 및 알고리즘 스터디 - #04 : 트리 기초, 이진 트리, 우선순위 큐
Sqrt(n) algorithm
DS_04
Ad

Graph mst

  • 1. By POSTECH Computer Algorithm Team 최소 신장 트리 이건규 Minimum Spanning Tree
  • 2. POSTECH Computer Algorithm Team - 그래프 G(v,e,w) 가 주어질 때, 최소의 가중치 합을 지니는 트리를 말함 - 위 그래프에서는 A-C, B-C, C-D, D-E, D-F 5개의 간선을 선택, 13의 가중치로 트리 구현 최소 신장 트리란? Graph
  • 3. POSTECH Computer Algorithm Team - 가중치 포함 그래프 G(V,E,W)가 주어질 때, 가중치의 합이 최소가 되는 tree를 반환 - 최소 신장 트리 MST(minimum spanning tree) - 크루스칼은 edge기반, 프림은 node기반으로 작동 최소 신장 트리(MST) 알고리즘 MST
  • 4. POSTECH Computer Algorithm Team - N개의 원소를 몇 개의 영역으로 나눌 때 절대적인 기준이 없는 경우 사용 - 2개의 원소를 합치는 union, 한 원소와 같은 그룹의 원소를 반환하는 find을 지원 - 처음 n개의 원소가 n개의 그룹으로 나누어져 있음 각각의 그룹은 tree로 구성 - Union(a,b) : a.tree.root.parent = b.tree.root - Find(a) : return a.tree - 최악의 상황? - N개의 원소가 일렬로 연결될 경우 O(N^2)의 시간이 소요 상호 배타적 집합(union-find) 데이터 구조4
  • 5. POSTECH Computer Algorithm Team - Find(a,b) : a와 b의 depth를 비교하여 같거나 낮은 tree.root의 parent를 다른 tree.root로 한다 - Depth는 처음에 1, 같은 depth가 합쳐진 경우 +1한다 - 최대 depth = log(N) - 최대 시간 = O(Nlog(N)) 상호 배타적 집합(union-find) 데이터 구조5
  • 6. POSTECH Computer Algorithm Team - N개의 node를 가지는 tree는 반드시 N-1개의 edge를 가짐 - 초기에는 N개의 node가 N개의 tree로 나누어져 있다. - 모든 edge E를 가중치 순서대로 정렬 - 가중치가 작은 edge부터 살펴보며 2개의 다른 tree를 연결하면 포함, 아니면 포함하지 않는다.(union-find 사용) - 1개의 edge가 추가될 때마다 tree의 개수가 1개씩 줄어든다 -> N-1번 포함하면 MST 완성 - 정렬에 Elog(E), 탐색에 E, union-find에 Nlog(N)으로 총 O(Elog(E)) = O(Elog(N)) 크루스칼 알고리즘 Kruskal algorithm
  • 7. POSTECH Computer Algorithm Team 크루스칼 Kruskal algorithm
  • 8. POSTECH Computer Algorithm Team - Node를 1개씩 추가하는 방식 - 1개의 시작점을 정하고, N개의 node까지의 가중치를 edge과 같이 저장, edge가 없는 경우 무한대 - N개의 node를 돌아보며 tree에 포함되지 않은 node중 가중치가 최소인 node를 추가 - 추가한 node의 edge를 돌아보며 아직 포함되지 않은 node중 가중치가 더 적어지는 edge가 있으면 갱신 - N개의 node를 추가할 때까지 반복 - N개의 node를 N번에 걸쳐서 추가, E개의 edge를 확인 총 O(N^2) 프림 알고리즘 Prim algorithm
  • 9. POSTECH Computer Algorithm Team 프림 Prim algorithm
  • 10. POSTECH Computer Algorithm Team https://www.acmicpc.net/problem/1197 - 최소 스패닝 트리 https://algospot.com/judge/problem/read/LAN# - 근거리 네트워크 https://algospot.com/judge/problem/read/TPATH - 여행 결로 정하기 예시 문제 problem