μμμ λ ¬ : Topological Sort#
μ§μ μ°¨μ μ§μΆμ°¨μ
- μ§μ μ°¨μ(Indegree)
νΉμ ν λ Έλλ‘ λ€μ΄μ€λ κ°μ μ κ°μ
- μ§μΆμ°¨μ(Outdegree)
νΉμ ν λ Έλμμ λκ°λ κ°μ μ κ°μ
μμ μ μ μ²λΌ μμ μ λ ¬μ DAG(Direct Acyclic Graph, μννμ§ μλ λ°©ν₯ κ·Έλν)μμλ§ μνν μ μλ€. μμ μ λ ¬μμλ μ¬λ¬κ°μ§ λ΅μ΄ μ‘΄μ¬ν μ μλ€. ν λ¨κ³μμ νμ μλ‘κ² λ€μ΄κ°λ μμκ° 2κ° μ΄μμΈ κ²¨μ°κ° μλ€λ©΄ μ¬λ¬ κ°μ§ λ΅μ΄ μ‘΄μ¬νλ€. λͺ¨λ μμλ₯Ό λ°©λ¬ΈνκΈ° μ μ νκ° λΉλ€λ©΄ μ¬μ΄ν΄μ΄ μ‘΄μ¬νλ€κ³ νλ¨ν μ μλ€. μ¬μ΄ν΄μ ν¬ν¨λ μμ μ€μμ μ΄λ ν μμλ νμ λ€μ΄κ°μ§ λͺ»νλ€.
μ€νμ νμ©ν DFSλ₯Ό μ΄μ©ν΄ μμμ λ ¬μ μνν μ μλ€. μ¬κΈ°μλ νλ₯Ό μ΄μ©ν κ²λ§ λ€λ£¬λ€.
λ°©λ²#
νλ₯Ό μ΄μ©νλ μμμ λ ¬ μκ³ λ¦¬μ¦μ λμ κ³Όμ μ λ€μκ³Ό κ°λ€. νλ₯Ό μ΄μ©νλ κ²μ dequeλ₯Ό μ΄μ©νλ©΄ νΈνλ€.
μ§μ μ°¨μκ° 0μΈ λͺ¨λ λ Έλλ₯Ό νμ λ£λλ€.
νκ° λΉ λ κΉμ§ λ€μ κ³Όμ μ λ°λ³΅νλ€.
νμμ μμλ₯Ό κΊΌλ΄ ν΄λΉ λ Έλμμ λκ°λ κ°μ μ κ·Έλνμμ μ κ±°νλ€.
μλ‘κ² μ§μ μ°¨μκ° 0μ΄ λ λ Έλλ₯Ό νμ λ£λλ€.
κ²°κ³Όμ μΌλ‘ κ° λ Έλκ° νμ λ€μ΄μ¨ μμκ° μμμ λ ¬μ μνν κ²°κ³Όμ κ°λ€.
μ€μΈμ°κΈ°λ¬Έμ λ₯Ό 보면 queueλ₯Ό μ΄μ©ν΄μ λ¬Έμ λ₯Ό ν΄κ²°νλ€. μ§μ μ°¨μκ° 0μΈ κ²½μ°μ λ Έλλ€μ νμ λ£μ λ€μ νκ° λΉμ΄λ²λ¦΄ λκΉμ§ κ³Όμ μ λ°λ³΅νλ€. nowλ₯Ό κ²°κ³Όμ λ£κ³ , nowμ μ°κ²°λ λ Έλλ€μμ μ§μ μ°¨μλ₯Ό νλμ© λΊλ€. λ€κ½λ¬΄λλ₯Ό νλμ© μ§μ°λ κ³Όμ μ΄λ€. κ·Έλ¦¬κ³ λ€μ μ§μ μ°¨μκ° 0μΈ κ²λ€μ λ€μ νμ λ£κ³ κ·Έ μμλλ‘ FIFOλ‘ κ³Όμ μ λ°λ³΅νλ€.
μ±λ₯#
μμ μ λ ¬μ μν΄μ μ°¨λ‘λλ‘ λͺ¨λ λ Έλλ₯Ό νμΈνλ©° κ° λ Έλμμ λκ°λ κ°μ μ μ°¨λ λλ‘ μ κ±°ν΄μΌνλ€. λλ¬Έμ μμ μ λ ¬ μκ³ λ¦¬μ¦μ μκ° λ³΅μ‘λλ \(O(V+E)\)μ΄λ€.