๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm๐Ÿ’ป/study

[Algorithm] DFS, BFS

by ๊ธฐ๋ฉฐ๋ˆ… 2022. 11. 15.

DFS (Depth-First-Search)

๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰์ด๋ผ๊ณ ๋„ ๋ถ€๋ฅด๋ฉฐ, ๊ทธ๋ž˜ํ”„์—์„œ ๊นŠ์€ ๋ถ€๋ถ„์„ ์šฐ์„ ์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋งํ•œ๋‹ค.

์Šคํƒ ์ž๋ฃŒ ๊ตฌ์กฐ(ํ˜น์€ ์žฌ๊ท€ ํ•จ์ˆ˜)๋ฅผ ์ด์šฉํ•œ๋‹ค.

1. ํƒ์ƒ‰ ์‹œ์ž‘ ๋…ธ๋“œ๋ฅผ ์Šคํƒ์— ์‚ฝ์ž…ํ•˜๊ณ  ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌ๋ฅผ ํ•œ๋‹ค.

2. ์Šคํƒ์˜ ์ตœ์ƒ๋‹จ ๋…ธ๋“œ์— ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ธ์ ‘ํ•œ ๋…ธ๋“œ๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ์žˆ๋‹ค๋ฉด ๊ทธ ๋…ธ๋“œ๋ฅผ ์Šคํƒ์— ๋„ฃ๊ณ  ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌํ•œ๋‹ค. ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ธ์ ‘ ๋…ธ๋“œ๊ฐ€ ์—†๋‹ค๋ฉด ์ตœ์ƒ๋‹จ ๋…ธ๋“œ๋ฅผ ๊บผ๋‚ธ๋‹ค.

3. ๋” ์ด์ƒ 2๋ฒˆ์˜ ๊ณผ์ •์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

DFS ๋™์ž‘ ์˜ˆ์‹œ

[Step 0] ๊ทธ๋ž˜ํ”„ ์ค€๋น„ (๋ฐฉ๋ฌธ ๊ธฐ์ค€ : ๋ฒˆํ˜ธ๊ฐ€ ๋‚ฎ์€ ์ธ์ ‘ ๋…ธ๋“œ๋ถ€ํ„ฐ)

  • ์‹œ์ž‘ ๋…ธ๋“œ : 1

 

 

[Step 1] ์‹œ์ž‘ ๋…ธ๋“œ์ธ '1'์„ ์Šคํƒ์— ์‚ฝ์ž…ํ•˜๊ณ  ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌํ•œ๋‹ค.

 

 

[Step 2] ์Šคํƒ์˜ ์ตœ์ƒ๋‹จ ๋…ธ๋“œ์ธ '1'์— ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ธ์ ‘ ๋…ธ๋“œ '2','3','8'์ด ์žˆ๋‹ค.

  • ์ด ์ค‘์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๋…ธ๋“œ์ธ '2'๋ฅผ ์Šคํƒ์— ๋„ฃ๊ณ  ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌํ•œ๋‹ค.

 

 

[Step 3] ์Šคํƒ์˜ ์ตœ์ƒ๋‹จ ๋…ธ๋“œ์ธ '2'์— ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ธ์ ‘ ๋…ธ๋“œ '7'์ด ์žˆ๋‹ค.

  • ๋”ฐ๋ผ์„œ '7'๋ฒˆ ๋…ธ๋“œ๋ฅผ ์Šคํƒ์— ๋„ฃ๊ณ  ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌํ•œ๋‹ค.

 

 

[Step 4] ์Šคํƒ์˜ ์ตœ์ƒ๋‹จ ๋…ธ๋“œ์ธ '7'์— ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ธ์ ‘ ๋…ธ๋“œ '6','8'์ด ์žˆ๋‹ค.

  • ์ด ์ค‘์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๋…ธ๋“œ์ธ '6'์„ ์Šคํƒ์— ๋„ฃ๊ณ  ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌํ•œ๋‹ค.

 

 

[Step 5] ์Šคํƒ์˜ ์ตœ์ƒ๋‹จ ๋…ธ๋“œ์ธ '6'์— ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ธ์ ‘ ๋…ธ๋“œ๊ฐ€ ์—†๋‹ค.

  • ๋”ฐ๋ผ์„œ ์Šคํƒ์—์„œ '6'๋ฒˆ ๋…ธ๋“œ๋ฅผ ๊บผ๋‚ธ๋‹ค.

 

 

[Step 6] ์Šคํƒ์˜ ์ตœ์ƒ๋‹จ ๋…ธ๋“œ์ธ '7'์— ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ธ์ ‘ ๋…ธ๋“œ '8'์ด ์žˆ๋‹ค.

  • ๋”ฐ๋ผ์„œ '8'๋ฒˆ ๋…ธ๋“œ๋ฅผ ์Šคํƒ์— ๋„ฃ๊ณ  ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌํ•œ๋‹ค.

 

 

[๊ฒฐ๊ณผ]

์ด๋Ÿฌํ•œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ–ˆ์„ ๋•Œ, ์ „์ฒด ๋…ธ๋“œ์˜ ํƒ์ƒ‰ ์ˆœ์„œ(์Šคํƒ์— ๋“ค์–ด๊ฐ„ ์ˆœ์„œ)๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

1 -> 2 -> 7 -> 6 -> 8 -> 3 -> 4 -> 5

BFS (Breadth-First-Search)

๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰์ด๋ผ๊ณ ๋„ ๋ถ€๋ฅด๋ฉฐ, ๊ทธ๋ž˜ํ”„์—์„œ ๊ฐ€๊นŒ์šด ๋…ธ๋“œ๋ฅผ ์šฐ์„ ์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋งํ•œ๋‹ค.

ํ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•œ๋‹ค.

1. ํƒ์ƒ‰ ์‹œ์ž‘ ๋…ธ๋“œ๋ฅผ ํ์— ์‚ฝ์ž…ํ•˜๊ณ  ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌํ•œ๋‹ค.

2. ํ์—์„œ ๋…ธ๋“œ๋ฅผ ๊บผ๋‚ธ ๋’ค์— ํ•ด๋‹น ๋…ธ๋“œ์˜ ์ธ์ ‘ ๋…ธ๋“œ ์ค‘์—์„œ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๋…ธ๋“œ๋ฅผ ๋ชจ๋‘ ํ์— ์‚ฝ์ž…ํ•˜๊ณ  ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌํ•œ๋‹ค.

3. ๋” ์ด์ƒ 2๋ฒˆ์˜ ๊ณผ์ •์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

BFS ๋™์ž‘ ์˜ˆ์‹œ

[Step 0] ๊ทธ๋ž˜ํ”„ ์ค€๋น„ (๋ฐฉ๋ฌธ ๊ธฐ์ค€: ๋ฒˆํ˜ธ๊ฐ€ ๋‚ฎ์€ ์ธ์ ‘ ๋…ธ๋“œ๋ถ€ํ„ฐ)

  • ์‹œ์ž‘ ๋…ธ๋“œ : 1

 

 

[Step 1] ์‹œ์ž‘ ๋…ธ๋“œ์ธ '1'์„ ํ์— ์‚ฝ์ž…ํ•˜๊ณ  ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌํ•œ๋‹ค.

 

 

[Step 2] ํ์—์„œ ๋…ธ๋“œ '1'์„ ๊บผ๋‚ด ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ธ์ ‘ ๋…ธ๋“œ '2','3','8'์„ ํ์— ์‚ฝ์ž…ํ•˜๊ณ  ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌํ•œ๋‹ค.

 

 

[Step 3] ํ์—์„œ ๋…ธ๋“œ '2'๋ฅผ ๊บผ๋‚ด ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ธ์ ‘ ๋…ธ๋“œ '7'์„ ํ์— ์‚ฝ์ž…ํ•˜๊ณ  ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌํ•œ๋‹ค.

 

 

[Step 4] ํ์—์„œ ๋…ธ๋“œ '3'์„ ๊บผ๋‚ด ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ธ์ ‘ ๋…ธ๋“œ '4','5'๋ฅผ ํ์— ์‚ฝ์ž…ํ•˜๊ณ  ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌํ•œ๋‹ค.

 

 

[Step 5] ํ์—์„œ ๋…ธ๋“œ '8'์„ ๊บผ๋‚ด ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ธ์ ‘ ๋…ธ๋“œ๊ฐ€ ์—†์œผ๋ฏ€๋กœ ๋ฌด์‹œํ•œ๋‹ค.

 

 

[๊ฒฐ๊ณผ]

์ด๋Ÿฌํ•œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ–ˆ์„ ๋•Œ, ์ „์ฒด ๋…ธ๋“œ์˜ ํƒ์ƒ‰ ์ˆœ์„œ(ํ์— ๋“ค์–ด๊ฐ„ ์ˆœ์„œ)๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

1 -> 2 -> 3 -> 8 -> 7 -> 4 -> 5 -> 6

'Algorithm๐Ÿ’ป > study' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Algorithm] ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ  (0) 2022.11.11