μ μ₯ νΈλ¦¬ (Spanning Tree)
무방ν₯ κ·Έλνμ μ΅μ μ°κ²° λΆλΆ κ·Έλνλ₯Ό λ§νλ€. μ¦, Nκ°μ μ μ μ κ°μ§λ κ·Έλν μ€ λͺ¨λ μ μ μ ν¬ν¨νλ©΄μ μ΅μ κ°μ μ μμΈ N-1κ°μ κ°μ μΌλ‘ μ°κ²°λ λΆλΆ κ·Έλνλ₯Ό λ»νλ€. νΉμ κ·Έλνμμ μ΅μ κ°μ μμΈ N-1κ°μ κ°μ μ κ°μ§κ³ μλ κ·Έλνλ νΈλ¦¬ ννλ₯Ό μ΄λ£° μ λ°μ μμ΄ μ μ₯ "νΈλ¦¬"λΌκ³ νλ€.
πΉμ μ μ: N
πΉκ°μ μ: N-1
πΉμ¦, κ·Έλν λ΄ λͺ¨λ μ μ μ ν¬ν¨νλ νΈλ¦¬ (μ¬μ΄ν΄ μ‘΄μ¬ X)

μμ κ·Έλ¦Όκ³Ό κ°μ΄ νλμ κ·Έλνμμ μ μ₯ νΈλ¦¬λ μ¬λ¬κ°κ° μ‘΄μ¬ν μ μλ€. μ΄λ νλμ κ·Έλνμμ μμ±λ μ μλ μ μ₯ νΈλ¦¬ μ€ κ°μ€μΉμ ν©μ΄ κ°μ₯ μμ νΈλ¦¬λ₯Ό μ΅μ μ μ₯ νΈλ¦¬λΌκ³ νλ€. MSTλ₯Ό ꡬν μ μλ μκ³ λ¦¬μ¦μΌλ‘ ν¬λ£¨μ€μΉΌ μκ³ λ¦¬μ¦κ³Ό νλ¦Ό μκ³ λ¦¬μ¦μ΄ μλ€.
π‘ μ΅μ μ μ₯ νΈλ¦¬ (MST: Minimum Spanning Tree)
GRANT λ°μ΄ν°λ² μ΄μ€ μ¬μ©μμκ² κΆνμ λΆμ¬
REVOKE λ°μ΄ν°λ² μ΄μ€ μ¬μ©μμκ² κΆνμ μ·¨μ
ν¬λ£¨μ€μΉΌ μκ³ λ¦¬μ¦
그리λν λ°©λ²μ μ΄μ©ν΄ κ·Έλνμ λͺ¨λ μ μ μ μ΅μ λΉμ©μΌλ‘ μ°κ²°νλ©° μ΅μ μ ν΄λ΅μ λμΆνλ μκ³ λ¦¬μ¦μ΄λ€. νμ§λ§ 무μμ μ΅μ κ°μ λ§ μ ννλ€λ³΄λ©΄ μ¬μ΄ν΄μ΄ λ°μνλ©° μ΅μ μ μ₯ νΈλ¦¬μ νΉμ§μ 무μν΄λ²λ¦΄ μ μκΈ° λλ¬Έμ μ¬μ΄ν΄μ νμ±νμ§ μλ μ΅μ λΉμ©μ κ°μ μ μ νν΄μΌ νλ€.
1. κ·Έλνμ κ°μ λ€μ μ€λ¦μ°¨μμΌλ‘ μ λ ¬
2. μ λ ¬λ κ°μ λ€ νμνλ©° MST μ§ν©μ ν¬ν¨ (μ¬μ΄ν΄μ νμ±νμ§ μλ, μ΅μ λΉμ©μ κ°μ μ ν)
- μ νν κ°μ μ΄ μ¬μ΄ν΄ νμ± β νΈλ¦¬ μ§ν©μ ν¬ν¨ X
- μ νν κ°μ μ΄ μ¬μ΄ν΄ νμ± X β νΈλ¦¬ μ§ν©μ ν¬ν¨
3. 2λ² κ³Όμ μ N-1λ² λ°λ³΅ (λͺ¨λ μ μ μ μ°κ²°ν λκΉμ§)
1. κ°μ μ€λ¦μ°¨μ μ λ ¬

μμ κ°μ΄ κ·Έλνκ° μμ λ, κ°μ μ κ°μ€μΉλ₯Ό μ€λ¦μ°¨μμΌλ‘ μ λ ¬νλ€. μ¬κΈ°μ κ°μ (4,5)λ μ μ 4μ μ μ 5λ₯Ό μλ κ°μ μ΄λΌλ μλ―Έμ΄λ€.
2. μ¬μ΄ν΄μ νμ±νμ§ μλ μ΅μ λΉμ© κ°μ μ ν

κ°μ€μΉκ° μμ μμλΆν° μ λ ¬λμ΄ μλ κ°μ 리μ€νΈμμ 그리λνκ² κ°μ₯ μμ κ°μ μ MSTμ ν¬ν¨μν¨λ€. νμμ MSTμ ν¬ν¨μν¨ κ°μ μ νλμμΌλ‘ νμνλ€.

λ€μ κ°μ μ μ΄νΌκ³ μ¬μ΄ν΄μ΄ λ°μνλμ§ νμΈνλ€. κ°μ (1,5)λ₯Ό ν¬ν¨μμΌλ μ¬μ΄ν΄μ΄ λ°μνμ§ μμΌλ―λ‘ MSTμ ν¬ν¨μν¨λ€.

κ°μ (3,4) μμ ν¬ν¨μμΌλ μ¬μ΄ν΄μ΄ λ°μνμ§ μμΌλ―λ‘ ν¬ν¨μν¨λ€.

κ°μ (1, 3)μ ν¬ν¨μν€λ €κ³ νλ μ¬μ΄ν΄μ΄ λ°μνλ―λ‘ κ°μ (1,3)μ MSTμ ν¬ν¨μν€μ§ μλλ€.

κ°μ (2,3) κΉμ§ ν¬ν¨νκ³ λλ κ°μ 4κ°κ° ν¬ν¨λμκ³ , μ μ μ΄ 5κ°μΈ κ·Έλνμμ μ΅μ κ°μ μ μλ 4κ°μ΄λ―λ‘ νμμ μ’ λ£νλ€. μ΄λ‘μ¨ κ°μ€μΉμ ν©μ΄ 14μΈ μ΅μ μ μ₯ νΈλ¦¬κ° ꡬν΄μ‘λ€.
μ¬μ΄ν΄ μμ± μ¬λΆ νμΈ
ν¬λ£¨μ€μΉΌ μκ³ λ¦¬μ¦ μ체λ μ¬μ΄ν΄ μ‘΄μ¬ μ¬λΆλ₯Ό νμΈνλ 쑰건 νλμ 그리λν λ°©μμΌλ‘ λΉμ©μ μ΅μννλ κ²μΌλ‘ κ°λ¨ν μ΄ν΄ν μ μλ€. 그리λνκ² μμ λΉμ©λΆν° νμνλ λ°©λ²μ μ λ ¬μ ν΅ν΄ ꡬνν μ μλ€. κ·Έλ λ€λ©΄ μ¬μ΄ν΄μ΄ μμ±λλμ§ νμΈνλ κ²μ μ΄λ»κ² ν κΉ? μλ‘μ μ§ν©μ νννλ λ°©λ²μΈ Union-Find μκ³ λ¦¬μ¦μ ν΅ν΄ μ¬μ΄ν΄μ΄ μμ±λλμ§ νλ¨ν μ μλ€.
// union-find ν¬μ€ν λ§ν¬
Union-Find μκ³ λ¦¬μ¦μ ν΅ν΄ μΆκ°νκ³ μ νλ κ°μ μ μ λ μ μ μ΄ κ°μ μ§ν©μ μν΄ μλμ§λ₯Ό κ²μ¬νλ€.
πΉλ μ μ μ΄ κ°μ μ§ν©μ μν¨ β μ¬μ΄ν΄ μμ±
πΉλ μ μ μ΄ κ°κ° λ€λ₯Έ μ§ν©μ μν¨ β μ¬μ΄ν΄ μμ± X
πν¬λ£¨μ€μΉΌ μκ³ λ¦¬μ¦ μΆμ² λ¬Έμ
π λ°±μ€ 1197 μ΅μ μ€ν¨λ νΈλ¦¬
μ μ₯ νΈλ¦¬ (Spanning Tree)
무방ν₯ κ·Έλνμ μ΅μ μ°κ²° λΆλΆ κ·Έλνλ₯Ό λ§νλ€. μ¦, Nκ°μ μ μ μ κ°μ§λ κ·Έλν μ€ λͺ¨λ μ μ μ ν¬ν¨νλ©΄μ μ΅μ κ°μ μ μμΈ N-1κ°μ κ°μ μΌλ‘ μ°κ²°λ λΆλΆ κ·Έλνλ₯Ό λ»νλ€. νΉμ κ·Έλνμμ μ΅μ κ°μ μμΈ N-1κ°μ κ°μ μ κ°μ§κ³ μλ κ·Έλνλ νΈλ¦¬ ννλ₯Ό μ΄λ£° μ λ°μ μμ΄ μ μ₯ "νΈλ¦¬"λΌκ³ νλ€.
πΉμ μ μ: N
πΉκ°μ μ: N-1
πΉμ¦, κ·Έλν λ΄ λͺ¨λ μ μ μ ν¬ν¨νλ νΈλ¦¬ (μ¬μ΄ν΄ μ‘΄μ¬ X)

μμ κ·Έλ¦Όκ³Ό κ°μ΄ νλμ κ·Έλνμμ μ μ₯ νΈλ¦¬λ μ¬λ¬κ°κ° μ‘΄μ¬ν μ μλ€. μ΄λ νλμ κ·Έλνμμ μμ±λ μ μλ μ μ₯ νΈλ¦¬ μ€ κ°μ€μΉμ ν©μ΄ κ°μ₯ μμ νΈλ¦¬λ₯Ό μ΅μ μ μ₯ νΈλ¦¬λΌκ³ νλ€. MSTλ₯Ό ꡬν μ μλ μκ³ λ¦¬μ¦μΌλ‘ ν¬λ£¨μ€μΉΌ μκ³ λ¦¬μ¦κ³Ό νλ¦Ό μκ³ λ¦¬μ¦μ΄ μλ€.
π‘ μ΅μ μ μ₯ νΈλ¦¬ (MST: Minimum Spanning Tree)
GRANT λ°μ΄ν°λ² μ΄μ€ μ¬μ©μμκ² κΆνμ λΆμ¬
REVOKE λ°μ΄ν°λ² μ΄μ€ μ¬μ©μμκ² κΆνμ μ·¨μ
ν¬λ£¨μ€μΉΌ μκ³ λ¦¬μ¦
그리λν λ°©λ²μ μ΄μ©ν΄ κ·Έλνμ λͺ¨λ μ μ μ μ΅μ λΉμ©μΌλ‘ μ°κ²°νλ©° μ΅μ μ ν΄λ΅μ λμΆνλ μκ³ λ¦¬μ¦μ΄λ€. νμ§λ§ 무μμ μ΅μ κ°μ λ§ μ ννλ€λ³΄λ©΄ μ¬μ΄ν΄μ΄ λ°μνλ©° μ΅μ μ μ₯ νΈλ¦¬μ νΉμ§μ 무μν΄λ²λ¦΄ μ μκΈ° λλ¬Έμ μ¬μ΄ν΄μ νμ±νμ§ μλ μ΅μ λΉμ©μ κ°μ μ μ νν΄μΌ νλ€.
1. κ·Έλνμ κ°μ λ€μ μ€λ¦μ°¨μμΌλ‘ μ λ ¬
2. μ λ ¬λ κ°μ λ€ νμνλ©° MST μ§ν©μ ν¬ν¨ (μ¬μ΄ν΄μ νμ±νμ§ μλ, μ΅μ λΉμ©μ κ°μ μ ν)
- μ νν κ°μ μ΄ μ¬μ΄ν΄ νμ± β νΈλ¦¬ μ§ν©μ ν¬ν¨ X
- μ νν κ°μ μ΄ μ¬μ΄ν΄ νμ± X β νΈλ¦¬ μ§ν©μ ν¬ν¨
3. 2λ² κ³Όμ μ N-1λ² λ°λ³΅ (λͺ¨λ μ μ μ μ°κ²°ν λκΉμ§)
1. κ°μ μ€λ¦μ°¨μ μ λ ¬

μμ κ°μ΄ κ·Έλνκ° μμ λ, κ°μ μ κ°μ€μΉλ₯Ό μ€λ¦μ°¨μμΌλ‘ μ λ ¬νλ€. μ¬κΈ°μ κ°μ (4,5)λ μ μ 4μ μ μ 5λ₯Ό μλ κ°μ μ΄λΌλ μλ―Έμ΄λ€.
2. μ¬μ΄ν΄μ νμ±νμ§ μλ μ΅μ λΉμ© κ°μ μ ν

κ°μ€μΉκ° μμ μμλΆν° μ λ ¬λμ΄ μλ κ°μ 리μ€νΈμμ 그리λνκ² κ°μ₯ μμ κ°μ μ MSTμ ν¬ν¨μν¨λ€. νμμ MSTμ ν¬ν¨μν¨ κ°μ μ νλμμΌλ‘ νμνλ€.

λ€μ κ°μ μ μ΄νΌκ³ μ¬μ΄ν΄μ΄ λ°μνλμ§ νμΈνλ€. κ°μ (1,5)λ₯Ό ν¬ν¨μμΌλ μ¬μ΄ν΄μ΄ λ°μνμ§ μμΌλ―λ‘ MSTμ ν¬ν¨μν¨λ€.

κ°μ (3,4) μμ ν¬ν¨μμΌλ μ¬μ΄ν΄μ΄ λ°μνμ§ μμΌλ―λ‘ ν¬ν¨μν¨λ€.

κ°μ (1, 3)μ ν¬ν¨μν€λ €κ³ νλ μ¬μ΄ν΄μ΄ λ°μνλ―λ‘ κ°μ (1,3)μ MSTμ ν¬ν¨μν€μ§ μλλ€.

κ°μ (2,3) κΉμ§ ν¬ν¨νκ³ λλ κ°μ 4κ°κ° ν¬ν¨λμκ³ , μ μ μ΄ 5κ°μΈ κ·Έλνμμ μ΅μ κ°μ μ μλ 4κ°μ΄λ―λ‘ νμμ μ’ λ£νλ€. μ΄λ‘μ¨ κ°μ€μΉμ ν©μ΄ 14μΈ μ΅μ μ μ₯ νΈλ¦¬κ° ꡬν΄μ‘λ€.
μ¬μ΄ν΄ μμ± μ¬λΆ νμΈ
ν¬λ£¨μ€μΉΌ μκ³ λ¦¬μ¦ μ체λ μ¬μ΄ν΄ μ‘΄μ¬ μ¬λΆλ₯Ό νμΈνλ 쑰건 νλμ 그리λν λ°©μμΌλ‘ λΉμ©μ μ΅μννλ κ²μΌλ‘ κ°λ¨ν μ΄ν΄ν μ μλ€. 그리λνκ² μμ λΉμ©λΆν° νμνλ λ°©λ²μ μ λ ¬μ ν΅ν΄ ꡬνν μ μλ€. κ·Έλ λ€λ©΄ μ¬μ΄ν΄μ΄ μμ±λλμ§ νμΈνλ κ²μ μ΄λ»κ² ν κΉ? μλ‘μ μ§ν©μ νννλ λ°©λ²μΈ Union-Find μκ³ λ¦¬μ¦μ ν΅ν΄ μ¬μ΄ν΄μ΄ μμ±λλμ§ νλ¨ν μ μλ€.
// union-find ν¬μ€ν λ§ν¬
Union-Find μκ³ λ¦¬μ¦μ ν΅ν΄ μΆκ°νκ³ μ νλ κ°μ μ μ λ μ μ μ΄ κ°μ μ§ν©μ μν΄ μλμ§λ₯Ό κ²μ¬νλ€.
πΉλ μ μ μ΄ κ°μ μ§ν©μ μν¨ β μ¬μ΄ν΄ μμ±
πΉλ μ μ μ΄ κ°κ° λ€λ₯Έ μ§ν©μ μν¨ β μ¬μ΄ν΄ μμ± X
πν¬λ£¨μ€μΉΌ μκ³ λ¦¬μ¦ μΆμ² λ¬Έμ
π λ°±μ€ 1197 μ΅μ μ€ν¨λ νΈλ¦¬