2021. 9. 28. 08:00γμ½λ© ν μ€νΈ μ€λΉ/μκ³ λ¦¬μ¦
μλ νμΈμ? μ£Όλνλ μ λλ€.
μ€λμ μκ³ λ¦¬μ¦μ BFS(λλΉ μ°μ νμ)μ DFS(κΉμ΄ μ°μ νμ)μ λν΄μ 곡λΆνλ μκ°μΈ κ²μ΄μμ.
μ€λλ νμ΄ν μΈ κ²μ΄μμ!
μμ€ μ½λμ λν΄μ νμΈ νκ³ μΆμΌμ λΆλ€κ»μλ μ£Όλνλμ Git hubμ κ΄μ¬μ μ£ΌμΈμ!
π BFSμ DFSλ?
μ΄ λμ λνμ μΈ Graph νμ μκ³ λ¦¬μ¦μΈ κ²μ΄μμ.
λλΉ μ°μ νμμ μ μ λ€κ³Ό κ°μ λ 벨μ μλ Node(νμ Node)λ€μ λ¨Όμ νμνλ λ°©μμΈ κ²μ΄μμ.
κΉμ΄ μ°μ νμμ μ μ μ μμ Nodeλ₯Ό λ¨Όμ νμνλ λ°©μμΈ κ²μ΄μμ.
πBFS / DFS μ΄ν΄λ₯Ό μν μμ
λ¨Όμ BFS λ°©μμ A - B - C - D - G - H - I - E -F -J μμΌλ‘ νμμ νλ κ²μ΄μμ.
ν λ¨κ³μ λ΄λ €κ°λ©΄μ, ν΄λΉ Nodeμ κ°μ Level νΉμ λμ΄μ μλ Node(νμ Node)λ€μ λ¨Όμ νμνκ² λλ κ²μ΄μμ.
DFS λ°©μμ A - B -D -E - F -C -G - H - I -J μμΌλ‘ νμμ νλ κ²μ΄μμ.
ν Nodeμ μμκ³Ό μμλ₯Ό μ~μ± νκ³ λκΉμ§ νμμ ν λ€μ λ€μ κ·Έ λ€μ μλ‘ μ¬λΌμμ λ€λ₯Έ νμ Nodeλ€μ μμ Nodeλ₯Ό νκ³ μ~μ± λ΄λ €κ°λ©΄μ νμμ νλ΅λλ€!
π νμ΄μ¬μΌλ‘ κ·Έλν νν λ°©λ²
νμ΄μ¬μμ μ 곡νλ λμ λ리μ 리μ€νΈ μλ£ κ΅¬μ‘°λ₯Ό νμ©νμ¬ κ·Έλνλ₯Ό ννν μ μλ΅λλ€!
πκ·Έλν μμ νμ΄μ¬ νν
μμ μ½λμ²λΌ λμ λ리 νμ μ λ³μλ₯Ό μ μΈν λ€μ Keyμ Valueλ₯Ό μ΄μ©νμ¬ λ€μκ³Ό κ°μ΄ κ·Έλνλ₯Ό λ§λλ κ²μ΄μμ.
π BFS μκ³ λ¦¬μ¦ κ΅¬ν
μλ£κ΅¬μ‘°λ‘λ ν(First In First Out)λ₯Ό νμ©ν μ μλ κ²μ΄μμ.
μ΄κ²μ μν΄ need_visit νμ visited ν λκ°λ₯Ό μ¬μ©νλλ‘ ν κ²μ΄μμ.
μ¬κΈ°μ νμ ꡬνμ νμ΄μ¬μ 리μ€νΈλ₯Ό νμ©ν μλ μλ΅λλ€!
π DFS μκ³ λ¦¬μ¦ κ΅¬ν
DFSλ μλ£κ΅¬μ‘°λ‘ μ€νκ³Ό νλ₯Ό μ¬μ©ν κ²μ΄μμ.
λ¨Όμ need_visitμ μ€νμ μ¬μ©νκ³ , visitedλ νλ₯Ό μ¬μ©νλλ‘ νκ² μ΅λλ€.
BFSλ λ κ°μ νλ₯Ό μ¬μ©νμ§λ§, DFSλ νμ μ€νμ μ¬μ©νλ€λ κ±° μμΌλ©΄ μλλ κ²μ΄μμ!
μ μ°Έ! νμ μ€ν ꡬνμ λ³λ λΌμ΄λΈλ¬λ¦¬λ₯Ό νμ©ν μλ μμ§λ§, κ°λ¨ν Listλ₯Ό νμ©ν μλ μλ κ²μ΄μμ.
π μκ° λ³΅μ‘λ
μΌλ°μ μΌλ‘ BFSμ DFSμ μκ° λ³΅μ‘λλ μλμ κ°μ΄ κ³μ°νλ κ²μ΄μμ.
Nodeμ μλ₯Ό V (Vertex )λΌ νκ³ , κ°μ μλ₯Ό E(Edge)λΌκ³ ν λ, μ Codeμμ while need_visitμ V + E λ§νΌ μννλ κ²μ΄μμ.
κ²°κ΅ λΉ μ€ νκΈ°λ²μΌλ‘λ O(V + E)κ° λλ κ²μ΄μμ.
π‘μ°Έκ³ :
BFSλ, DFS νΉμ κ·Έλνλ€μ μ λ ₯μ΄ νλλ§ μλ κ²(N)κ³Ό λ¬λ¦¬ Nodeμ Link(κ°μ )μ΄ μ λ ₯μ΄ λλ€.
κ·Έλ κΈ° λλ¬Έμ λ€λ₯Έ κ²λ€μ λΉ μ€ νκΈ°λ²μ΄ O(N) λ±κ³Ό κ°μ΄ Nμ μ°λ, κ·Έλνλ Vμ Eλ₯Ό μ¬μ©νλ€.
μΆμ² : ν¨μ€νΈ μΊ νΌμ€ - μ΄μ€ν¬ κ°μ¬λμ μκ³ λ¦¬μ¦ / κΈ°μ λ©΄μ μμ μ 볡 μ¬μΈμ ν¨ν€μ§ Online
μ΄ κΈμ κ°μ λ΄μ©κ³Ό κ°μ μλ£λ₯Ό λ°νμΌλ‘ 'μ£Όλνλ'μ΄ 'μ£Όλνλ' μ΄ν΄νκΈ° μ½κΈ° μν΄ μμ±ν λ΄μ© μμ μλ €λ립λλ€.
μ£Όλνλμ κΈμ΄ λ§μμ λμ ¨λμ? ꡬλ κ³Ό 곡κ°! κ·Έλ¦¬κ³ , λκΈ κ·Έλ¦¬κ³ λ°©λͺ λ‘μ μ£Όλνλμκ² λ§μ νμ΄ λ©λλ€
'μ½λ© ν μ€νΈ μ€λΉ > μκ³ λ¦¬μ¦' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μκ³ λ¦¬μ¦] Graph (κ·Έλν) (0) | 2021.09.20 |
---|---|
[μκ³ λ¦¬μ¦] μμ°¨ νμ (0) | 2021.09.19 |
[μκ³ λ¦¬μ¦] μ΄μ§ νμ κΈ°λ² (0) | 2021.09.17 |
[μκ³ λ¦¬μ¦] Quick Sort (ν΅ μ λ ¬) (0) | 2021.09.09 |
[μκ³ λ¦¬μ¦] λ³ν© μ λ ¬ (merge sort) (0) | 2021.09.09 |