🏛️ Data Structure

신장 트리 : Spanning Tree

정의

그래프 내의 모든 정점을 포함하는 트리 / “최소 연결 부분 그래프”

개념

  • 최소 연결 == 간선의 수가 가장 적다.
  • n개의 정점을 가지는 그래프의 최소 간선의 수는 (n-1)개이고, (n-1)개의 간선으로 연결되어 있으면 필연적으로 트리 형태가 되고 이것이 바로 Spanning Tree가 된다.
    • 즉, 그래프에서 일부 간선을 선택해서 만든 트리
notion image

특징

  • 무향 그래프
  • DFS, BFS을 이용하여 그래프에서 신장 트리를 찾을 수 있다.
    • 탐색 도중에 사용된 간선만 모으면 만들 수 있다.
  • 하나의 그래프에는 많은 신장 트리가 존재할 수 있다.
  • Spanning Tree는 트리의 특수한 형태이므로 모든 정점들이 연결되어 있어야 하고 사이클을 포함해서는 안된다.
  • 따라서 Spanning Tree는 그래프에 있는 n개의 정점정확히 (n-1)개의 간선으로 연결 한다.

최소 신장 트리 : MST, Minimum Spanning Tree

정의

무향 가중치 그래프에서 간선들의 가중치 합이 최소인 신장 트리

개념

  • 각 간선의 가중치가 동일하지 않을 때 단순히 가장 적은 간선을 사용한다고 해서 최소 비용이 얻어지는 것은 아니다.
  • MST는 간선에 가중치를 고려하여 최소 비용의 Spanning Tree를 선택하는 것을 말한다.
  • 즉, 네트워크(가중치를 간선에 할당한 그래프)에 있는 모든 정점들을 가장 적은 수의 간선과 비용으로 연결하는 것이다.

특징

  • 간선의 가중치의 합이 최소여야 한다.
  • n개의 정점을 가지는 그래프에 대해 반드시 (n-1)개의 간선만을 사용해야 한다.
  • 사이클이 포함되어서는 안된다.

구현

출처