BFS, DFS

λšœλ‹ˆΒ·2024λ…„ 7μ›” 17일
0

🌟자료 ꡬ쑰λ₯Ό μ΄μš©ν•œ 탐색 μ•Œκ³ λ¦¬μ¦˜

  • 탐색 : λ§Žμ€ μ–‘μ˜ 데이터 μ€‘μ—μ„œ μ›ν•˜λŠ” 데이터λ₯Ό μ°ΎλŠ” 과정을 의미
  • λŒ€ν‘œμ μΈ 탐색 μ•Œκ³ λ¦¬μ¦˜ : DFS, BFS
    κ·Έλž˜ν”„νƒμƒ‰, 완전탐색

깊이 μš°μ„  탐색(DFS, Depth-First Search)

  • 깊이 μš°μ„  탐색 : μ΅œλŒ€ν•œ 깊이 λ‚΄λ €κ°„ λ’€, 더 이상 깊이 갈 곳이 없을 경우 μ˜†μœΌλ‘œ 이동 ( μ•„λž˜ -> μ˜†)

    1. 탐색 μ‹œμž‘ λ…Έλ“œλ₯Ό μŠ€νƒμ— μ‚½μž…ν•˜κ³  λ°©λ¬Έ 처리 -> 2. μŠ€νƒμ˜ μ΅œμƒλ‹¨ λ…Έλ“œμ— λ°©λ¬Έν•˜μ§€ μ•Šμ€ 인접 λ…Έλ“œκ°€ 있으면 κ·Έ 인접 λ…Έλ“œλ₯Ό μŠ€νƒμ— λ„£κ³  λ°©λ¬Έ 처리 그리고 λ°©λ¬Έν•˜μ§€ μ•Šμ€ 인접 λ…Έλ“œκ°€ μ—†μœΌλ©΄ μŠ€νƒμ—μ„œ μ΅œμƒλ‹¨ λ…Έλ“œλ₯Ό κΊΌλ‚΄κΈ° (두 번째 과정을 더 이상 μˆ˜ν–‰ν•  수 없을 λ•ŒκΉŒμ§€ 반볡)
  • LIFO μŠ€νƒ(stack)으둜 κ΅¬ν˜„, μž¬κ·€ ν•¨μˆ˜λ‘œ κ΅¬ν˜„ : μŠ€νƒμ€ λ‚΄λ¦Όμ°¨μˆœ, μž¬κ·€λŠ” μ˜€λ¦„μ°¨μˆœ

  • ex) 미둜찾기, 퍼즐해결, κ·Έλž˜ν”„μ˜ λͺ¨λ“ λ…Έλ“œ λ°©λ¬Έ μ•Œκ³ λ¦¬μ¦˜ 문제 등에 ν™œμš©

  • BFS에 λΉ„ν•΄ λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰μ΄ 적을 수 있음

    λ„ˆλΉ„ μš°μ„  탐색(BFS, Breadth-First Search)

  • λ„ˆλΉ„ μš°μ„  탐색 : μ΅œλŒ€ν•œ λ„“κ²Œ μ΄λ™ν•œ λ‹€μŒ, 더 이상 갈 곳이 없을 경우 μ•„λž˜λ‘œ 이동 ( μ˜† -> μ•„λž˜ )

    1. 탐색 μ‹œμž‘ λ…Έλ“œλ₯Ό 큐에 μ‚½μž…ν•˜κ³  λ°©λ¬Έ 처리 -> 2. νμ—μ„œ λ…Έλ“œλ₯Ό κΊΌλ‚΄ ν•΄λ‹Ή λ…Έλ“œμ΄ 인접 λ…Έλ“œ μ€‘μ—μ„œ λ°©λ¬Έν•˜μ§€ μ•Šμ€ λ…Έλ“œλ₯Ό λͺ¨λ‘ 큐에 μ‚½μž…ν•˜κ³  λ°©λ¬Έ 처리 (두 번째 과정을 더 이상 μˆ˜ν–‰ν•  수 없을 λ•ŒκΉŒμ§€ 반볡)
  • FIFO 큐(queue)λ₯Ό μ΄μš©ν•˜μ—¬ κ΅¬ν˜„

  • ex) μ΅œλ‹¨ 경둜찾기, λ„€νŠΈμ›Œν¬ 탐색, κ·Έλž˜ν”„μ˜ 레벨 순회 등에 μ•Œκ³ λ¦¬μ¦˜ λ¬Έμ œμ— ν™œμš©

  • 주둜 두 λ…Έλ“œ μ‚¬μ΄μ˜ μ΅œλ‹¨ 경둜λ₯Ό μ°Ύκ³  싢을 λ•Œ μ‚¬μš© : DFS μ‚¬μš©μ‹œ 처음으둜 λ°œκ²¬λ˜λŠ” 닡이 μ΅œλ‹¨κ±°λ¦¬κ°€ 아닐 수 μžˆμ–΄μ„œ λ‹€ κ΅¬ν•œ ν›„ λΉ„κ΅ν•΄μ•Όν•˜μ§€λ§Œ BFSλŠ” ν˜„μž¬ λ…Έλ“œμ—μ„œ κ°€κΉŒμš΄ κ³³ λΆ€ν„° μ°ΎκΈ° λ•Œλ¬Έμ— λ¨Όμ € μ°Ύμ•„μ§€λŠ” 해닡이 μ΅œλ‹¨κ±°λ¦¬μ—¬μ„œ

0개의 λŒ“κΈ€