cost가 작은 최소 연결 트리
최소 연결 = 간선의 수가 가장 적다
DFS, BFS을 이용하여 신장 트리를 찾을 수 있다.
탐색 도중에 사용된 간선만 모으면 만들 수 있다.
n개의 정점을 연결함으로 (n-1)개 간선으로 연결함
Spanning Tree 사용 예시?
회사 내 모든 전화기를 가장 적은 수의 케이블을 이용하여 연결하는 경우
최소의 선으로 링크를 연결하는 경우
MST 특징
1.간선 Cost가 최소
2. (N-1)개 간선
3. 간선이 포함되면 안됨
쿠르스칼 알고리즘 : MST 구현방법
1. 간선 가중치를 오름차순 정렬
2. 부모를 본인 자신으로 하는 경우로 parent 배열 초기화
3. 싸이클이 존재하지 않는 경우 union find 알고리즘 적용(싸이클이 생기지 않는 경우)
이를 순서대로 sum하여 cost가 가장 작은 값을 만든다
----------------------------------------------------------------------------------------------------------------------------
상세 내용
https://gmlwjd9405.github.io/2018/08/28/algorithm-mst.html
[알고리즘] 최소 신장 트리(MST, Minimum Spanning Tree)란 - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io
관련 문제
https://www.acmicpc.net/problem/1197
1197번: 최소 스패닝 트리
첫째 줄에 정점의 개수 V(1 ≤ V ≤ 10,000)와 간선의 개수 E(1 ≤ E ≤ 100,000)가 주어진다. 다음 E개의 줄에는 각 간선에 대한 정보를 나타내는 세 정수 A, B, C가 주어진다. 이는 A번 정점과 B번 정점이 가중치 C인 간선으로 연결되어 있다는 의미이다. C는 음수일 수도 있으며, 절댓값이 1,000,000을 넘지 않는다. 최소 스패닝 트리의 가중치가 -2147483648보다 크거나 같고, 2147483647보다 작거나 같은 데
www.acmicpc.net
문제풀이(답안)
https://github.com/huisoo/algo_test/blob/master/Min_spanning_tree_bak1197.java
huisoo/algo_test
Contribute to huisoo/algo_test development by creating an account on GitHub.
github.com
'알고리즘' 카테고리의 다른 글
벨만-포드 알고리즘 (0) | 2019.09.29 |
---|
댓글