크루스칼 알고리즘이란?
최소 신장 트리 구현에 사용되는 알고리즘으로, 가중치가 있는 그래프의 모든 간선들을 대상으로
1. 최소 비용의 간선으로 구성
2. 사이클을 형성하지 않음
의 조건을 지켜가며 각 단계마다 최선의 해를 선택하기에 그리디 알고리즘에 기원을 둔다.
크루스칼 알고리즘의 시퀀스
1. 그래프의 간선들을 가중치 기준으로 오름차순 정렬한다.
2. 정렬된 간선들 중 가중치가 작은 순서대로 사이클을 형성하지 않는 한 선택한다.
3. 선택된 간선으로 MST를 구현한다.
4. MST 집합의 원소의 개수가 V-1개가 될때까지 위 단계를 반복한다.
이때, 주의해야 할 점은 사이클을 형성하지 않게 정렬된 간선들을 선택한다는 것이다. 따라서 사이클을 형성하는지 안하는지에 대한 판가름을 해줄 수 있는 메소드를 같이 구현해야 한다.
크루스칼 알고리즘 vs 프림 알고리즘
크루스칼 알고리즘 : Kruskal's Algorithm | 프림 알고리즘 : Prim's Algorithm |
그래프의 최소 가중치 간선들을 정렬된 순서로 추가하여 MST 구성 | 그래프의 아무 정점부터 시작하여 MST 구성 |
통상적으로 O(E logV)의 시간복잡도 | 통상적으로 O(E + V logV)의 시간복잡도 |
주로 간선의 수가 적은 희소그래프_Sparse Graph에 유리 | 주로 간선의 수가 많은 밀집그래프_Dense Graph에 유리 |
728x90
'Algorithm > 알고리즘 공부' 카테고리의 다른 글
[알고리즘 공부] 그리디 알고리즘 Greedy Algorithm (0) | 2024.03.01 |
---|---|
[알고리즘 공부] 다익스트라 알고리즘 Dijkstra Algorithm (0) | 2024.01.13 |
[알고리즘 공부] 프림 알고리즘 Prim's Algorithm (0) | 2024.01.11 |
[알고리즘 공부] 너비 우선 탐색 (Breath First Search, BFS) (0) | 2024.01.06 |
[알고리즘 공부] 깊이 우선 탐색 (Depth First Search, DFS) (0) | 2024.01.06 |