최소 비용 신장 트리의 특징
- 그래프의 모든 정점이 간선에 의해 하나로 연결되어 있다.
- 그래프 내에서 사이클을 형성하지 않는다.
최소 비용 신장 트리의 구성에 사용되는 대표적인 알고리즘
- 크루스칼(Kruskal) 알고리즘
가중치를 기준으로 간선을 정렬한 후에 MST가 될 때까지 간선을 하나씩 선택 또는 삭제해 나가는 방식
- 프림(Prim) 알고리즘
하나의 정점을 시작으로 MST가 될 때까지 트리를 확장해 나가는 방식
크루스칼 알고리즘의 핵심
오름차순
- 가중치를 기준으로 간선을 오름차순 정렬
- 낮은 가중치의 간선부터 시작해서 하나씩 그래프에 추가
- 사이클을 형성하는 간선을 추가하지 않음
- 간선의 수가 정점의 수보다 하나 적을 때 MST가 완성
내림차순
- 가중치를 기준으로 간선을 내림차순으로 정렬
- 높은 가중치의 간선부터 시작해서 하나씩 그래프에서 제거
- 두 정점을 연결하는 다른 경로가 없을 경우 해당 간선은 제거하지 않음
- 간선의 수가 정점의 수보다 하나 적을 때 MST가 완성
크루스칼과 프림 알고리즘 특징
크루스칼 알고리즘의 특징
- 변의 개수를 E, 꼭짓점의 개수를 V라고 하면 이 알고리즘은 $O(E\times logV)$의 시간 복잡도를 가진다.
프림 알고리즘의 특징
- 변의 개수를 E, 꼭짓점의 개수를 V라고 하면 이 알고리즘은 이진 힙을 이용하여 자료를 처리하였을 때의 기준으로 $O(E\times logV)$의 시간 복잡도를 가진다.
- 그래프가 충분히 빽빽한 경우 $E=\Omega(V\times logV)$에는 피보나치 힙을 이용하여 훨씬 빠르게 할 수 있다.
- 이 방법은 복잡도가 $O(E + V\times logV)$까지 떨어진다.
Reference
'Computer Science > 백준 알고리즘' 카테고리의 다른 글
쉬트라센 알고리즘 (Strassen Algorithm) (0) | 2020.03.04 |
---|---|
분할정복법과 동적프로그래밍 (0) | 2020.03.04 |
정렬 알고리즘의 장단점과 시간 복잡도 및 공간 복잡도 (2) | 2020.03.04 |
P NP 문제 (0) | 2020.03.04 |
시간 복잡도 정리 (0) | 2020.03.04 |