- 그래프 내의 모든 정점(노드)가 연결된 그래프
- 간선의 수가 가장 적은 최소 연결 부분 그래프 이다.
- 가중치 그래프의 신장 트리중 간선의 합이 가장 작은 신장 트리
이러한 최소 신장 트리를 찾는 알고리즘에는 프림(Prim) 알고리즘과 크루스칼(Kruskal) 알고리즘이 있다.
- 간선 데이터를 가중치에 따라 오름차순으로 정렬한다.
- 간선을 하나씩 확인하며 현재의 간선이 사이클을 발생시키는지 확인한다.
1) 사이클이 발생하는 경우 해당 간선은 제외한다.
2) 사이클이 발생하지 않는 경우 해당 간선을 신장트리에 포함시킨다.- 오름차순으로 2의 과정을 반복해 최소 신장 트리를 완성시킨다.
* E: 간선의 갯수
* Union-Find 알고리즘
: 여러 노드가 존재할 때, 두 개의 노드를 선택해서, 현재 두 노드가 서로 같은 그래프에 속하는지 판별하는 알고리즘
- 그래프에서 시작 정점을 선택한다.
- 선택한 정점과 연결된 간선 중 가장 낮은 가중치를 갖는 간선을 신장트리에 포함시킨다.
1) 단 사이클이 없는 간선만 포함한다.- 포함된 간선에 연결된 모든 정점에 대해 2번의 과정을 반복해 최소 신장 트리를 완성시킨다.
* E: 간선의 갯수
* V: 노드의 갯수
두 알고리즘 모두 최소 신장 트리를 구하는 알고리즘이지만 동작 방식이 다르기 때문에 상황에 따라 사용해야한다.
크루스칼의 시간복잡도는 O(ElogE)이고, 프림의 시간복잡도는 O(ElogV)이기 때문에
그래프 내의 간선이 적은 경우 크루스칼 알고리즘이 유리하고,
간선이 많은 경우 프림 알고리즘 이 유리하다.