유니온-파인드를 공부하면서 문제를 풀다 최소 신장 트리로 푸는 문제가 나와 정리해보았다.
최소 신장 트리를 알기 전에 신장 트리가 무엇인지 알아야 한다.
그래프 내의 모든 정점을 포함하는 트리인데 여기서 신장 트리는 그래프의 최소 연결 부분 그래프이다. 따라서 신장 트리는 간선의 수가 가장 적으면서 그래프의 모든 정점을 포함한다.
신장 트리 중 사용된 간선들의 가중치 합이 최소인 트리이다.
하지만 각 간선의 가중치가 동일하지 않을 때 단순히 가장 작은 간선을 선택한다고 해서 최소 비용이 얻어지는 것이 아니다.
그래프에 있는 모든 정점들을 가장 적은 수의 간선과 적은 비용으로 연결하는 것이 최소 신장 트리이다.
그리디 알고리즘을 이용하여 MST를 구하는 방법이다.
MST가
1. 최소 비용의 간선으로 구성됨
2. 사이클을 포함하지 않음
의 조건에 근거하여 각 단계에서 사이클을 이루지 않는 최소 비용 간선을 선택하여 MST를 구한다.
<과정>
이 때 사이클을 형성한다는 것은 유니온-파인드 알고리즘에서 같은 부모를 가진다는 의미가 되기때문에 사이클 형성 검사에 유니온-파인드 알고리즘을 이용할 수 있다.
시작 정점에서부터 출발하여 신장트리 집합을 단계적으로 확장해 나가는 방법
- 정점 선택을 기반으로 하는 알고리즘
- 이전 단계에서 만들어진 신장 트리를 확장하는 방법
<과정>