CS 곡뢀

BFS vs DFS

은진 2021. 9. 30. 19:55

DFS : 깊이 μš°μ„  탐색, 루트 λ…Έλ“œμ˜ ν•œ 브런치의 λ§ˆμ§€λ§‰ λ…Έλ“œκΉŒμ§€, λͺ¨λ“  λ…Έλ“œλ₯Ό νƒμƒ‰ν•œ ν›„ λ‹€μŒ 브런치λ₯Ό νƒμƒ‰ν•˜λŠ” 방법.

ν•œ λ°©ν–₯으둜 계속 νƒμƒ‰ν•˜λ‹€κ°€ λ§ˆμ§€λ§‰ λ…Έλ“œμ— λ„λ‹¬ν•˜λ©΄ κ°€μž₯ κ°€κΉŒμš΄ 갈림길둜 λŒμ•„κ°€ μƒˆλ‘œμš΄ 브런치λ₯Ό νƒμƒ‰ν•œλ‹€.

λͺ¨λ“  λ…Έλ“œλ₯Ό λ°©λ¬Έν•  λ•Œ, μ™„μ „ 탐색을 ν•  λ•Œ μ‚¬μš©ν•œλ‹€.

 

μž¬κ·€μ μœΌλ‘œ λ™μž‘ν•˜λ©°, 자기 μžμ‹ μ„ ν˜ΈμΆœν•˜λŠ” μˆœν™˜ μ•Œκ³ λ¦¬μ¦˜μ˜ ν˜•νƒœμ΄λ‹€.

Stack 자료ꡬ쑰λ₯Ό μ‚¬μš©ν•˜μ—¬ ν›„μž…μ„ μΆœ(LIFO) μ›μΉ™μœΌλ‘œ νƒμƒ‰ν•œλ‹€.

 

 

 

BFS : λ„ˆλΉ„ μš°μ„  탐색, 루트 λ…Έλ“œμ™€ μΈμ ‘ν•œ λ…Έλ“œλΆ€ν„° μš°μ„ μ μœΌλ‘œ νƒμƒ‰ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜

 

μ΅œλ‹¨ 경둜λ₯Ό 찾을 λ•Œ μ‚¬μš©ν•œλ‹€.

μ‹œμž‘μ μ—μ„œ λͺ©μ μ§€κΉŒμ§€ ν•œ 단계씩 νƒμƒ‰ν•˜κΈ° λ•Œλ¬Έ. λͺ©μ μ§€μ— λ„λ‹¬ν•˜λŠ” μˆœκ°„ μ•Œκ³ λ¦¬μ¦˜μ„ μ’…λ£Œν•œλ‹€. 더 λ§Žμ€ 단계λ₯Ό 거쳐야 λͺ©μ μ§€μ— 도달할 수 μžˆλŠ” κ²½λ‘œλŠ” 더 이상 탐색할 ν•„μš”κ°€ μ—†λ‹€.

 

μž¬κ·€μ μœΌλ‘œ λ™μž‘ν•˜μ§€ μ•ŠλŠ”λ‹€.

Queue 자료ꡬ쑰λ₯Ό μ‚¬μš©ν•˜μ—¬ μ„ μž…μ„ μΆœ(FIFO) μ›μΉ™μœΌλ‘œ νƒμƒ‰ν•œλ‹€.

 

 

곡톡점 : μ–΄λ–€ λ…Έλ“œλ₯Ό λ°©λ¬Έν–ˆμ—ˆλŠ”μ§€ μ—¬λΆ€λ₯Ό λ°˜λ“œμ‹œ 검사 ν•΄μ•Ό ν•œλ‹€. 이λ₯Ό μƒλž΅ν•  경우 λ¬΄ν•œλ£¨ν”„에 빠질 수 μžˆλ‹€.

 

 

μ‹œκ°„ λ³΅μž‘λ„

κ·Έλž˜ν”„(μ •μ μ˜ 수: N, κ°„μ„ μ˜ 수: E) 쑰회

인접 ν–‰λ ¬λ‘œ ν‘œν˜„λœ κ·Έλž˜ν”„ : O(N^2) : κ°„μ„ μ˜ 수 Eμ™€λŠ” λ¬΄κ΄€ν•˜κ²Œ κ°€λ‘œ N, μ„Έλ‘œ N개의 matrix둜 정점 κ°„ 연결관계λ₯Ό ν‘œν˜„ν•˜κΈ° λ•Œλ¬Έ

인접 리슀트둜 ν‘œν˜„λœ κ·Έλž˜ν”„ : O(N+E) : λͺ¨λ“  정점과 간선을 ν‘œν˜„ν•˜κΈ° λ•Œλ¬Έ

 

 

 

 

- μ„±λŠ₯ 차이가 λ°œμƒν•˜λŠ” 이유?

 

- μ΅œλ‹¨κ±°λ¦¬λ₯Ό 찾을 λ•Œμ—λŠ” μ–΄λ–€ μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν•˜λŠ”μ§€?

 

- κ·Έ μ΄μœ λŠ”?