Computer πŸ’»/데이터 뢄석

깊이 μš°μ„  탐색(DFS) / λ„ˆλΉ„ μš°μ„  탐색(BFS)

yeon42 2021. 9. 30. 17:58
728x90

https://sustainable-dev.tistory.com/44

 

BFS(λ„ˆλΉ„μš°μ„ νƒμƒ‰)와 DFS(κΉŠμ΄μš°μ„ νƒμƒ‰)

μ•Œκ³ λ¦¬μ¦˜μ„ κ³΅λΆ€ν•˜λ‹€κ°€ κΌ­! μ•Œμ•„μ•Όν•˜λŠ” λ„ˆλΉ„μš°μ„ νƒμƒ‰κ³Ό κΉŠμ΄μš°μ„ νƒμƒ‰μ— λŒ€ν•΄ μ•Œμ•„λ³΄κ³ μž ν•œλ‹€. 자료ꡬ쑰-트리 ν¬μŠ€νŠΈμ—μ„œ κ°€λ³κ²Œ 훑어보고 λ„˜μ–΄κ°”μ—ˆλŠ”λ°, μ•Œκ³ λ¦¬μ¦˜ λ¬Έμ œμ— μ μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ”

sustainable-dev.tistory.com

μœ„ λΈ”λ‘œκ·Έλ₯Ό 보고 필사

 


 

 

 

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

- μŠ€νƒ, μž¬κ·€λ₯Ό μ‚¬μš©ν•΄ μ–΄λ–€ μ •μ μ—μ„œ κ·Έ 정점과 μ—°κ²°λœ μ •μ κΉŒμ§€ κ³„μ†ν•΄μ„œ λ‚˜μ•„κ°€λ‹€ λͺ©ν‘œ 정점을 μ°Ύμ§€ λͺ»ν•˜λ©΄ λ‹€μ‹œ κ°€μž₯ κ°€κΉŒμš΄ μ •μ μœΌλ‘œ λŒμ•„μ™€ λ‹€λ₯Έ 경둜λ₯Ό 택해 μž¬νƒμƒ‰

- μ—¬κΈ°μ„œ λ‹€μ‹œ λ˜λŒμ•„μ˜€λŠ” κ³Όμ •: λ°±νŠΈλž˜ν‚Ή(Backtracking)

 

 

좜처: https://blog.kakaocdn.net/dn/lf5Ls/btqxJxzhlYi/LCeEz9YQjkpOk9lc80uARk/img.gif

 

- λ°±νŠΈλž˜ν‚Ήμ„ ν•˜λŠ” κ³Όμ •μ—μ„œ LIFO λ°©μ‹μœΌλ‘œ 탐색을 ν•œλ‹€.

- DFSλŠ” ν˜„μž¬ νƒμƒ‰ν•˜κ³  μžˆλŠ” 경둜 μƒμ˜ λ…Έλ“œλ“€λ§Œ κΈ°μ–΅ν•˜λ©΄ 되기 λ•Œλ¬Έμ— BFS에 λΉ„ν•΄ μ €μž₯ κ³΅κ°„μ˜ μˆ˜μš”κ°€ 비ꡐ적 적닀.

- μŠ€νƒμ„ μ΄μš©ν•˜κΈ° λ•Œλ¬Έμ— ν›„μž…μ„ μΆœ(LIFO)의 λ°©μ‹μœΌλ‘œ νƒμƒ‰ν•œλ‹€.

 

 

- μž₯점 : λ©”λͺ¨λ¦¬ μ†ŒλΉ„κ°€ 적음 (μ˜¬λ°”λ₯Έ 경우인 경우, μ΅œμ†Œ μ‹€ν–‰ μ‹œκ°„ 가짐)

- 단점 : λ‚΄κ°€ λ°©λ¬Έν•œ 길이 shortest인지 λͺ¨λ¦„ (였랜 μ‹œκ°„)

 

 

 

 

 


 

 

 

 

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

 

- 큐λ₯Ό μ‚¬μš©ν•˜λ©° μ–΄λ–€ 정점을 λ°©λ¬Έν•œ ν›„, κ·Έ 정점에 μ—°κ²°λœ λ‹€λ₯Έ 정점듀을 큐에 쀄을 μ„Έμ›Œκ°€λ©° 순차적으둜 λ°©λ¬Έν•˜λŠ”λ°, λ°©λ¬Έν•˜μ§€ μ•Šμ€ 정점이 없을 λ•Œ (더 이상 큐에 λ‚¨μ•„μžˆλŠ” 정점이 없을 λ–„)κΉŒμ§€ λ‹€λ₯Έ λͺ¨λ“  정점듀에 λŒ€ν•΄ λ˜‘κ°™μ€ λ°©μ‹μœΌλ‘œ 탐색을 함

 

좜처: https://blog.kakaocdn.net/dn/LwOPK/btqxKq0HiQe/k8m9nAJdj4YHKNHw8iRTX1/img.gif

 

- 큐에 λ¨Όμ € λ“€μ–΄μ˜¨ 정점이 λ¨Όμ € λ””νλ˜κ³ , κ·Έ 정점과 μ—°κ²°λœ 정점듀이 큐에 μΈνλ˜λŠ” FIFO ν˜•μ‹

 

- 두 λ…Έλ“œ μ‚¬μ΄μ˜ μ΅œλ‹¨ 경둜λ₯Ό μ°Ύκ³  싢을 λ•Œ 이 방법 μ‚¬μš©

- 큐λ₯Ό μ‚¬μš©ν•˜λ―€λ‘œ FIFO(μ„ μž…μ„ μΆœ)

 

 

- μž₯점 : κ°€μž₯ κ°€κΉŒμš΄ λ…Έλ“œ λ°©λ¬Έ -> μ΅œλ‹¨ μ½”μŠ€ (shortest path(μ΅œμ ν•΄)λ₯Ό 보μž₯함)

- 단점 : λ©”λͺ¨λ¦¬ μ†ŒλΉ„κ°€ 큼 (exponentialν•œ node의 수λ₯Ό κΈ°μ–΅ν•΄μ•Ό ν•˜λ―€λ‘œ)