문제 7 · 프림과 크루스칼의 성능 차이
문제 7 [3점]
프림 알고리즘과 크루스칼 알고리즘의 성능(1점) 및 그러한 차이가 일어나게 된 이유(2점)을 서술하시오.
풀이 및 해설
성능
정점 수
| 알고리즘 | 대표 구현 | 시간복잡도 |
|---|---|---|
| 프림 | 이진 힙 + 인접 리스트 | |
| 프림 | 인접 행렬(힙 없이) | |
| 프림 | 피보나치 힙 | |
| 크루스칼 | 간선 정렬 + union-find |
차이가 생기는 이유
두 알고리즘은 MST를 키우는 방식(관점) 이 다르다.
프림은 정점 중심이다. 하나의 트리를 정점에서 시작해, "트리 밖 정점 중 트리에 가장 가깝게 붙는 것"을 매번 골라 트리를 한 덩어리로 키운다. 그래서 정점을 우선순위 큐로 관리하며, 밀집 그래프에서는 굳이 힙 없이 인접 행렬만으로
에 끝낼 수 있어 간선이 많아도 성능이 에 크게 휘둘리지 않는다.크루스칼은 간선 중심이다. 모든 간선을 가중치 순으로 정렬한 뒤 가벼운 것부터 훑으며, 사이클을 만들지 않으면(서로소 집합으로 판별) 채택한다. 성능의 지배항이 간선 정렬
이므로, 간선이 적은 희소 그래프에서 매우 빠르지만, 완전 그래프처럼 이면 정렬 비용이 커진다.
정리하면, 프림은 "가까운 정점을 하나씩 끌어당기는" 방식이라 밀집 그래프에서 강하고, 크루스칼은 "가벼운 간선부터 줍는" 방식이라 희소 그래프에서 강하다. 이 관점의 차이(정점 vs 간선) 가 성능 차이의 근본 원인이다.