43. boruvka's mst algorithm [15 2주차]

Posted by aliontory on January 15, 2024 · 28 mins read

43. Boruvka's MST Algorithm [15-2주차]

2024 1 14일 일요일

오후 5:49

<Boruvka's MST Algorithm>

O(mlogn) 시간이 걸림. 그러나 실제로는 Prim이나 Kruskal보다 느리다.

 

먼저, 각각의 노드에 대해 자신에게 붙어 있는 가장 작은 간선을 선택한다. 이 간선들은 무조건 MST에 포함되므로, MST에 넣는다.

증명

  • 노드 u에 연결된 가장 가중치가 작은 간선이 (u, v)라 하자. MST (u, v)가 들어가지 않는다고 가정하고, MST에서 u v를 잇는 경로를 p라 한다. 이때, MST에서 u와 연결된 p내의 간선을 빼고 간선(u, v)를 추가하면, 모든 노드가 연결된 상태가 유지되면서 가중치는 줄어든다. 이는 MST라는 가정에 모순이므로, MST에는 (u, v)가 들어가야만 한다.

 

한 번 해서는 간선이 중복으로 선택되는 경우도 있기에 MST가 만들어지지 않을 수 있다. 따라서 하나의 연결 요소를 노드 하나로 축소한 그래프를 만들어, 그 그래프에 대해 알고리즘을 반복한다. 전체가 하나의 노드로 축소될 때까지 반복한다.

 

최악의 경우에도 한 번에 노드 개수가 절반씩은 줄어드므로 최대 logn번 반복하게 된다. 따라서 총 O(mlogn) 시간이 걸린다.

 

 

<Randomized MST>

Boruvka 라운드를 3번 돌린다. C Boruvka에서 선택된 간선의 집합이라 하자.

G가 축소되어 G'이 되었다. G'에서 각각의 간선을 50%확률로 선택하여 G''을 만든다.

G''에 전체 알고리즘을 재귀적으로 수행하면 Minimun Spanning Forest가 형성된다. (MSF MST에서 간선이 몇 개 빠진 것). 이를 F라고 하자.

F-Heavy Edges G'에서 제거한다. 이를 G'''이라 하자.

G'''에 위의 알고리즘 전체를 재귀적으로 수행하여 MST C'을 찾는다.

답은 C U C'이다.

 

Heavy Edge

그래프 내에 어떤 트리가 존재하고, 노드 a, b를 연결하는 간선(a, b)가 그 트리에 포함되지 않는다. a b를 연결하는 트리 내의 경로의 간선들 중 가중치 최대값이 m일 때, (a, b)의 가중치가 m보다 크면 (a, b) Heavy Edge 라 한다.

(a b의 트리 내 경로를 찾는 데 LCA가 사용된다)

 

수행 시간 T(n, m)은 다음과 같이 계산된다.

마스터 정리에 의해, T(n, m) = O(n+m) 이다.

 

두 번째 재귀에서 간선 개수가 1/4배가 되는 이유는, 대부분의 간선이 Heavy Edge가 되어 제거되기 때문이다.

 

OneNote에서 작성되었습니다.