Minimum Spanning Tree

Clear·2023년 12월 7일
0

최소 비용 신장 트리

그래프의 신장 트리 중, 간선의 가중치의 총합이 가장 작은 신장 트리

Prim's Algorithm

현재 신장 트리에서 최소 가중치로 진출하는 미방문 정점 탐색

  • 구현
    • 시작 정점 하나로 구성되는 최초 부분 신장 트리를 만든다
    • 현재 단계 부분 신장 트리에서 최소 가중치로 방문 가능한 미방문 정점별도 변수 저장을 찾 아 부분 신장 트리에 추가정렬 또는 우선순위 큐 사용
    • 모든 정점이 부분 신장 트리에 포함될 떄 까지 위 과정 반복

  • 단순 구현시 O(V^2) , 우선 순위 큐 사용시 (O(V+E)log V)

Kruskal's Algorithm

간선 정렬 및 서로소 집합 구조 활용

  • 구현
    • 그래프의 간선들을 가중치의 오름 차순으로 정렬한다.
    • 정렬된 간선 리스트우선순위 큐에서 최소 가중치이며, 사이클을 형상하지 않는서로소 집합 구조 간선과 정점을 부분 신장 트리에 추가

  • O(E log E)

Boruvka's Alogrithm

그래프 축약 활용, 병렬 프로그래밍에서 효과적

  • 구현
    • 주어진 그래프의 모든 정점에 대해 정점별 최소 가중치 진출 간석을 찾아 연결하여 포레스트를 만든다. 그래프 축약
    • 포레스트를 구성하는 트리들 사이에 순환이 발생하지 않고, 최소 가중치로 연결되는 간선을 찾아 연결한다.
    • 포레스트가 하나의 트리로 연결될 때 까지 위 과정을 반복한다.

  • O(E log V)
profile
GameProgrammer

0개의 댓글