문제 6 · 프림 알고리즘으로 최소 신장 트리 찾기
문제 6 [4점]
7개의 정점vertex을 가진 임의의 무향 가중치 그래프undirected weighted graph를 그리고(2점), 프림 알고리즘Prim's algorithm을 적용하여 최소 신장 트리minimum spanning tree를 찾는 과정을 보이시오(2점).
풀이 및 해설
예시 그래프
정점
| 간선 | 가중치 | 간선 | 가중치 |
|---|---|---|---|
| A–B | 7 | D–E | 15 |
| A–D | 5 | D–F | 6 |
| B–C | 8 | E–F | 8 |
| B–D | 9 | E–G | 9 |
| B–E | 7 | F–G | 11 |
| C–E | 5 |
프림 알고리즘
한 정점에서 시작해, 트리에 속한 정점과 속하지 않은 정점을 잇는 간선 중 가장 가벼운 것을 매번 골라 트리를 키운다.
| 단계 | 추가되는 간선 | 가중치 | 트리 정점 집합 |
|---|---|---|---|
| 1 | A–D | 5 | |
| 2 | D–F | 6 | |
| 3 | A–B | 7 | |
| 4 | B–E | 7 | |
| 5 | E–C | 5 | |
| 6 | E–G | 9 |
각 단계에서 "경계를 넘는 가장 싼 간선"을 고른다. 예컨대 단계 2에서 경계 간선은 A–B(7), B–D(9), D–E(15), D–F(6)이고 그중 최소는 D–F(6) 이다.
최소 신장 트리(MST)
모든 간선 가중치가 서로 다르므로 이 그래프의 MST는 유일하다.