πŸ–‹οΈ μžλ£Œκ΅¬μ‘°μ™€ μ•Œκ³ λ¦¬μ¦˜/μ•Œκ³ λ¦¬μ¦˜,자료ꡬ쑰

[κ·Έλž˜ν”„] λ„ˆλΉ„μš°μ„ νƒμƒ‰ BFS & κΉŠμ΄μš°μ„ νƒμƒ‰ DFS

OR15A 2023. 12. 8. 16:25

  • λͺ¨λ“  정점을 λ°©λ¬Έν•˜λŠ” 방법 : λ„ˆλΉ„μš°μ„ νƒμƒ‰ BFS, κΉŠμ΄μš°μ„ νƒμƒ‰ DFS
    • λ„ˆλΉ„μš°μ„ νƒμƒ‰ BFS
      • λ¨Όμ € 루트의 μžμ‹μ„ μ°¨λ‘€λ‘œ 방문함
      • λ‹€μŒμœΌλ‘œ 루트 μžμ‹μ˜ μžμ‹, λ£¨νŠΈμ—μ„œ 2개의 간선을 κ±°μ³μ„œ 도달할 수 μžˆλŠ” 정점 λ°©λ¬Έ
      • λ£¨νŠΈλ‘œλΆ€ν„° 3개의 간선을 κ±°μ³μ„œ λ„λ‹€λž—λŠ” 정점듀
      • 4개, 5개... 순으둜 방문함
    • κΉŠμ΄μš°μ„ νƒμƒ‰ DFS
      • 루트 μžμ‹ 정점을 ν•˜λ‚˜ λ°©λ¬Έν•œ λ‹€μŒ, μ•„λž˜λ‘œ λ‚΄λ €κ°ˆ 수 μžˆλŠ” κ³³κΉŒμ§€ 내렀감
      • 더 이상 λ‚΄λ €κ°ˆ μˆ˜κ°€ μ—†μœΌλ©΄ μœ„λ‘œ λ˜λŒμ•„μ˜€λ‹€κ°€ λ‚΄λ €κ°ˆ 곳이 있으면 즉각 내렀감
  • BFSλŠ” μ˜†μœΌλ‘œ μ­‰ ν›‘μ–΄ λ‚˜κ°€κ³ , DFSλŠ” μ•„λž˜λ‘œ(깊이) 갈 수 μžˆλŠ” λ°κΉŒμ§€ κ°”λ‹€κ°€ λ§‰νžˆλ©΄ λ˜λŒμ•„μ™€μ„œ λ‹€μ‹œ 내렀감
  • DFS에 κΈ°λ°˜ν•œ 탐색 방법을 λ°±νŠΈλž˜ν‚Ή 이라고 λΆ€λ₯΄κΈ°λ„ 함

 

 

BFS

  • μˆ˜ν–‰ μˆœμ„œ
    • μ‹œμž‘ μ •μ μœΌλ‘œ 정해진 정점을 λ°©λ¬Έ(1둜 ν‘œμ‹œ)
    • 정점 1에 μΈμ ‘ν•œ 정점을 λͺ¨λ‘ λ°©λ¬Έ(2, 3, 4둜 ν‘œμ‹œ)
    • 정점 2, 3, 4λ₯Ό κΈ°μ€€μœΌλ‘œ μΈμ ‘ν•œ λ˜λ‹€λ₯Έ 정점이 μžˆλŠ”μ§€ λ°©λ¬Έ.(5, 6, 7둜 ν‘œμ‹œ)
    • λ°˜λ³΅ν•˜λ©° λ°©λ¬Έν•˜μ§€ μ•Šμ€ 정점이 μ—†μ–΄μ„œ 더 이상 갈 곳이 μ—†μœΌλ©΄ 끝

 

 

DFS

  • μˆ˜ν–‰ μˆœμ„œ
    • μ‹œμž‘ μ •μ μœΌλ‘œ 정해진 정점을 λ°©λ¬Έ(1둜 ν‘œμ‹œ)
    • 정점1에 μΈμ ‘ν•œ 정점 쀑 ν•˜λ‚˜λ₯Ό λ°©λ¬Έ(2둜 ν‘œμ‹œ)
    • 정점2에 μΈμ ‘ν•˜λ©΄μ„œ λ°©λ¬Έν•˜μ§€ μ•Šμ€ 총 3개의 정점 쀑 ν•˜λ‚˜λ₯Ό 방문함(3으둜 ν‘œμ‹œ)
    • 정점3에 μΈμ ‘ν•œ 정점 쀑 λ°©λ¬Έν•˜μ§€ μ•Šμ€ 2개의 정점 쀑 ν•˜λ‚˜λ₯Ό λ°©λ¬Έ(4둜 ν‘œμ‹œ)
    • ...정점 5κΉŒμ§€ 반볡. 5에 μΈμ ‘ν•œ 정점 쀑 λ°©λ¬Έν•˜μ§€ μ•Šμ€ 정점이 μ—†μœΌλ©΄ λ”°λΌμ„œ μ™”λ˜ 길을 λ˜λŒμ•„κ°
    • λ˜λŒμ•„κ°€λŠ” κ³Όμ •μ—μ„œ λ°©λ¬Έμ—¬λΆ€λ₯Ό 확인. λ°©λ¬Έν•˜μ§€ μ•Šμ€ 정점이 있으면 λ°©λ¬Έν•œλ‹€.
    • λ˜λŒμ•„κ°€λ©° μ‹œμž‘ 정점(정점1)둜 λ„μ°©ν•˜λ©΄ 더 이상 갈 곳이 μ—†μœΌλ―€λ‘œ 끝낸닀.

 

 

 

참고자료 : γ€Œμ‰½κ²Œ λ°°μš°λŠ” 자료ꡬ쑰 with μžλ°”γ€