Kruskal 알고리즘은 최소비용 신장트리(이하 MST)를 찾는 대표적인 알고리즘입니다.
MST를 구하는 알고리즘으로 Prim 알고리즘도 있는데, Prim은 정점을 기준으로 한다면, Kruskal은 간선을 기준으로 합니다.
아래와 같은 그래프에서 MST를 찾아보겠습니다.
가장 적은 비용으로 연결만 시키면 되기 때문에 간선의 가중치를 기준으로 가중치가 적은 것부터 하나씩 그래프에 포함시켜나가면 됩니다.
먼저, 위 그래프에서 간선을 오름차순으로 정렬하면 다음과 같습니다.
그럼 위 테이블을 참고해 가중치가 적은 간선부터 하나씩 그래프에 추가해보겠습니다.
그래프에서 간선을 하나씩 추가해나가다가 사이클이 형성되는 (1, 3) 간선을 만나면 그리지않고 넘어갑니다.
그럼 간선을 추가했을 때 사이클이 형성되는지는 알기위해 Disjoint-Set 자료구조 사용
최종적인 MST는 다음과 같습니다.