본문 바로가기
Algorithm

크루스칼 알고리즘(Kruskal Algorithm)

by Doromi 2019. 4. 26.
728x90
반응형

가장 적은 비용으로 모든 노드를 연결하기 위해 사용하는 알고리즘이다.

최소 비용 신장 트리를 만들기 위한 대표적인 알고리즘 중 하나.

 

흔히, 여러 개의 도시가 있을 때 각 도시를 도로를 이용해 연결하고자 할 때
비용을 최소한으로 하고자 한다면 적용되는 알고리즘이다.

 

이 그래프는 노드의 갯수가 7개 이고 간선의 갯수가 11개이다.

 

 



"크루스칼 알고리즘의 핵심 개념은

간선을 거리가 짧은 순서대로 그래프에 포함시켜본다."

 

 

가장 먼저 간선 정보를 오름차순으로 정렬한 뒤에 비용이 적은 간선부터 차례대로 그래프에 포함 시킨다.

다음의 알고리즘에 맞게 그래프를 연결하면 가장 적은 비용으로 모든 노드를 연결한 그래프인 

'최소 비용 신장 트리'가 만들어진다.

 

1. 정렬된 순서에 맞게 그래프에 포함시킨다.
2. 포함시키기 전에 사이클 테이블을 확인한다.
3. 사이클을 형성하는 경우 간선을 포함하지 않는다.

 

사이클이란 그래프가 서로 연결되어 사이클을 형성하는 경우이다.

최소 비용 신장 트리에서는 사이클이 발생하면 안된다!!

 

크루스칼의 시간복잡도

728x90
반응형

'Algorithm' 카테고리의 다른 글

프림 알고리즘  (0) 2019.04.26
Union-Find(합집합 찾기)  (0) 2019.04.26
플로이드 와샬(Floyd Warshall)  (0) 2019.04.26
힙 정렬(Heap Sort)  (0) 2019.04.23
다익스트라 알고리즘  (0) 2019.04.23