#1 ์ฐจ์ด์ ํต์ฌ: ๋๊ธฐ์ด
BFS์ DFS, ๋ ํ์ ๊ธฐ๋ฒ์ ์ฐจ์ด๋ฅผ ๊ฒฐ์ ์ง๋ ํต์ฌ์ '๋๊ธฐ์ด' ๊ด๋ฆฌ๋ค. ์ฌ๊ธฐ์ ๋งํ๋ ๋๊ธฐ์ด์ ์์ด๋ก๋ Frontier๋ผ๊ณ ๋ ํ๋ค. ๋๊ธฐ์ด์ด๋ ๋ฌด์์ธ๊ฐ? "๋ค์์ ๊ฐ ์ ์๋ ๊ณณ๋ค์ ๋ชฉ๋ก"์ด๋ค. ์ด ๋๊ธฐ์ด์ ๊ด๋ฆฌํ๋ ๋ฐฉ์์ ์ฐจ์ด๊ฐ ๊ณง BFS ๋ฐ DFS ๊ฐ์ ์ฐจ์ด๋ค.
| BFS | DFS | |
| ๋ํ ์๋ฃ ๊ตฌ์กฐ | Queue | Stack |
| ์๋ฃ ๊ตฌ์กฐ์ ์ฑ์ง | FIFO = ๊ฐ์ฅ ์ค๋ ์ ๋ค์ด์จ ๊ฒ์ ๊บผ๋ |
LIFO = ๊ฐ์ฅ ์ต๊ทผ ๋ค์ด์จ ๊ฒ์ ๊บผ๋ |
| ์ฑ์ง์ ์๋ฏธ(Meaning) | ๋ฐ๊ฒฌ ์์๋ฅผ ๋ณด์กด | ๋ฐ๊ฒฌ ์์๋ฅผ ๋ฐ์ |
| ์๋ฏธ(Meaning)์์ ํ์๋๋ ๊ฒฐ๊ณผ 1 | ๋ถ๋ชจ ์ชฝ ์ฒ๋ฆฌ๊ฐ ๋จผ์ ํ์ (๋๋จ) | ์์ ์ชฝ ์ฒ๋ฆฌ๊ฐ ๋จผ์ ํ์ (๋๋จ) |
| ์๋ฏธ(Meaning)์์ ํ์๋๋ ๊ฒฐ๊ณผ 2 | ๋๊ธฐ์ด์ (๋์ฒด๋ก) ๊ฐ์ ์ธต์ ํ์ ๋ค์ด ๋ด๊น | ๋๊ธฐ์ด์ (๋์ฒด๋ก) ์กฐ์๋ค์ด ๋ด๊น |
#2 ์ด๋ป๊ฒ ํ๋จํ๋๊ฐ?
| BFS | DFS | |
| ์ผ๋ฐ์ ์ธ ํ๋จ | ๋ต์ด ์์์ ์ผ๋ก๋ถํฐ์ ๊ฑฐ๋ฆฌ์ ์์กดํ ๋ | ๋ต์ด ํ์ ๊ตฌ์กฐ์ ์์กดํ ๋ |
| ์์(์ฌ๋ก) | ์ต๋จ ๊ฑฐ๋ฆฌ | ์๋ธํธ๋ฆฌ ํฌ๊ธฐ(ํฉ) ์ฐ๊ฒฐ ์์ ํฌ๊ธฐ ์ธ๊ธฐ ์์ ์ ๋ ฌ ์ฌ์ดํด ํ์ง ๋ฐฑํธ๋ํน (๊ฒฝ๋ก๋ฅผ ์์๋ค๊ฐ ๋๋๋ ค์ผ ํ๋ฏ๋ก Stack ๊ตฌ์กฐ๊ฐ ํ์) |
| (์) ๋ชปํ๋ ๊ฒ | ํ์ ์ง๊ณ (๋ถ๋ชจ๊ฐ ๋จผ์ ๋์ค๋ฏ๋ก) | ์ต๋จ ๊ฑฐ๋ฆฌ (์ฒซ ๋ฐ๊ฒฌ์ด ์ต์ ํด๊ฐ ์๋๋ฏ๋ก) |
| (์ผ๋ฐ์ ์ผ๋ก) ๋ ์ค ์๋ฌด๊ฑฐ๋ ์จ๋ ๋ ๋ |
ํน์ ์ ์ ์ ๋ฟ๋ ์ง์ ์ฌ๋ถ๋ง์ ์ฐธ์กฐ "๋ฐฉ๋ฌธํ์" ํ์ ๋จ๊ธฐ๊ธฐ ๋ถ๋ชจ-์์ ๊ด๊ณ ๋ผ๋ฒจ๋ง |
|
#3 ํํ๊ฐ ์๋ ๊ธฐ๋ฅ์ ๋ด์ผ ํ๋ค.
BFS๋ DFS๋๋ ์ปดํ์ผ ์์ ์ (์ด๋ช ๋ก ์ ์ผ๋ก) ๊ฒฐ์ ๋๋ค. ์๋ํ๋ฉด ๋๊ธฐ์ด ๊ตฌ์กฐ๋ฅผ ๊ฒฐ์ ํ๋ ์๊ฐ์ด ์ปดํ์ผ ์์ ์ด๊ธฐ ๋๋ฌธ์ด๋ค. ์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ ํจ์ ์ ๊ฑธ๋ฆฌ๊ณ ๋ง๋ค. ์๋ ์ฝ๋๋ฅผ ๋ณด์.
fun looksLikeBfs(startVertex: MyVertex) {
val queue = ArrayDeque<MyVertex>()
queue.add(startVertex)
while (!queue.isEmpty()) {
val vertex = queue.removeFirst()
// TODO
}
}
์ด ์ฝ๋๋ BFS์ผ๊น DFS์ผ๊น? ๊ฒ๋ณด๊ธฐ์ BFS๋ค. ํ์ง๋ง ๋ต์, "๋ชจ๋ฅธ๋ค"๋ค. TODO ๋ถ๋ถ์ ์ด๋ค ์ฝ๋๊ฐ ๋ค์ด์ค๋์ ๋ฐ๋ผ, ์ด BFS์ฒ๋ผ ๋ณด์ด๋ ์ฝ๋๊ฐ ์ค์ ๋ก DFS ๋ฐฉ์์ผ๋ก ๋์ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ฆ, ๊ป๋ผ๊ธฐ ๋ชจ์๋ง์ผ๋ก ํ๋จํด์ ์ ๋๋ค. ์ด ๊ฒ์๊ธ์์ ๊ตฌ์ฒด์ ์ฌ๋ก๋ฅผ ๋ค๋ฃฌ๋ค.
#4 ์์ฝ
BFS๋ ๋ฐ๊ฒฌ ์์๋ฅผ ๋ณด์กดํ๊ณ , DFS๋ ๋ฐ๊ฒฌ ์์๋ฅผ ๋ฐ์ ์ํจ๋ค.
'๊นจ์ ๊ฐ๋ ๐ > ์๊ณ ๋ฆฌ์ฆ (์ฝ๋ฉ ํ ์คํธ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ, ์ต๋๊ณต์ฝ์(GCD), ์ต์๊ณต๋ฐฐ์(LCM) (0) | 2026.07.31 |
|---|---|
| ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ (Greedy Algorithm, ํ์๋ฒ) (0) | 2024.10.30 |
| ๊ทธ๋ํ - ๊น์ด ์ฐ์ ํ์ (DFS, Depth-First Search), ๋ฐฑํธ๋ํน (Backtracking) (0) | 2024.09.23 |
| ๊ทธ๋ํ - ๋๋น ์ฐ์ ํ์ (BFS, Breadth-First Search) (0) | 2024.09.23 |
| ๊ทธ๋ํ - ๊ทธ๋ํ์ ์ข ๋ฅ์ ํํ (0) | 2024.01.09 |