728x90
신장 트리 : n개 정점 무방향 그래프에서 간선 n-1개 부분 그래프
최소 비용 신장 트리
- 그래프에서 모든 노드 연결 시 사용하는 엣지 가중치 합 최소로 하는 트리
- n개 정점 갖는 무방향 그래프에서 모든 노드를 연결한 신장 트리 구성할 때 간선 가중치 합 최소인 트리
- MST는 엣지 가중치 최소를 사이클 없고, 단절점 없이 만드는 게 목표다.
- 에지를 기준으로 하는 알고리즘
[최소 비용 신장 트리 조건]
정점 n개
간선 n-1개
사이클 X : 사이클 포함 시 가중치 합이 최소가 될 수 없으므로 뺀다.
단절점 없는 (연결 그래프)
→ 최소비용 신장트리를 구현할 알고리즘의 종류
1) 크루스칼 (Kruskal) 알고리즘
- 모든 간선 가중치 오름차순 정렬 후, 모든 정점이 연결될 때까지 계속해서 작은 가중치를 사이클 형성 안되도록 N-1개까지 잇는 방식이다.
- 오름차순 정렬된 간선들 중에서 매번 차례대로 가장 작은 가중치 간선을 순서대로 연결한다.
동작 원리
- 모든 간선들의 가중치를 오름차 순으로 정렬
- 가중치가 가장 작은 간선을 선택
- 위에서 선택한 간선이 연결하려는 2개의 노드가 서로 연결되지 않은 상태라면, 2개의 노드를 서로 연결한다.
- 이 과정을 반복
2) 프림 알고리즘
- 시작 정점을 기준으로 가장 작은 간선과 연결된 정점을 선택하며 신장트리를 단계적 확장시키는 알고리즘이다.
- 정점 선택을 기반으로 하는 알고리즘
- 임의의 정점을 시작점으로 잡고, 아직 연결되지 않은 정점들에 대해 최소 가중치 갖는 정점을 연결하며 단계적으로 트리를 확장해간다
동작 원리
- 임의의 간선을 선택
- 선택한 간선의 정점으로부터 가장 낮은 가중치를 갖는 정점을 선택
- 모든 정점이 선택될 때까지 반복
→ 그래프 내의 간선 많은 경우는 프림이, 간선 적은 경우 크루스칼이 유리하다고 한다.
728x90
'코딩 테스트 [준비] > [개념] 알고리즘 추가 정리 _ 2024' 카테고리의 다른 글
트리(Tree) | 세그먼트 트리 Segment Tree (알고리즘) 정리 (60) | 2024.02.14 |
---|---|
트리(Tree) | 트리, 트라이, 이진트리 비교 (72) | 2024.02.09 |
최단 경로| 다익스트라, 벨만포드, 플로이드 비교 (73) | 2024.01.13 |
DP 알고리즘 | LCS (최장 길이 공통 부분 수열) (74) | 2024.01.11 |
이분 탐색 | Parametric Search 에 대한 이론 비교 (50) | 2024.01.07 |