MST와 ST, 어떤 방식으로 구현하나

ORCASUIT·2023년 10월 23일
0

MST (Minimum Spanning Tree)

MST는 그래프 내에서 모든 노드를 최소의 가중치로 연결하는 트리입니다. Kruskal 알고리즘과 Prim 알고리즘은 MST를 구하는 대표적인 방법입니다.

Kruskal 알고리즘

  1. 모든 간선을 가중치에 따라 정렬합니다.
  2. 가장 가중치가 작은 간선부터 선택하면서 트리를 만듭니다. 단, 사이클을 형성하는 간선은 제외합니다.
  3. 모든 노드가 연결될 때까지 반복합니다.

Prim 알고리즘

  1. 시작 노드를 선택하고, 이 노드를 MST에 포함시킵니다.
  2. 선택된 노드와 연결된 간선 중, MST에 포함되지 않은 노드와 연결된 가장 작은 간선을 선택합니다.
  3. 해당 노드를 MST에 포함시킵니다.
  4. 모든 노드가 MST에 포함될 때까지 2-3 단계를 반복합니다.

ST (Spanning Tree)

ST는 그래프의 모든 노드를 포함하면서 사이클이 없는 부분 그래프입니다. MST는 ST 중에서 가중치의 합이 최소인 트리입니다.

ST 구현 방법

  1. DFS (깊이 우선 탐색) 또는 BFS (너비 우선 탐색)을 사용하여 그래프를 탐색하면서 트리를 만듭니다.
  2. 탐색을 하면서 이미 방문한 노드는 건너뛰어 사이클을 피합니다.

비교

  • MST는 가중치를 최소화하는 것에 초점을 둔다면, 일반적인 ST는 그래프의 모든 노드를 단순히 연결만 합니다.
  • MST는 ST를 구하는 특별한 경우입니다. 즉, 모든 MST는 ST이지만, 모든 ST가 MST인 것은 아닙니다.

각 알고리즘은 문제의 요구사항에 따라 적절히 선택하면 됩니다. 예를 들어, 가중치를 고려해야 하는 네트워크 설계 문제에는 MST 알고리즘이, 단순히 모든 노드를 연결만 하면 되는 경우에는 일반적인 ST 알고리즘을 사용할 수 있습니다.

0개의 댓글