나는 컴공이다/개념 정리
신장 트리(Spanning Tree)
김짱짱
2021. 2. 8. 10:13
※ 신장 트리(Spanning Tree): 하나의 그래프가 있을 때 모든 노드를 포함하면서 사이클이 존재하지 않는 부분 그래프
최소 신장 트리: 신장 트리 중 가중치가 가장 작은 신장 트리
최소 신장 트리 찾는 알고리즘의 대표적인 예시) 크루스칼 알고리즘
※ 크루스칼 알고리즘(Kruskal Algorithm) - 그리디 알고리즘, 서로소 집합 개념 사용
① 간선 데이터를 가중치에 따라 오름차순으로 정렬
② 간선을 하나씩 확인하며 현재의 간선이 사이클을 발생시키는지 확인
⁎ 발생시키지 않는 경우 신장 트리에 포함
③ 모든 간선에 대하여 ①과 ② 과정을 반복적으로 수행
최종적으로 최소 신장 트리에 포함되는 간선의 개수 = N-1 (N은 노드의 개수)
• 최소 비용: 최소 신장 트리에 포함된 간선의 가중치 합
• 크루스칼 알고리즘의 시간복잡도: O(ElogE) (E는 간선의 개수)
- 크루스칼 알고리즘의 시간복잡도는 간선을 가중치에 따라 정렬하는 시간을 따라간다.
(정렬 외의 다른 과정은 정렬보다 시간 복잡도가 작으므로 무시)
출처| 이것이 취업을 위한 코딩테스트다 with 파이썬(나동빈 저)