μ μ κ³Ό κ°μ μΌλ‘ μ΄λ£¨μ΄μ§ μλ£κ΅¬μ‘°
- μ μ (Vertex)μ κ°μ (Edge)λ‘ μ΄λ£¨μ΄μ§ μλ£κ΅¬μ‘°λ₯Ό μλ―Ένλ€.
- cf) νΈλ¦¬λ λ£¨νΈ λ
Έλκ° μ‘΄μ¬νλ κ²μ λ°ν΄ κ·Έλνλ μ‘΄μ¬νμ§ μλλ€.
- cf) νΈλ¦¬ λν κ·Έλνλ‘ λ³Ό μ μμΌλ©° μ¬μ΄ν΄μ΄ νμ©λμ§ μμμΌ νλ€.
κ·Έλν κ΄λ ¨ μ©μ΄
λ°©ν₯μ±
무방ν₯ κ·Έλν
- A β B, B β A
- λ
Έλλ₯Ό μλ κ°μ μ λ°©ν₯μ±μ΄ μκΈ° λλ¬Έμ μΆλ° λ
Έλμ μκ΄μμ΄ λ λ
Έλ κ° μ΄λμ΄ κ°λ₯νλ€.
- μμͺ½μ μλ κ°μ μ΄ μ‘΄μ¬νλ€.
λ°©ν₯ κ·Έλν
- A β Bλ‘ κ° μ μμ§λ§ B β Aλ‘ κ° μ μμ μλ μλ€.
- μ¦ λ
Έλ μ¬μ΄μ μ‘΄μ¬νλ κ°μ μ λ°©ν₯μ΄ μ‘΄μ¬νλ€.
Degree
- 무방ν₯ κ·Έλνμμ κ° μ μ μ μ°κ²°λ κ°μ μ κ°μλ₯Ό DegreeλΌ νλ€.
- λ°©ν₯ κ·Έλνμμ λ
Έλμμ μΆλ°νλ κ°μ μ κ°μλ₯Ό OutDegree, λ
Έλλ‘ λμ°©νλ κ°μ μ κ°μλ₯Ό InDegreeλΌ νλ€.
κ°μ€μΉ κ·Έλν
- κ°μ€μΉ κ·Έλνλ κ° κ°μ μ κ°μ€μΉλ₯Ό λμ΄ κ΅¬μ±ν κ·Έλνμ΄λ€.
λΆλΆ κ·Έλν
- κ·Έλνμ μΌλΆ μ μ λ° κ°μ μΌλ‘ μ΄λ£¨μ΄μ§ κ·Έλνμ΄λ€.
- cf) λΆλΆ μ μ₯ κ·Έλνλ, λΆλΆ κ·Έλν μ€ μλ κ·Έλνμ λͺ¨λ μ μ μ ν¬ν¨νλ κ·Έλνμ΄λ€.
κ·Έλνλ₯Ό ꡬννλ λ°©λ²
μΈμ νλ ¬ (adjacent matrix)
- μ μ κ° μ°κ²° μ¬λΆλ₯Ό νμΈνκΈ° μν΄μλ ν΄λΉ μμΉμ valueμ μ§μ μ κ·Όνλ λ°©μμΌλ‘ λ°λ‘ νμΈν μ μμΌλ―λ‘ O(1)μ μκ°μ΄ κ±Έλ¦°λ€.
- 곡κ°λ³΅μ‘λλ Edge κ°μμ κ΄κ³μμ΄ O(Vertex^2)
μΈμ 리μ€νΈ (adjacent list)
- μ μ κ° μ°κ²° μ¬λΆλ₯Ό νμΈνκΈ° μν΄μλ κ° μ μ λ§λ€ μΈμ 리μ€νΈλ₯Ό νμΈν΄μΌνλ―λ‘ μ μ κ° μ°κ²°μ΄ λμ΄μλμ§ μμ°¨μ μΌλ‘ λͺ¨λ νμν΄μΌνλ€.
- 무방ν₯ κ·ΈλνμΌ μ - O(λ
Έλ 1μ κ°μ κ°μ or λ
Έλ 2μ κ°μ κ°μ)
- λ°©ν₯ κ·Έλν μΌ μ - O(μΆλ° λ
Έλμ κ°μ κ°μ)
- 곡κ°λ³΅μ‘λλ O(Edge + Vertex)
κ·Έλν νμ λ°©λ²
κΉμ΄ μ°μ νμ - DFS (Depth First Search)
- κ·Έλνμ μ°κ²°λ μ μ λ€μ λ°λΌ ν λ°©ν₯μΌλ‘ κ³μ λμκ°λ€
- λ μ΄μ λμκ° κ³³μ΄ μμΌλ©΄ μ΄μ λ¨κ³λ‘ λμκ°λ€. - μ¬κ·μ λΉμ·νμ§ μμκ°?
- μκ°λ³΅μ‘λλ ν΄λΉ κ³΅κ° λ§νΌμ μκ°μ΄ 걸리λ―λ‘ O(V + E)
- μ€ν or μ¬κ·λ₯Ό μ΄μ©νμ¬ κ΅¬νν μ μλ€.
- μ¬μ΄ν΄ μ‘΄μ¬ μ¬λΆλ₯Ό νμΈν λ μ¬μ©νλ€.
- μ¬μ΄ν΄μ μ‘΄μ¬νλ λ°©ν₯λ§ μ°ΎμΌλ©΄ μ¬μ΄ν΄μ νμΈν μ μλ€.
λλΉ μ°μ νμ - BFS (Breadth First Search)
- κ·Έλνμ μ°κ²°λ μ μ λ€μ νμ¬ λ
Έλμ μΈμ ν μμλ‘ νμνλ€.
- κ°κΉμ΄ μμλ‘ νμνκΈ° λλ¬Έμ μ΅λ¨κ±°λ¦¬λ₯Ό κ³μ°ν λ μ£Όλ‘ μ¬μ©νλ€.
- λ μ΄μ λ°©λ¬Έν μΈμ λ
Έλκ° μμ λκΉμ§ λ°λ³΅νλ€.
- μκ°λ³΅μ‘λλ ν΄λΉ κ³΅κ° λ§νΌμ μκ°μ΄ 걸리λ―λ‘ O(V + E)
- νλ₯Ό μ΄μ©νμ¬ κ΅¬νν μ μλ€.
μΆμ²