Algorithm/이론

[Algo] Minimum Spanning Tree (MST)

SweetDev 2022. 12. 27. 20:28

Spanning Tree

input: 아무 그래프
output: 그래프 내의 모든 정점을 포함하는 트리

* 트리이므로 사이클이 있어서는 안된다.

 

Minimum Spanning Tree

input: 방향없는 weighted edge 그래프
output: cycle 없는 edge cost가 최소인 spanning tree
(같은 cost인 그래프가 여러개 나올 수도 있다.)

 

 

 

 

Kruskal's Algorithm

input: 방향없는 weighted edge 그래프
output: cycle 없는 edge cost가 최소인 spanning tree

0) weight순으로 edge를 sorting한다

1) weight이 가장 작은 edge를 선택한다, cycle을 만들지 않는다면 추가

 

시간복잡도

O(NlogN) : sorting하느라 사용되는 시간

 

Prim's Algorithm

[Kruskal과 다른점]
처음 노드를 하나 뽑는다. 기존에 봤던 노드 근처에 있는 애들에서만 뽑을 수 있다.

0) 노드를 하나 뽑는다

1) 그 노드에 이어진 weight이 가장 작은 edge를 선택한다, cycle을 만들지 않는다면 추가