본문 바로가기
Major/#알고리즘(Algorithm)

최소 신장 트리와 크루스칼 알고리즘의 증명 (Proof of Minimum Spanning Tree and Kruskal's Algorithm)

by Bright_Between 2023. 7. 11.
반응형

크루스칼 알고리즘은 최소 비용 신장 트리(Minimum Spanning Tree)를 구하는 알고리즘 중 하나로, 그래프 내의 모든 정점을 연결하면서 가장 작은 비용을 갖는 트리를 찾아냅니다. 이 알고리즘은 증명 과정을 통해 정당성을 입증할 수 있습니다.

크루스칼 알고리즘의 증명에 앞서, 먼저 최소 비용 신장 트리의 개념을 이해해야 합니다. 주어진 그래프의 최소 비용 신장 트리는 모든 정점을 포함하면서 사이클이 없는 트리입니다. 따라서 최소 비용 신장 트리는 그래프 내의 모든 정점을 연결하며 간선의 총 비용이 최소화되어야 합니다.

 



크루스칼 알고리즘은 이러한 최소 비용 신장 트리를 찾기 위해 다음과 같은 과정을 거칩니다:

1. 그래프의 모든 간선을 가중치(비용)에 따라 오름차순으로 정렬합니다.

2. 비어있는 트리를 생성합니다.

3. 정렬된 간선 리스트에서 가장 작은 가중치를 가진 간선을 선택합니다.

4. 선택한 간선이 트리에 사이클을 생성하지 않는다면, 해당 간선을 트리에 추가합니다. 사이클을 생성하면 간선을 버리고 다음으로 넘어갑니다.

5. 위의 단계를 반복하면서 모든 정점이 연결될 때까지 진행합니다.

6. 알고리즘이 종료되면 최소 비용 신장 트리가 완성됩니다.

 



크루스칼 알고리즘의 증명은 다음과 같이 진행됩니다:

1. 초기에는 그래프 내에 간선 없는 상태로 시작합니다. 이 상태에서는 트리는 정점 하나만을 포함하며, 사이클도 없습니다.

2. 알고리즘이 진행되면서 간선을 추가할 때, 사이클이 생성되지 않도록 합니다. 사이클을 생성하면 트리 속성을 만족하지 못하므로 해당 간선을 선택하지 않습니다.

3. 알고리즘이 종료될 때 모든 정점이 연결되어야 합니다. 그렇지 않은 경우, 트리에 포함되지 않은 정점이 존재하게 되는데, 이는 트리 속성을 위배합니다. 따라서 알고리즘이 종료될 때 모든 정점이 연결된다는 것을 증명해야 합니다.

 



크루스칼 알고리즘의 증명은 반복적인 과정을 통해 각 단계에서 사이클이 생성되지 않고 모든 정점이 연결된다는 점을 증명하는 것입니다. 이를 수학적인 귀납법이나 증명 방식으로 증명할 수 있습니다. 따라서 크루스칼 알고리즘은 정당성이 증명된 알고리즘 중 하나입니다.

크루스칼 알고리즘은 그리디 알고리즘의 한 종류로, 매 단계에서 가장 작은 비용을 가진 간선을 선택하면서 최소 비용 신장 트리를 구합니다. 이러한 선택 과정에서 사이클을 생성하지 않도록 주의하면서 알고리즘이 진행되기 때문에 최소 비용 신장 트리를 정확하게 찾아낼 수 있습니다.

반응형

댓글