[이산수학]최소신장 트리 구하는 크루스칼 알고리즘(Kruskal Algorithm) 이란?
크루스칼 알고리즘은 프림 알고리즘과 마찬가지로 그래프 G의 변들 중 비용이 가장 낮은 변들을 가지로 연결시켜 트리를 만드는 알고리즘입니다. 프림 알고리즘은 이미 연결되 노드에 근접하는 가지 중 최소 비용을 갖는 가지를 선택했지만, 크루스칼 알고리즘은 연결 여부와 상관없이 가장 비용이 낮은 가지를 연결해갑니다.
■ 크루스칼 알고리즘(Kruskal Algorithm)
그래프 G의 변 중 비용이 가장 낮은 변들로 트리를 구성하는 알고리즘
(1) 가중치가 가장 작은 변을 차례로 선택하여 노드들을 연결
(2) 가중치가 같은 변은 임의로 선택
(4) 선택된 변에 대해 회로가 형성되는 경우는 선택하지 않음
(5) n개의 꼭짓점에 대하여 n - 1개의 변이 연결되면 종료
※ 회로(Circuit): 경로의 시작점과 끝이 같은 경우
■ 크루스칼 알고리즘(Kruskal Algorithm) 예
이전 글에서 프림 알고리즘으로 만들었던 최소신장 트리를 크루스칼 알고리즘으로 만들겠습니다.
(1) 모든 노드에 연결된 가지의 비용을 정리하면 다음 표와 같습니다.
(2) (1)의 표에서 비용이 가장 낮은 노드의 연결은 A - F입니다.
(3) (1)의 표에서 두 번째로 비용이 낮은 노드의 연결은 A - C와 K - G입니다.
(4) (1)의 표에서 세 번째로 비용이 낮은 노드의 연결은 B - F와 F - C입니다. 그러나 F- C는 A - F - C 사이에 회로가 생성되므로 사용하지 않습니다.
(5) (1)의 표에서 네 번째로 비용이 낮은 노드의 연결은 B - K입니다.
(6) 모든 노드(6개)가 5(6-1)개의 가지로 연결되었으므로 종료합니다. 이때 이 최소신장 트리의 비용은 다음과 같습니다.
9 + 10 + 12 +13 + 10 = 54
각 가지에 부여된 비용이 모두 다른 경우에는 프림 알고리즘과 크루스칼 알고리즘, 두 알고리즘으로 구한 최소신장 트리의 모양이 같지만, 비용이 같은 가지를 포함한 그래프에서는 두 알고리즘으로 구한 최소신장 트리의 모양이 같을 수도 있고 다를 수도 있습니다.
수학으로 이해하는 디지털 논리 이산수학 400p 참고
-----------------------------------
-----------------------------------
'컴퓨터 공학 > Software Math' 카테고리의 다른 글
[선형대수학] 방정식(equation)에서 동치(equivalent)란? (1) | 2023.10.19 |
---|---|
[이산수학]최소신장 트리란?/ 최소신장 트리 구하는 알고리즘 (1) | 2020.08.30 |
[이산수학]최소신장 트리 구하는 프림 알고리즘(Prim Algorithm)이란? (0) | 2020.08.28 |
[이산수학]이진 탐색 트리란?_예제포함 (0) | 2020.08.27 |
[이산수학]이진트리 순회표기법의 종류(전위표기, 중위표기, 후위표기)_예제포함 (0) | 2020.08.26 |
댓글