BFS, DFS - goorm-6th-Als/for_study_Algorithm GitHub Wiki
κ·Έλν νμ (BFS, DFS)
BFS : λλΉ μ°μ νμ (Breadth-First Search)
-
λͺ¨λ μ μ μ λ°κ²¬νλ κ°μ₯ λ¨μνκ³ κ³ μ μ μΈ λ°©λ²μ΄λ€.
-
νμ¬ μ μ κ³Ό μΈμ ν κ°μ λ€μ νλμ© κ²μ¬νλ€κ°, μμ§ λ°©λ¬Ένμ§ μμ μ μ μΌλ‘ ν₯νλ κ°μ μ΄ μλ€λ©΄ κ·Έ κ°μ μ 무쑰건 λ°λΌκ°λ€. λμ΄μ κ° κ³³μ΄ μλ λ§ν μ μ μ λλ¬νλ©΄ ν¬κΈ°νκ³ , λ§μ§λ§μ λ°λΌμλ κ°μ μ λ€λμκ°λ€.
-
DFS νλμ for loopμ Nλ²μ νμνκΈ° λλ¬Έμ O(N) , μ μ μ λ°©λ¬Έν λ λ§λ€ DFSλ₯Ό λΆλ₯΄λλ°, Nκ°μ μ μ μ λͺ¨λ λ°©λ¬Ένλ―λ‘ O(N) μ΄λ€. λ°λΌμ μΈμ νλ ¬ DFSμ μ 체 μκ°λ³΅μ‘λ = N * O(N) = O(N^2) μ΄λ€
κΉμ΄ μ°μ νμμ νμμ κ° κ³Όμ μμ κ°λ₯ν ν κ·Έλν μμΌλ‘ κΉμ΄ λ€μ΄κ°λ €κ³ μλνλ©°, λ§ν μ μ μ λλ¬νμ§ μλ ν λ€λ‘ λμκ°μ§ μλλ€.
DFS : κΉμ΄ μ°μ νμ (Depth-First Search)
- λ€μ΅μ€νΈλΌ, νλ¦Ό μκ³ λ¦¬μ¦μ BFSλ₯Ό κ·Όκ°μΌλ‘ μ΄λ£¨μ΄μ§ μκ³ λ¦¬μ¦μ΄λ€.
- DFSμ λΉν΄ λμ κ³Όμ μ λΉκ΅μ μ΄ν΄νκΈ° μ½λ€.
λλΉ μ°μ νμμ κ° μ μ μ λ°©λ¬Έν λλ§λ€ λͺ¨λ μΈμ μ μ λ€μ κ²μ¬νλ€. μ΄ μ€ μ²μ 보λ μ μ μ λ°κ²¬νλ©΄ μ΄ μ μ μ λ°©λ¬Έ μμ μ΄λΌκ³ κΈ°λ‘ν΄ λ λ€, λ³λμ μμΉμ μ μ₯νλ€. μΈμ ν μ μ μ λͺ¨λ κ²μ¬νκ³ λλ©΄, μ§κΈκΉμ§ μ μ₯ν λͺ©λ‘μμ λ€μ μ μ μ κΊΌλ΄μ λ°©λ¬Ένκ² λλ€.
- λ°λΌμ λλΉ μ°μ νμμ λ°©λ¬Έ μμλ μ μ μ λͺ©λ‘μμ μ΄λ€ μ μ μ λ¨Όμ κΊΌλ΄λμ§μ μν΄ κ²°μ λλ€.
λͺ¨λ μ μ μ μΈκ°μ§ μνλ₯Ό κ±°μΉκ² λλ€.
- μμ§ λ°κ²¬λμ§ μμ μν (!check[i])
- λ°κ²¬λμμ§λ§ λ°©λ¬Ένμ§ μμ μν
- λ°©λ¬Έλ μν (check[i])
BFS / DFS μΈμ μ΄λ κ²μ μ¬μ©ν΄μΌνλ?
κ°κ°μ μ₯λ¨μ μ΄ μμΌλ―λ‘ λ¬Έμ μ μ νμ μ νμ νκ³ κ·Έμ μ ν©ν λ°©μμ λμ νλ κ²μ΄ μ€μνλ€
- λͺ¨λ λ Έλλ₯Ό λ°©λ¬Ένκ³ μ νλ κ²½μ°μ DFSλ₯Ό μ νν¨
- κΉμ΄ μ°μ νμ(DFS)μ΄ λλΉ μ°μ νμ(BFS)λ³΄λ€ μ’ λ κ°λ¨ν¨
- κ²μ μλ μ체λ λλΉ μ°μ νμ(BFS)μ΄ λ λΉ λ¦
λ°λΌμ
- κ²μ λμ κ·Έλνκ° μ λ§ ν¬λ€λ©΄ DFS (κΉμ΄μ°μ )
- κ²μ λμμ κ·λͺ¨κ° ν¬μ§ μκ³ , κ²μ μμ μ§μ μΌλ‘λΆν° μνλ λμμ΄ λ³λ‘ λ©μ§ μλ€λ©΄ BFS (λλΉμ°μ )μ μ ννμ.
| νμ κ³Όμ μμ