FIFO Queue ๊ธฐ๋ฐ BFS ๋์ ์ ํตํ Unweighted Graph ์ต๋จ ๊ฒฝ๋ก ๋ณด์ฅ ๋ฐ Stack Overflow ํด๊ฒฐ
๐ BFS: The Jedi Mind Trick for Graph Traversal (Why Itโs More Than Just a Queue)
AI ์์ฝ
Context
Unweighted Graph ํ๊ฒฝ์์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ํ์ํ ๋ Naive DFS ์ฑํ ์ ๋ฐ์ํ๋ ๋ฌดํ ๋ฃจํ์ ์ง์์ ์๊ฐ ๋ณต์ก๋ ๋ฌธ์ ๋ถ์. ํนํ ๋๊ท๋ชจ Grid ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ ์ฌ๊ท ํธ์ถ๋ก ์ธํ Call Stack Overflow ์ํ์ฑ ์กด์ฌ.
Technical Solution
- FIFO Queue ๊ตฌ์กฐ๋ฅผ ํ์ฉํ Layer-by-layer ํ์์ผ๋ก ์์์ ์ผ๋ก๋ถํฐ ๋์ผ ๊ฑฐ๋ฆฌ์ ๋ ธ๋๋ฅผ ์์ฐจ์ ์ผ๋ก ๋ฐฉ๋ฌธํ๋ ๊ตฌ์กฐ ์ค๊ณ
- ๋ฐฉ๋ฌธ ๋ ธ๋์ ๋ํ Visited Set ๊ด๋ฆฌ๋ก ์ค๋ณต ๋ฐฉ๋ฌธ์ ์ฐจ๋จํ์ฌ ์ํ ๊ทธ๋ํ ๋ด ๋ฌดํ ๋ฃจํ ๋ฐฉ์ง ๋ฐ $O(V+E)$ ์๊ฐ ๋ณต์ก๋ ๋ฌ์ฑ
- ์ฌ๊ท ๊ธฐ๋ฐ์ DFS ๋์ Iterative Queue ๋ฐฉ์์ ๋์ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์คํ ์ ์ฝ ์๋ ์์ ์ ์ธ Grid ํ์ ํ๊ฒฝ ๊ตฌ์ถ
- ์ํ ๊ธฐ๋ฐ ํ์(State-based Search)์ผ๋ก ํ์ฅํ์ฌ ํน์ ์กฐ๊ฑด(์: ์ฅ์ ๋ฌผ ์ ๊ฑฐ ํ์)์ด ํฌํจ๋ ์ต๋จ ๊ฒฝ๋ก ๋ฌธ์ ํด๊ฒฐ ๊ฐ๋ฅ์ฑ ํ๋ณด
- Word Ladder ๋ฌธ์ ์ ๊ฐ์ด ๋จ์ด ๊ฐ ๋ณํ ๋จ๊ณ๋ฅผ Edge๋ก ์ ์ํ Graph ๋ชจ๋ธ๋ง์ ํตํ ์ต๋จ ๋ณํ ์ํ์ค ๋์ถ
์ค์ฒ ํฌ์ธํธ
- ๊ฐ์ค์น ์๋ ๊ทธ๋ํ์์ '์ต์ ๋จ๊ณ' ๋๋ '์ต๋จ ๊ฒฝ๋ก' ์๊ตฌ ์ BFS ์ฐ์ ๊ณ ๋ ค - ๋๊ท๋ชจ Grid ํ์ ์ Call Stack ํ๊ณ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ฌ๊ท DFS๋ณด๋ค Iterative BFS ์ฑํ ๊ฒํ - Queue์ ๋ ธ๋๋ฅผ Pushํ๋ ์ฆ์ Visited ๋งํน์ ์ํํ์ฌ ์ค๋ณต ํ์์ผ๋ก ์ธํ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น ๋ฐ ์ฑ๋ฅ ์ ํ ๋ฐฉ์ง - ๋ฌธ์ ์ ์ ์ ๋ ธ๋์ ์์ง์ ๊ด๊ณ๋ฅผ ๋ช ํํ ๋ชจ๋ธ๋งํ์ฌ ํ์ ๊ณต๊ฐ์ ์ต์ ํ ์ํ