꿈돌이랜드

최소 신장 트리 본문

Programming/Algorithm

최소 신장 트리

loinsir 2024. 1. 22. 15:53
반응형

신장 트리

  • 그래프의 모든 정점을 포함하는 트리를 말한다.
  • 그래프의 최소 연결 부분 그래프로 사이클이 없다.
  • 정점의 개수가 n개면 간선의 개수가 n-1개 이다.

최소 신장 트리

  • 신장 트리는 신장 트리 중 가중치 합이 최소인 신장 트리를 말한다.
  • 예제)
    • 도시마다 도로를 짓는데 최소 거리가 되도록 구축
    • 집마다 전화망 설치하는데 최소 비용이 되도록 설계

최소 신장 트리 알고리즘

대표적으로 크루스칼, 프림 알고리즘이 있다.

크루스칼 알고리즘

  • 그리디 알고리즘을 이용한다.
  • 간선 선택을 기반으로 하는 알고리즘
  • 최소 신장 트리가 최소 비용의 간선으로 구성되고, 사이클을 포함하지 않는다는 두 조건에 따라서 매 단계에서 사이클을 이루지 않는 최소 비용 간선을 선택한다.
  • 이전 단계에서 만든 신장 트리와는 관계 없이 무조건 최소 간선만을 선택하는 방법

과정

  1. 그래프의 간선들을 가중치의 오름차순으로 정렬한다.
  1. 정렬된 간선 리스트에서 순서대로 사이클을 형성하지 않는 간선을 선택한다.
    • 즉, 가장 낮은 가중치의 간선을 먼저 선택한다.
    • 단, 사이클이 형성된다면 그 간선을 제외한다.
  1. 해당 간선을 현재의 최소 신장 트리 집합에 추가한다.

프림 알고리즘

  • 정점 선택을 기반으로 하는 알고리즘
  • 시작 정점에서부터 출발하여 신장트리 집합을 단계적으로 확장 해나간다.

과정

  1. 시작 단계에서는 시작 정점만이 MST 집합에 포함된다.
  1. 앞 단계에서 만들어진 MST 집합에 인접한 정점들 중에서 최소 간선으로 연결된 정점을 선택하여 트리를 확장한다.
    • 즉, 가장 낮은 가중치를 먼저 선택한다.
  1. 이 과정을 트리가 N-1개 간선을 가질 때 까지 반복한다.

참고

[알고리즘] 최소 신장 트리(MST, Minimum Spanning Tree)란 - Heee's Development Blog
Step by step goes a long way.
https://gmlwjd9405.github.io/2018/08/28/algorithm-mst.html

Uploaded by N2T

반응형