최소비용신장트리(minimum spanning tree) – 2

Reading time ~1 minute

인프런의 영리한 프로그래밍을 위한 알고리즘 강좌를 보고 작성한 문서입니다.


Kruskal의 알고리즘

  • 에지들을 가중치의 오름차순으로 정렬한다.

  • 에지들을 그 순서대로 하나씩 선택해간다. 단, 이미 선택된 에지들과 사이클(cycle)을 형성하면 선택하지 않는다.

  • n-1개의 에지가 선택되면 종료한다.


kruskal1

kruskal2

kruskal3


왜 MST가 찾아지는가?

  • Kruskal의 알고리즘의 임의의 한 단계를 생각해보자.

  • A를 현재까지 알고리즘이 선택한 에지의 집합이라고 하고, A를 포함하는 MST가 존재한다고 가정하자.

    kruskal4


사이클 검사

  • 초기 상태 : 선택된 에지 없음

  • 각각의 연결요소를 하나의 집합으로 표현

    kruskal5

    kruskal6

    kruskal7

    (가중치 순으로 반복)

    kruskal8

    kruskal9

    (반복)

    kruskal10


Kruskal의 알고리즘

kruskal11