일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 마라마라빔
- programmers
- 그리디알고리즘
- 코드트리
- 알고리즘
- 동적계획법
- Planned
- 백준
- 실습
- 함밥
- 종합설계
- B대면노래방
- Kruskal
- 백트래킹
- 프로그래머스
- MyPlaylist
- DFS
- minimum spanning tree
- 최소스패닝트리
- 소프트웨어공학
- django
- Bellman-Ford
- BFS
- SQL
- 장고
- 모각코
- 데이터베이스
- DP
- 파이썬
- codetree
- Today
- Total
Leta Learns
Minimum Spanning Tree (최소 신장 트리) 본문
Spanning Tree (신장 트리)
: 그래프의 최소 연결 부분 그래프.
최소 연결 -> 간선의 수가 최소
n개의 정점을 가지는 그래프의 최소 간선의 수: n-1
n-1개의 간선으로 연결되어 있으면 필연적으로 트리 형태가 된다. => ST
즉, 그래프에서 일부 간선을 선택해서 만든 트리.
- Spanning Tree의 특징
하나의 그래프에는 여러 개의 신장 트리가 존재 가능.
ST는 트리의 특수 형태
=> 모든 정점들 연결
=> 사이클 포함 x
=> N개의 정점을 정확히 n-1개의 간선으로 연결
Minimum Spanning Tree (최소 신장 트리)
: Spanning Tree 중에서 사용된 간선들의 가중치 합이 최소인 트리
각 간선의 가중치가 상이할 때 단순히 간선 수를 가장 적게 사용한다고 해서 최소 비용이 얻어지는 것이 아님.
MST => 간선의 가중치를 고려하여 최소비용의 Spanning Tree를 선택하는 것
- Minimum Spanning Tree의 특징
- 간선의 가중치의 합이 최소
- N개의 정점, n-1개의 간선 (ST의 특징)
- 사이클 x (ST의 특징)
- Minimum Spanning Tree의 예시
도로건설, 전기회로, 통신, 배관
Prim 알고리즘
: 시작 정점에서부터 출발하여 신장 트리 집합을 단계적으로 확장하는 방법
- 정점 선택을 기반으로 하는 알고리즘
- 이전 단계에서 만들어진 신장 트리를 확장하는 방법
- Prim 과정
- In 시작 단계, MST 집합에는 시작 정점만 포함
- 1단계에서 만들어진 MST 집합에 인접한 정점들 중 최소 간선으로 연결된 정점을 선택 -> 트리 확장 (최소 가중치부터 선택)
- 위 단계를 트리가 n-1개의 간선을 가질 때까지 반복
2021.07.21 - [HUFS/Algorithm] - Prim Algorithm
Kruskal 알고리즘
: 그리디 방법을 사용하여 그래프의 모든 정점을 최소 비용으로 연결하는 최적 해답을 구하는 것
- 각 단계에서
사이클을 이루지 않는최소 비용 간선을 선택 - 간선 선택을 기반으로 하는 알고리즘
- 이전 단계에서 만들어진 신장 트리와 무관하게 무조건 최소 비용 간선 선택
- Kruskal 과정
- 그래프의 간선들을 가중치를 기준으로 오름차순 정렬
- 정렬된 간선 리스트에서 순서대로 사이클을 형성하지 않는 간선 선택 -> 최소 가중치 먼저 선택, 사이클 형성하는 간선은 제외
- 해당 간선을 현재의 MST 집합에 추가
2021.07.21 - [HUFS/Algorithm] - Kruskal Algorithm
Prim vs. Kruskal
두 알고리즘의 차이는
Prim : 우선순위 큐를 활용하여 임의의 시작점으로 부터 연결되는 가장 가중치가 낮은 간선부터 방문하는지
Kruskal : 간선의 리스트를 만들고 이를 정렬하여 가장 낮은 가중치의 간선부터 방문하는지
참고 : HUFS 알고리즘 강의자료
https://gmlwjd9405.github.io/2018/08/28/algorithm-mst.html
https://godls036.tistory.com/26
'Computer Science > Algorithm' 카테고리의 다른 글
Kruskal Algorithm (0) | 2021.07.21 |
---|---|
Prim Algorithm (0) | 2021.07.21 |
BFS Algorithm (Breadth-First-Search, 너비 우선 탐색) (0) | 2021.07.08 |
DFS Algorithm (Depth-First-Search, 깊이 우선 탐색) (0) | 2021.07.04 |
Dynamic Programming (동적계획법) (0) | 2021.07.01 |