๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿฅด์•Œ๊ณ ๋ฆฌ์ฆ˜/์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ด๋ก 

[์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ด๋ก ] DFS, BFS (1)

๐ŸŒ€ ๊ทธ๋ž˜ํ”„ ๐ŸŒ€

ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๊ทธ๋ž˜ํ”„๋Š” ํฌ๊ฒŒ 2๊ฐ€์ง€๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Œ.

1. ์ธ์ ‘ํ–‰๋ ฌ : 2์ฐจ์› ๋ฐฐ์—ด๋กœ ๊ทธ๋ž˜ํ”„๋ฅผ ํ‘œํ˜„

2. ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ : ๋ฆฌ์ŠคํŠธ๋กœ ๊ทธ๋ž˜ํ”„๋ฅผ ํ‘œํ˜„

graph

#์ธ์ ‘ํ–‰๋ ฌ ๋ฐฉ์‹
INF = 999999999

graph = [
    [0, 7, 5],
    [7, 0, INF],
    [5, INF, 0]
]   

#์ธ์ ‘๋ฆฌ์ŠคํŠธ ๋ฐฉ์‹
graph2 = [[] for i in range(3)]

#๋…ธ๋“œ 0์— ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ์ •๋ณด
graph2[0].append((1, 7))
graph2[0].append((2, 5))
    
#๋…ธ๋“œ 1์— ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ์ •๋ณด
graph2[1].append((0,7))
#๋…ธ๋“œ 2..
graph2[2].append((0,5))

๐ŸŒ€ DFS ๐ŸŒ€

Depth-First-Search, ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰

๊ทธ๋ž˜ํ”„์—์„œ ๊นŠ์€ ๋ถ€๋ถ„์„ ๋จผ์ € ํƒ์ƒ‰ํ•œ๋‹ค. ๊ทธ๋ž˜ํ”„๋Š” ๋…ธ๋“œ(=์ •์ , vertex)์™€ ๊ฐ„์„ (edge)์œผ๋กœ ์ด๋ฃจ์–ด์ง.

 

โšก๏ธDFS ๋™์ž‘๊ณผ์ •

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

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

    ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ธ์ ‘๋…ธ๋“œ๊ฐ€ ์—†์œผ๋ฉด ์Šคํƒ์—์„œ ์ตœ์ƒ๋‹จ ๋…ธ๋“œ๋ฅผ ๊บผ๋ƒ„

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

๐ŸŒ€ BFS ๐ŸŒ€

Breadth-First-Search, ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰

๊ฐ€๊นŒ์šด ๋…ธ๋“œ๋ถ€ํ„ฐ ํƒ์ƒ‰ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

 

โšก๏ธBFS ๋™์ž‘๊ณผ์ •

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

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

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