Skip to content

문제 7 · 프림과 크루스칼의 성능 차이

문제 7 [3점]

프림 알고리즘과 크루스칼 알고리즘의 성능(1점) 및 그러한 차이가 일어나게 된 이유(2점)을 서술하시오.

풀이 및 해설

성능

정점 수 V, 간선 수 E 라 하자.

알고리즘대표 구현시간복잡도
프림이진 힙 + 인접 리스트O(ElogV)
프림인접 행렬(힙 없이)O(V2)
프림피보나치 힙O(E+VlogV)
크루스칼간선 정렬 + union-findO(ElogE)=O(ElogV)
밀집 그래프(EV2): 프림(O(V2))이 유리,희소 그래프: 크루스칼이 유리

차이가 생기는 이유

두 알고리즘은 MST를 키우는 방식(관점) 이 다르다.

  • 프림은 정점 중심이다. 하나의 트리를 정점에서 시작해, "트리 밖 정점 중 트리에 가장 가깝게 붙는 것"을 매번 골라 트리를 한 덩어리로 키운다. 그래서 정점을 우선순위 큐로 관리하며, 밀집 그래프에서는 굳이 힙 없이 인접 행렬만으로 O(V2) 에 끝낼 수 있어 간선이 많아도 성능이 E에 크게 휘둘리지 않는다.

  • 크루스칼은 간선 중심이다. 모든 간선을 가중치 순으로 정렬한 뒤 가벼운 것부터 훑으며, 사이클을 만들지 않으면(서로소 집합으로 판별) 채택한다. 성능의 지배항이 간선 정렬 O(ElogE) 이므로, 간선이 적은 희소 그래프에서 매우 빠르지만, 완전 그래프처럼 E=Θ(V2) 이면 정렬 비용이 커진다.

정리하면, 프림은 "가까운 정점을 하나씩 끌어당기는" 방식이라 밀집 그래프에서 강하고, 크루스칼은 "가벼운 간선부터 줍는" 방식이라 희소 그래프에서 강하다. 이 관점의 차이(정점 vs 간선) 가 성능 차이의 근본 원인이다.

PDF