[JavaScript-์ž๋ฃŒ๊ตฌ์กฐ] BFS vs DFS

Hannahhhยท2022๋…„ 9์›” 22์ผ
0

JavaScript

๋ชฉ๋ก ๋ณด๊ธฐ
44/47

๐Ÿ” BFS vs DFS


๋ชจ๋“  ์ •์ ๋“ค์„ ํ•œ ๋ฒˆ์”ฉ ๋ฐฉ๋ฌธ(ํƒ์ƒ‰)ํ•จ์œผ๋กœ์จ ์›ํ•˜๋Š” ์ž๋ฃŒ๋ฅผ ์ฐพ๋Š” ๋Œ€ํ‘œ์ ์ธ ํƒ์ƒ‰๋ฐฉ๋ฒ•๋“ค๋กœ, ํƒ์ƒ‰ํ•˜๋Š” ์ˆœ์„œ๋งŒ ๋‹ค๋ฅผ ๋ฟ, ๋ชจ๋“  ์ž๋ฃŒ๋ฅผ ํ•˜๋‚˜์”ฉ ํ™•์ธํ•ด ๋ณธ๋‹ค๋Š” ์ ์€ ๊ฐ™๋‹ค.




๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(BFS)์€ ํ•˜๋‚˜์˜ ์ •์ ์„ ๊ธฐ์ค€์œผ๋กœ ๋ชฉํ‘œํ•˜๋Š” ์ •์ ๊นŒ์ง€ ๊ฐ€๋Š” ๋ฐฉ๋ฒ•์„ ํƒ์ƒ‰ํ•  ๋•Œ, ํ•˜๋‚˜์˜ ์ •์ ์—์„œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ •์ ๋ถ€ํ„ฐ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.
์ด ๋•Œ, ๊ฐ€์žฅ ๋จผ์ € ์ฐพ์•„์ง€๋Š” ํ•ด๋‹ต์ด ๊ณง ์ตœ๋‹จ๊ฑฐ๋ฆฌ์ด๋‹ค.

๋‘ ์ •์  ์‚ฌ์ด์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ ์ฐพ์„ ๋•Œ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ตœ์•…์˜ ๊ฒฝ์šฐ, ๋ชจ๋“  ๊ฒฝ๋กœ๋ฅผ ๋‹ค ์‚ดํŽด๋ณด์•„์•ผ ํ•œ๋‹ค.





๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰์€ ํ•˜๋‚˜์˜ ๊ฒฝ๋กœ๋ฅผ ๋๊นŒ์ง€ ํƒ์ƒ‰ํ•œ ํ›„, ๋ชฉํ‘œํ•œ ์ •์ ์ด ๋„์ฐฉ์ง€์ ์ด ์•„๋‹ˆ๋ผ๋ฉด ๋‹ค์Œ ๊ฒฝ๋กœ๋กœ ๋„˜์–ด๊ฐ€๋Š” ํƒ์ƒ‰ ๋ฐฉ๋ฒ•์ด๋‹ค.

๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ์™„์ „ํžˆ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, DFS์™€ ๋น„๊ตํ–ˆ์„ ๋•Œ ์ƒ๋Œ€์ ์œผ๋กœ ํƒ์ƒ‰ ์‹œ๊ฐ„์ด ๋” ์˜ค๋ž˜๊ฑธ๋ฆฐ๋‹ค.




๐Ÿ”ฅ DFS vs BFS


DFSBFS
ํƒ์ƒ‰ ๋ฐฉ๋ฒ•ํ˜„์žฌ ์ •์ ์—์„œ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ ๋“ค๊นŒ์ง€ ๋“ค์–ด๊ฐ€๋ฉด์„œ ํƒ์ƒ‰ํ˜„์žฌ ์ •์ ์— ์—ฐ๊ฒฐ๋œ ๊ฐ€๊นŒ์šด ์ ๋“ค๋ถ€ํ„ฐ ํƒ์ƒ‰
์žฅ์ 1. BFS๋ณด๋‹ค ์ ์€ ์ €์žฅ๊ณต๊ฐ„ ํ•„์š”
2. ์ฐพ๋Š” ๊ฐ’์ด ์ขŒ์ธก์— ์žˆ์„ ์ˆ˜๋ก, ๊นŠ์€ ๋‹จ๊ณ„์— ์žˆ์„ ์ˆ˜๋ก ์œ ๋ฆฌ
1. ์ตœ๋‹จ ๊ฒฝ๋กœ ๋ณด์žฅ
2. ๋…ธ๋“œ ์ˆ˜๊ฐ€ ์ ๊ณ  ๊นŠ์ด๊ฐ€ ์–•์€ ๊ฐ’์„ ์ฐพ์„ ๋•Œ ์œ ๋ฆฌํ•จ
๋‹จ์ 1. ์ตœ๋‹จ ๊ฒฝ๋กœ ๋ณด์žฅx
2. ๋‹ต์ด ์—†๋Š” ๊ฒฝ๋กœ์— ๊นŠ์ด ๋น ์งˆ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Œ
1. ๋…ธ๋“œ์˜ ์ˆ˜๊ฐ€ ๋งŽ์„ ์ˆ˜๋ก ํƒ์ƒ‰ํ•ด์•ผํ•  ๋…ธ๋“œ๊ฐ€ ๋งŽ์•„์ง(๋น„ํšจ์œจ์ )
2. Queue๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋‹ค์Œ์— ํƒ์ƒ‰ํ•  ๋…ธ๋“œ๋“ค์„ ์ €์žฅ->๋…ธ๋“œ์˜ ์ˆ˜๊ฐ€ ๋งŽ์„ ์ˆ˜๋ก ๋” ํฐ ์ €์žฅ๊ณต๊ฐ„ ํ•„์š”
์‚ฌ์šฉ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธ ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ
๊ตฌํ˜„ ๋ฐฉ๋ฒ•Stack / ์žฌ๊ท€Queue

  • ๊ทธ๋ž˜ํ”„๊ฐ€ ๊ต‰์žฅํžˆ ํฌ๋‹ค๋ฉด? => DFS

  • ๊ทธ๋ž˜ํ”„์˜ ๊ทœ๋ชจ๊ฐ€ ์ž‘๊ณ , depth๊ฐ€ ์–•๋‹ค๋ฉด? => BFS




Reference: ์ฝ”๋“œ์Šคํ…Œ์ด์ธ 

0๊ฐœ์˜ ๋Œ“๊ธ€