스패닝 트리(Spanning Tree)는 그래프에서 모든 정점을 포함하면서 사이클이 존재하지 않는 부분 그래프이다. 그래프 내에서 가장 작은 비용을 가지는 간선을 선택하고, 이어진 정점을 그래프에서 제외하여 생성된다. 스패닝 트리는 그래프 내에서 여러 개를 가질 수 있으며, 최소 스패닝 트리(Minimum Spanning Tree)는 스패닝 트리 중에서 가장 작은 가중치의 합을 가지는 스패닝 트리를 의미한다.
스패닝 트리는 다음과 같은 분야에서 널리 사용된다.
그럼 최소 스패닝 트리 생성에 사용되는 알고리즘은 어떤 것이 있을까요?
다익스트라 알고리즘은 최단 경로 알고리즘 중 하나로, 시작 정점에서부터 각 정점까지의 최단 거리를 구하는 알고리즘이다. 다익스트라 알고리즘은 음의 가중치를 가지는 간선이 없는 그래프에서 사용할 수 있다.
다익스트라 알고리즘은 최소 스패닝 트리를 생성하는데에도 사용될 수 있다.
프림 알고리즘은 간선 수가 적은 밀집 그래프에서 유리하며, 다익스트라 알고리즘과 마찬가지로 최소 스패닝 트리 생성에 사용된다.
크루스칼 알고리즘은 간선 수가 많은 희소 그래프에서 유리하며, 최소 스패닝 트리 생성에 사용된다.