Skip to content

문제 6 · 프림 알고리즘으로 최소 신장 트리 찾기

문제 6 [4점]

7개의 정점vertex을 가진 임의의 무향 가중치 그래프undirected weighted graph를 그리고(2점), 프림 알고리즘Prim's algorithm을 적용하여 최소 신장 트리minimum spanning tree를 찾는 과정을 보이시오(2점).

풀이 및 해설

예시 그래프

정점 {A,B,C,D,E,F,G} 와 간선(가중치)을 다음과 같이 잡는다.

간선가중치간선가중치
A–B7D–E15
A–D5D–F6
B–C8E–F8
B–D9E–G9
B–E7F–G11
C–E5

프림 알고리즘

한 정점에서 시작해, 트리에 속한 정점과 속하지 않은 정점을 잇는 간선 중 가장 가벼운 것을 매번 골라 트리를 키운다. A 에서 시작하자.

단계추가되는 간선가중치트리 정점 집합
1A–D5
2D–F6
3A–B7
4B–E7
5E–C5
6E–G9

각 단계에서 "경계를 넘는 가장 싼 간선"을 고른다. 예컨대 단계 2에서 경계 간선은 A–B(7), B–D(9), D–E(15), D–F(6)이고 그중 최소는 D–F(6) 이다.

최소 신장 트리(MST)

MST 간선={AD, DF, AB, BE, CE, EG}총 가중치=5+6+7+7+5+9=39

모든 간선 가중치가 서로 다르므로 이 그래프의 MST는 유일하다.

👉 실습(C++)에서 확인하기

PDF