λ€μ΅μ€νΈλΌ μκ³ λ¦¬μ¦μ μ°μ μμνμ κ°μ λ€μ λ£κ³ λΉΌλ κ³Όμ μΌλ‘ μ΄λ£¨μ΄μ Έ μλ€. λ°λΌμ κ°κ°μ ν΄λΉνλ κ³Όμ μ λλ μκ°λ³΅μ‘λλ₯Ό λν΄μ£Όλ λ°©μμΌλ‘ ꡬν΄λ³Ό μ μλ€.
- PriorityQueue add κ³Όμ
- μ΅μ
μ κ²½μ° λͺ¨λ κ°μ λ€μ pqμ λ£μ΄μΌ νλ κ²½μ°κ° μκΈ°κΈ° λλ¬Έμ
$ElogE$ μ μκ°μ΄ κ±Έλ¦°λ€. -
$E < V^2$ μΈ ν¬μ κ·Έλνμ κ²½μ° λ€μκ³Ό κ°μ΄ μκ°λ³΅μ‘λλ₯Ό λ°κΎΈμ΄μ μΈ μ μλ€.
- λ°λΌμ μ°μ μμνμ κ°μ μ λ£λ μκ°μ (μ νν λ§νλ©΄ ν¬μ κ·Έλνμ κ²½μ°)
$O(ElogV)$ λΌκ³ ν μ μλ€.
- PriorityQueue poll κ³Όμ
- PriorityQueueμμ νλ² κΊΌλ΄μ§μΌλ‘μ¨ λ°©λ¬Έμ΄ λ μ μ μ μ΅μκ°μ΄ ꡬν΄μ‘λ€κ³ 보μ₯ν μ μμΌλ―λ‘ μ΄ν PriorityQueueμ ν΄λΉ μ μ μ΄ λ€μ΄κ°μ§ μλλ€.
- λ°λΌμ μ°μ μμνμμ κ°μ μ λΉΌλ νμλ μ μ μ κ°―μμ κ·Όμ¬νκ² λλ€.
- κ·Έλ λ€λ©΄ μκ° λ³΅μ‘λλ
$O(VlogE)$ λΌκ³ μΈ μ μλ€. - ν¬μκ·Έλνμ κ²½μ° 1λ² μμμ κ³Όμ μ λ°λ³΅ν΄
$O(VlogV)$ λΌκ³ μΈ μ μλ€.
- κ²°λ‘
- μμ ꡬν΄μ§ addμ poll κ³Όμ μ μκ°λ³΅μ‘λλ₯Ό λν΄λ³Ό λ λ€μ΅μ€νΈλΌ μκ³ λ¦¬μ¦μ μκ° λ³΅μ‘λλ
$O( (V+E)logV )$
λΌκ³ ν μ μλ€.
π λ€μ΅μ€νΈλΌ μκ³ λ¦¬μ¦μ μκ°λ³΅μ‘λλ₯Ό ꡬν λ μ ν¬μκ·Έλνμ κ²½μ°λ‘ ꡬν κΉ?
ν¬μκ·Έλνλ
λ€μ΅μ€νΈλΌ μκ³ λ¦¬μ¦μμλ νμ¬ κ° μ μλ μ μ μ€ μ΅μ λΉμ©μ κ°μ§λ μ μ μ μ°Ύμ λ°©λ¬Έμ νκ³ κ·Έ κ³³μμ κ° μ μλ μ μ λ€μ μ΅μ λΉμ©μ κ°±μ νλ€. μ΄ λ λ°©λ¬Έλ μ μ μ μ΅μ λΉμ©μ΄ ꡬν΄μ‘λ€λ κ²μ 보μ₯νκΈ° λλ¬Έμ μ΄ν λ€μ λ°©λ¬Ένμ§ μκ³ μ΅μκ° λν κ°±μ λμ§ μλλ€. νμ§λ§ μμμΈ κ°μ μ΄ μλ€λ©΄ λ°©λ¬Έμ΄ λμμ΄λ μΆν μμκ°μ μΌλ‘ μΈν΄ λ μ μ λΉμ©μ΄ λμ¬ μ μμ§λ§ λ°©λ¬ΈλμκΈ° λλ¬Έμ κ°±μ λμ§ λͺ»νλ―λ‘ μ΅μ μ ν΄λ₯Ό ꡬν μ μλ€.
μμ κ°μ μμμ κ·Έλνμμ A μ μ μμ μΆλ°ν κ²½μ° λ¨Όμ Cκ° λ°©λ¬Έλκ² λκ³ λΉμ©μ μ΅μκ°μ 4λ‘ νμ λλ€. νμ§λ§ μ΄ν B->C κ°μ μΌλ‘ -90 λΉμ©μ΄ λμ¬ μ μμμλ λΆκ΅¬νκ³ μ΄λ―Έ λ°©λ¬Έλ C μ μ μ μ΅μκ°μ κ°±μ λμ§ μλλ€.
ν μ μ μμ λ€λ₯Έ μ μ κΉμ§ κ°λλ° μ΅λ V-1 κ°μ κ°μ μ κ±°μΉ μ μκΈ° λλ¬Έμ΄λ€. Vλ² μ΄μμ κ°μ μ κ±°μ³ λ°©λ¬Ένλ€λ©΄ μ€λ³΅λ κ°μ μ κ±°μ³€λ€λ λ§μ΄κΈ° λλ¬Έμ μ΅μλΉμ©μ΄λΌκ³ ν μ μλ€. μ¦, ν μ μ μμ λ€λ₯Έ μ μ κΉμ§ κ°λ μ΅μ λΉμ©μ ꡬνκΈ° μν΄ κ°λ₯ν κ²½λ‘λ€μ λͺ¨λ νμνκΈ° μν΄μλ V-1 λ² κΉμ§ λ°λ³΅μ ν μ μμ΄μΌ νλ€.
π νλ‘μ΄λ μμ μκ³ λ¦¬μ¦μμ μμ κ°μ μ¬μ΄ν΄μ νλ³ν μ μλ λ°©λ²μ?
μμ κ°μ μ¬μ΄ν΄μ΄ μλ€λ©΄ ν μ μ μ΄ μκΈ° μμ μΌλ‘ μ€λ λΉμ©μ νμ 0μ΄ λμ΄μΌλ§ νλ€. νμ§λ§ μμ κ°μ μ¬μ΄ν΄μ΄ μ‘΄μ¬νλ©΄ μκΈ° μμ μΌλ‘ λμμ€λ dist[i][i]
κ°μ΄ 0λ³΄λ€ μμ μμκ°μ κ°κ² λλ€. μ΄λ₯Ό ν΅ν΄ μμ κ°μ μ¬μ΄ν΄μ μ 무λ₯Ό νλ¨ν μ μλ€.