이곳은 개발을 위한 베타 사이트 입니다.
기여내역은 언제든 초기화될 수 있으며, 예기치 못한 오류가 발생할 수 있습니다.

최소 비용 신장 트리

덤프버전 :



1. 개요[편집]


Minimum Spanning Tree, MST

신장 트리는 그래프에서 모든 정점에 대한 최소한의 연결만을 남긴 그래프이다. 한 곳으로 도달하는 경우가 두 개 이상 존재하는 경우, 즉 사이클이 존재하는 경우에는 최소한의 연결이라 말할 수 없기 때문에, 모든 위치 하나에서 다른 곳으로 이동하는 경우는 단 한 가지로 결정되도록 항상 트리의 형태를 나타낸다. 최소 비용 신장 트리는 이러한 신장 트리들 중 간선의 가중치 합이 가장 작은 트리이다.


2. 알고리즘[편집]


최소 비용 신장 트리는 그리디 기법을 이용하여 최적의 해를 구할 수 있으며, 크루스칼 알고리즘프림 알고리즘, 솔린 알고리즘이 알려져 있다.

프림 알고리즘은 바이너리 힙을 이용하는 경우 [math(O(|E|+|V| log |V|))]의 시간 복잡도를 가지며, 크루스칼 알고리즘은 경로 최적화를 이용하지 않는 경우 [math(O([E| log |V|))], 경로 최적화를 이용하는 경우 [math(O([E| log^* |V|))][1]의 시간 복잡도를 가지기 때문에, 그래프의 간선 밀도를 고려하여 최적의 알고리즘을 선택하는 것이 필요하다.



2.1. 프림 알고리즘 (Prim's algorithm)[편집]


파일:상세 내용 아이콘.svg
  "display: none; display: 문단=inline"를
의 [[프림 알고리즘#s-"display: inline; display: 앵커=none@"
@앵커@@앵커_1@ 부분을
참고하십시오.



2.2. 크루스칼 알고리즘 (Kruskal's algorithm)[편집]


파일:상세 내용 아이콘.svg
  "display: none; display: 문단=inline"를
의 [[크루스칼 알고리즘#s-"display: inline; display: 앵커=none@"
@앵커@@앵커_1@ 부분을
참고하십시오.



3. 둘러보기[편집]





[1] [math(log^* n)]: [math(n)]이 1 아래로 될 때 까지의 log 수행 횟수. 예) [math(log log log log 1000 \le 1)]이기 때문에 [math(log^* 1000 = 4)]. 매우 느리게 증가하는 함수로 이해하면 된다.