반응형
1) 최소 신장트리의 이해
신장트리란?
- Spanning Tree, 또는 신장 트리 라고 불리움
- 원래의 그래프의 모든 노드가 연결되어 있으면서 트리의 속성을 만족하는 그래프
- 신장 트리의 조건
- 본래의 그래프의 모든 노드를 포함해야 함
- 모든 노드가 서로 연결
- 트리의 속성을 만족시킴 (사이클이 존재하지 않음)
최소 신장트리란?
- Minimum Spanning Tree, MST 라고 불리움
- 가능한 Spanning Tree 중에서, 간선의 가중치 합이 최소인 Spanning Tree를 지칭함
최소 신장트리 알고리즘
- 그래프에서 최소 신장 트리를 찾을 수 있는 알고리즘이 존재함
- 대표적인 최소 신장 트리 알고리즘
- Kruskal’s algorithm (크루스칼 알고리즘)
- Prim's algorithm (프림 알고리즘)
2) 크루스칼 알고리즘
- 모든 정점을 독립적인 집합으로 만든다.
- 모든 간선을 비용을 기준으로 정렬하고, 비용이 작은 간선부터 양 끝의 두 정점을 비교한다.
- 두 정점의 최상위 정점을 확인하고, 서로 다른 집합일 경우 두 정점을 연결한다. (최소 신장 트리는 사이클이 없으므로, 사이클이 생기지 않도록 하는 것임)
- 탐욕 알고리즘을 기초로 하고 있음
3) 프림 알고리즘
- 시작 정점을 선택한 후, 정점에 인접한 간선중 최소 간선으로 연결된 정점을 선택하고, 해당 정점에서 다시 최소 간선으로 연결된 정점을 선택하는 방식으로 최소 신장 트리를 확장해가는 방식
- 크루스칼 알고리즘과 프림 알고리즘 비교
- 둘다, 탐욕 알고리즘을 기초로 하고 있음 (당장 눈 앞의 최소 비용을 선택해서, 결과적으로 최적의 솔루션을 찾음)
- Kruskal's algorithm은 전체 간선중에서, 가장 가중치가 작은 간선부터 선택하면서 MST를 구함
- Prim's algorithm은 특정 정점에서 시작, 해당 정점에 연결된 가장 가중치가 작은 간선을 선택, 간선으로 연결된 정점들에 연결된 간선 중에서 가장 가중치가 작은 간선을 택하는 방식으로 MST를 구함
반응형
'Computer Science > Data Structure' 카테고리의 다른 글
[문제해결기법 04] 정렬 - 선택/버블/삽입/머지/퀵정렬 (0) | 2021.04.23 |
---|---|
[문제해결기법03] 동적 메모리 할당 (0) | 2021.04.23 |
[문제해결기법02] 뽑기 - 조합/순열 (0) | 2021.04.23 |
[문제해결기법01] 순환(재귀) recursion (0) | 2021.04.07 |
자료구조 4 탐색 (0) | 2020.12.10 |