최소 신장 트리(MST)

jhin·2023년 7월 5일
0

알고리즘

목록 보기
13/13

개념

최소 신장 트리(Minimum Spanning Tree, MST)는 그래프에서 모든 노드를 가장 적은 비용으로 연결하는 트리입니다. 주어진 그래프에서 모든 노드를 포함하면서 사이클을 생성하지 않으면서 최소 비용을 갖는 간선들로 구성됩니다. 이는 네트워크 연결, 도로 건설, 전력망 구축 등의 문제에서 최소 비용으로 모든 노드를 연결하는 최적의 해결책을 찾는 데 활용됩니다.


특징

  1. 최소 비용: 최소 신장 트리는 그래프의 모든 노드를 연결하는데 필요한 최소 비용으로 구성됩니다. 모든 간선의 가중치의 합이 최소가 되도록 구성되며, 이는 네트워크 연결, 도로 건설, 전력망 구축 등에서 비용을 최소화하는 중요한 요소입니다.

  2. 사이클이 없음: 최소 신장 트리는 사이클을 생성하지 않습니다. 사이클을 포함하는 경우, 비용이 증가하므로 최소 신장 트리를 구성하기 위해서는 사이클을 피해야 합니다.

  3. 노드들의 연결: 최소 신장 트리는 그래프의 모든 노드를 포함합니다. 모든 노드가 서로 연결되어 있으며, 노드들 간의 통신이나 접근이 가능합니다.

  4. 유일하지 않음: 하나의 그래프에 대해 최소 신장 트리는 유일하지 않을 수 있습니다. 여러 개의 최소 신장 트리가 존재할 수 있으며, 간선의 가중치가 동일한 경우에는 여러 개의 해가 가능합니다.

  5. 그리디 알고리즘: 대표적인 최소 신장 트리 알고리즘인 프림 알고리즘과 크루스칼 알고리즘은 모두 그리디 알고리즘의 한 종류입니다. 간선의 가중치를 기준으로 최적의 선택을 하여 최소 신장 트리를 구성합니다.

최소 신장 트리는 네트워크 연결, 도로 건설, 전력망 구축 등 다양한 분야에서 활용됩니다. 최소 비용으로 모든 노드를 연결하는 최적의 해결책을 찾을 수 있어, 경제적이고 효율적인 리소스 활용에 기여합니다.


예시

최소 신장 트리(Minimum Spanning Tree, MST)를 구하는 알고리즘에는 대표적으로 프림(Prim) 알고리즘과 크루스칼(Kruskal) 알고리즘이 있습니다. 이 알고리즘들은 다음과 같이 작동합니다:

프림 알고리즘

  • 시작 노드를 선택하고, 이를 기준으로 연결된 간선 중 가장 작은 가중치를 가진 간선을 선택합니다.
  • 선택된 간선에 연결된 노드들 중에서 방문하지 않은 노드를 선택하고, 해당 노드와 연결된 간선 중 가장 작은 가중치를 가진 간선을 선택합니다.
  • 위의 과정을 반복하여 모든 노드를 방문하고, 사이클을 생성하지 않으면서 최소 신장 트리를 구성합니다.

크루스칼 알고리즘

  • 주어진 그래프의 모든 간선을 가중치의 오름차순으로 정렬합니다.
  • 가중치가 가장 작은 간선부터 선택하여, 해당 간선을 추가했을 때 사이클을 생성하지 않으면 선택합니다.
  • 위의 과정을 반복하여 모든 노드를 방문하고, 사이클을 생성하지 않으면서 최소 신장 트리를 구성합니다.

프림 알고리즘은 시작 노드에서부터 출발하여 최소 신장 트리를 확장해 나가는 방식이며, 크루스칼 알고리즘은 간선들을 정렬하여 사이클을 생성하지 않는 간선을 선택하는 방식입니다. 두 알고리즘 모두 그리디 알고리즘의 한 종류로, 간선의 가중치를 기준으로 최적의 선택을 하여 최소 신장 트리를 구성합니다.

0개의 댓글