
신장 트리
- 그래프의 모든 정점을 포함하는 트리를 말한다.
- 그래프의 최소 연결 부분 그래프로 사이클이 없다.
- 정점의 개수가 n개면 간선의 개수가 n-1개 이다.

최소 신장 트리
- 신장 트리는 신장 트리 중 가중치 합이 최소인 신장 트리를 말한다.
최소 신장 트리 알고리즘
대표적으로 크루스칼, 프림 알고리즘이 있다.
크루스칼 알고리즘
- 그리디 알고리즘을 이용한다.
- 간선 선택을 기반으로 하는 알고리즘
- 최소 신장 트리가 최소 비용의 간선으로 구성되고, 사이클을 포함하지 않는다는 두 조건에 따라서 매 단계에서 사이클을 이루지 않는 최소 비용 간선을 선택한다.
- 이전 단계에서 만든 신장 트리와는 관계 없이 무조건 최소 간선만을 선택하는 방법
과정
- 그래프의 간선들을 가중치의 오름차순으로 정렬한다.
- 정렬된 간선 리스트에서 순서대로 사이클을 형성하지 않는 간선을 선택한다.
- 즉, 가장 낮은 가중치의 간선을 먼저 선택한다.
- 단, 사이클이 형성된다면 그 간선을 제외한다.
- 해당 간선을 현재의 최소 신장 트리 집합에 추가한다.
프림 알고리즘
- 정점 선택을 기반으로 하는 알고리즘
- 시작 정점에서부터 출발하여 신장트리 집합을 단계적으로 확장 해나간다.
과정
- 시작 단계에서는 시작 정점만이 MST 집합에 포함된다.
- 앞 단계에서 만들어진 MST 집합에 인접한 정점들 중에서 최소 간선으로 연결된 정점을 선택하여 트리를 확장한다.
- 즉, 가장 낮은 가중치를 먼저 선택한다.
- 이 과정을 트리가 N-1개 간선을 가질 때 까지 반복한다.
참고
[알고리즘] 최소 신장 트리(MST, Minimum Spanning Tree)란 - Heee's Development Blog
Step by step goes a long way.
Uploaded by N2T