크루스칼 알고리즘은 대표적인 최소 신장 트리를 찾는 알고리즘이다.

신장트리

그래스에서 모든 노드를 포함하면서 사이클이 존재하지 않는 부분그래프

모든 노드가 포함되어 서로 연결되며 사이클이 존재하지 않는 것은 트리라고도 할 수 있다.

신장트리의 간선 수는 (노드수 -1)개이다. (트리의 기본적 특성)

https://devlog-wjdrbs96.tistory.com/97

https://devlog-wjdrbs96.tistory.com/97

위 그림의 (a)처럼 사이클이 존재하는 경우는 신장트리라고 할 수 없다.

최소신장트리 문제

최소한의 비용으로 구성되는 신장트리를 찾는 문제이다.

ex) N개의 도시가 존재할 때

크루스칼 알고리즘

예시

간선 (1,2) (1,5) (2,3) (2,6) (3,4) (4,6) (4,7) (5,6) (6,7)
비용 29 75 35 34 7 23 13 53 25

(1)오름차순 정렬

간선 (3,4) (4,7) (4,6) (6,7) (1,2) (2,6) (2,3) (5,6) (1,5)
비용 7 13 23 25 29 34 35 53 75