크루스칼(Kruskal) 알고리즘
1. 알고리즘 개요
크루스칼 알고리즘은 임의의 그래프에서 최소 신장 트리를 찾는 알고리즘입니다. 크루스칼 알고리즘은 그래프 변의 가중치를 중심으로 알고리즘을 전개합니다.
1.1. 알고리즘 동작
- 모든 그래프 변을 가중치 기준으로 오름차순 정렬합니다.
- 가장 왼쪽에 위치한(=가중치가 작은) 변부터 트리에 추가합니다. 단, 기존 배치된 변과 사이클을 이룰 경우 추가하지 않고 건너뜁니다.
- 신장 트리를 형성할 때까지 즉, 그래프 모든 꼭짓점을 포함할 때까지 2번 과정을 반복합니다.
2. 예시

위와 같은 그래프가 있을 때, 크루스칼 알고리즘으로 아래 과정을 통해 최소 신장 트리를 찾을 수 있습니다.

④과정에서 AD와 BC가 가중치 3으로 값이 같음에도 AD를 선택하지 않은 이유는 사이클을 형성하기 때문입니다.
연관 게시글
[이산수학] 그래프 - 트리
그래프 - 트리 1. 트리(Tree) 트리는 그래프의 한 종류로, 계층 구조를 나타내는 비순환(=사이클이 없는) 연결 그래프입니다. 순환하지 않더라도 방향은 존재할 수 있기 때문에, 방향이 있는 트리는
brightchords.tistory.com
참조
'IT' 카테고리의 다른 글
[이산수학] 정수론 (0) | 2024.04.06 |
---|---|
[이산수학] 프림(Prim) 알고리즘 (0) | 2024.04.05 |
[이산수학] 그래프 - 트리 (0) | 2024.04.01 |
[이산수학] 그래프 (0) | 2024.03.30 |
[이산수학] 이산확률과 경우의 수 (0) | 2024.03.25 |