MST(Minimum Spanning Tree)

μ΅œμ†Œμ‹ μž₯트리(MST)λž€ κ°€μ€‘κ·Έλž˜ν”„μ˜ 총 κ°„μ„  λ¬΄κ²Œκ°€ μ΅œμ†ŒμΈ μ‹ μž₯트리λ₯Ό λ§ν•œλ‹€.

  • μ‹ μž₯트리 : (자유)트리인 μ‹ μž₯ λΆ€κ·Έλž˜ν”„

  • μ‹ μž₯ λΆ€κ·Έλž˜ν”„ : κ·Έλž˜ν”„ G의 λͺ¨λ“  정점듀을 ν¬ν•¨ν•˜λŠ” λΆ€κ·Έλž˜ν”„

μ΅œμ†Œμ‹ μž₯트리 속성

싸이클 속성

  • T : κ°€μ€‘κ·Έλž˜ν”„ G의 μ΅œμ†Œμ‹ μž₯트리

  • e : T에 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” G의 κ°„μ„ 

  • C : eλ₯Ό T에 μΆ”κ°€ν•˜μ—¬ ν˜•μ„±λœ 싸이클

C의 λͺ¨λ“  κ°„μ„  f에 λŒ€ν•΄, weight(f) <= weight(e)κ°€ μ„±λ¦½ν•œλ‹€.

λΆ„ν•  속성

  • G의 정점듀을 두 개의 λΆ€λΆ„μ§‘ν•© U와 V둜 λΆ„ν• 

  • e : 뢄할을 κ°€λ‘œμ§€λ₯΄λŠ” μ΅œμ†Œ 무게의 κ°„μ„ 

κ°„μ„  eλ₯Ό ν¬ν•¨ν•˜λŠ” G의 μ΅œμ†Œμ‹ μž₯νŠΈλ¦¬κ°€ λ°˜λ“œμ‹œ μ‘΄μž¬ν•œλ‹€.

μ΅œμ†Œμ‹ μž₯트리 μ•Œκ³ λ¦¬μ¦˜

Prim-Jarnik μ•Œκ³ λ¦¬μ¦˜

  • νƒμš• μ•Œκ³ λ¦¬μ¦˜

  • λ‹¨μˆœ μ—°κ²° 무방ν–₯ κ°€μ€‘κ·Έλž˜ν”„

  • μž„μ˜μ˜ 정점 sλ₯Ό νƒν•˜μ—¬, sλ‘œλΆ€ν„° μ‹œμž‘ν•˜μ—¬ 정점듀을 배낭에 λ„£μ–΄κ°€λ©° λ°°λ‚­ μ•ˆμ—μ„œ μ΅œμ†Œμ‹ μž₯트리인 Tλ₯Ό ν‚€μ›Œλ‚˜κ°„λ‹€. => sλŠ” T의 λ£¨νŠΈκ°€ λœλ‹€.

  • 각 정점 v에 라벨 d(v)λ₯Ό μ •μ˜ => d(v)λŠ” λ°°λ‚­ μ•ˆμ˜ 정점과 λ°°λ‚­ λ°–μ˜ 정점을 μ—°κ²°ν•˜λŠ” κ°„μ„ μ˜ 무게

  • λ°°λ‚­ λ°–μ˜ 정점듀을 μš°μ„ μˆœμœ„ 큐에 μ €μž₯

    • ν‚€ : 거리

    • μ›μ†Œ : 정점

  • Q.replaceKey(e,k) : μ›μ†Œ e의 ν‚€λ₯Ό k둜 λ³€κ²½ν•˜κ³  Q λ‚΄μ˜ e의 μœ„μΉ˜λ₯Ό κ°±μ‹ ν•œλ‹€.

  • μ‹œκ°„λ³΅μž‘λ„ : O(mlogn)O(mlogn)

    • μš°μ„ μˆœμœ„ 큐λ₯Όκ΅¬ binary heap으둜 κ΅¬ν˜„ μ‹œ, O(mlogm)O(mlogm)

Prim-Jarnik μ•Œκ³ λ¦¬μ¦˜ μˆ˜ν–‰ μ˜ˆμ‹œ

Kruskal μ•Œκ³ λ¦¬μ¦˜

  • νƒμš• μ•Œκ³ λ¦¬μ¦˜

  • μ•Œκ³ λ¦¬μ¦˜μ„ μœ„ν•œ 초기 μž‘μ—…

    • λͺ¨λ“  정점을 각각의 λ…μžμ μΈ 배낭에 λ„£λŠ”λ‹€.

    • λ°°λ‚­λ°–μ˜ 간선듀을 μš°μ„ μˆœμœ„ 큐에 μ €μž₯

      • ν‚€ : 무게

      • μ›μ†Œ : κ°„μ„ 

  • 반볡의 각 νšŒμ „μ—μ„œ

    • 두 개의 λ‹€λ₯Έ λ°°λ‚­ 속에 양끝점을 κ°€μ§„ μ΅œμ†Œ 무게의 간선을 μ΅œμ†Œμ‹ μž₯트리 T에 ν¬ν•¨ν•˜κ³  두 배낭을 ν•˜λ‚˜λ‘œ ν•©μΉœλ‹€.

  • 반볡이 μ™„λ£Œλ˜λ©΄ μ΅œμ†Œμ‹ μž₯트리 Tλ₯Ό ν¬ν•¨ν•˜λŠ” ν•œ 개의 λ°°λ‚­λ§Œ λ‚¨λŠ”λ‹€.

  • 반볡의 νšŒμ „λ§ˆλ‹€ κ°„μ„  (u, v)λ₯Ό μ΅œμ†Œμ‹ μž₯트리 T에 μΆ”κ°€

  • μ‹œκ°„λ³΅μž‘λ„ : O(mlogn)O(mlogn)

Kruskal μ•Œκ³ λ¦¬μ¦˜ μˆ˜ν–‰ μ˜ˆμ‹œ

Last updated