DFS์ BFS
Last updated
๋ง์ ์์ ๋ฐ์ดํฐ ์ค ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋ ๊ณผ์
๋ฅผ ์ฐธ์กฐ
์๊ธฐ ์์ ์ ํธ์ถํ๋ ํจ์. ์ํ์ ์ ํ์์ ์ฝ๋ํํ ๊ฒ
์ ํ์: ํน์ ํจ์๋ฅผ ์๊ธฐ๋ณด๋ค ๋ ์์ ๋ณ์์ ํจ์์ ๊ด๊ณ๋ก ํํํ ๊ฒ
์ฌ๊ท ํจ์๋ ์ ์ ์์์ง๋ ์๊ธฐ ์์
+ ์ข
๋ฃ ์กฐ๊ฑด
์ ํตํด ๋์ํ๋ค.
vertex(์ ์ )๊ณผ edge(๊ฐ์ )์ผ๋ก ์ด๋ฃจ์ด์ง ์๋ฃ๊ตฌ์กฐ
ํ๋ก๊ทธ๋๋ฐ์์ ์ด๋ฅผ ํํํ๋ ๋ฐฉ์์ผ๋ก๋ ์ธ์ ํ๋ ฌ
๊ณผ ์ธ์ ๋ฆฌ์คํธ
๊ฐ ์๋ค.
2์ฐจ์ ๋ฐฐ์ด๋ก ๊ทธ๋ํ์ ์ฐ๊ฒฐ ๊ด๊ณ๋ฅผ ํํํ ๊ฒ
์ฐ๊ฒฐ ๋ฆฌ์คํธ ์๋ฃ๊ตฌ์กฐ๋ก ๊ทธ๋ํ์ ์ฐ๊ฒฐ ๊ด๊ณ ํํ
์ธ์ ํ๋ ฌ
์ฅ์ : ๋ ๋ ธ๋ ๊ฐ ์ฐ๊ฒฐ ์ฌ๋ถ ํ์ธ์ด ์ฝ๊ณ ์ ๋ณด๋ฅผ ์ป๋ ์๋๊ฐ ๋น ๋ฆ
๋จ์ : ๋ถํ์ํ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น
์ธ์ ๋ฆฌ์คํธ
์ฅ์ : ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉ (์๊ธฐ ์์ ๊ณผ์ ๊ด๊ณ ์ ์ฅ X, ํ์ํ ๋ ธ๋์ ๊ด๊ณ๋ง ์ ์ฅ)
๋จ์ : ์ฐ๊ฒฐ ์ฌ๋ถ ํ์ธ์ ์ํด ์ํ๋ฅผ ํด์ผ ํ๋ค. (์ ๋ณด ์ป๋ ์๋ ๋๋ฆผ)
๋ฐ๋ผ์ ๋ ธ๋์ ๊ฐ์์ ๋นํด ๊ฐ์ ์ด ํ์ฐํ ์ ์ ๋(sparse graph)์๋ ์ธ์ ๋ฆฌ์คํธ, ์๋ ๊ฒฝ์ฐ์๋ ์ธ์ ํ๋ ฌ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
๋ ์ด์ ๋ฐฉ๋ฌธํ์ง ์์ ๋ ธ๋๊ฐ ์์ ๋๊น์ง ์ธ์ ๋ ธ๋๋ฅผ ์ ํํ์ฌ ํ์ํ๋ ๋ฐฉ์
์ธ์ ๋ ธ๋๊ฐ์๋ ์ ํด์ง ์ฐ์ ์์๊ฐ ์์ง๋ ์์ผ๋ ๋ณดํต ํฌ๊ธฐ๊ฐ ์์ ์์๋๋ก ํ์
์คํ๊ณผ ์ฌ๊ทํจ์๋ฅผ ์ด์ฉํ์ฌ ๊ตฌํํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค.
๋ฐฉ๋ฌธํ ๋ ธ๋, ์ธ์ ํ ๋ ธ๋๋ฅผ ์คํ์ ์ถ๊ฐํ๊ณ ์ธ์ ๋ ธ๋ ์ค ๋ฏธ๋ฐฉ๋ฌธ์ธ ๋ ธ๋๊ฐ ์์ ์ ๊บผ๋ธ๋ค.
๋๋ ๊ฐ์ค์น๊ฐ ์๋ ๊ฒฝ์ฐ ์ธ์ ํ๋ ฌ
์, ์๋ ๊ฒฝ์ฐ ์ธ์ ๋ฆฌ์คํธ
๋ฅผ ์ด์ฉํ๋ค.
dfs ํจ์(๊ณง ๋ฐ๋ณต๋ฌธ)๋ ์ ์ ์ ๊ฐ์๋งํผ ํธ์ถ๋๊ณ , ๋ฐ๋ณต๋ฌธ์ graph[v] == ๊ฐ์ ์ ๊ฐ์๋งํผ ์ํํ๋ฏ๋ก ์ธ์ ํ๋ ฌ์ ๊ฒฝ์ฐ O(V + E)
, ์ธ์ ๊ทธ๋ํ์ ๊ฒฝ์ฐ O(V^2)
์ด๋ค.
์ธ์ ๋ ธ๋๋ฅผ ๋ชจ๋ ๋ฐฉ๋ฌธํ ๋ค ๊ทธ ์ค ๊ฐ์ฅ ๋จผ์ ๋ฐฉ๋ฌธํ ์ธ์ ๋ ธ๋์ ์ธ์ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๋ ๋ฐฉ์
ํ๋ฅผ ์ด์ฉํ์ฌ ๊ตฌํํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค.
ํ์์ ๊บผ๋ธ ๋ ธ๋์ ์ธ์ ๋ ธ๋๋ฅผ ์ํํ๋ฉฐ ๋ฏธ๋ฐฉ๋ฌธ๋ ๋ ธ๋๋ฅผ ํ์ ๋ฃ๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ๊ฐ์ค์น๊ฐ ์๋ ๊ฒฝ์ฐ ์ธ์ ํ๋ ฌ
์, ์๋ ๊ฒฝ์ฐ ์ธ์ ๋ฆฌ์คํธ
๋ฅผ ์ด์ฉํ๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ๋ฐ๋ณต๋ฌธ์ ๋
ธ๋์ ๊ฐ์๋งํผ, ์ํ ํ์๋ ๊ฐ์ ์ ์๋งํผ์ด๋ฏ๋ก O(V+E)
๋๋ O(V^2
์ด์ง๋ง DFS๋ณด๋ค ์กฐ๊ธ ๋ ๋น ๋ฅด๋ค๊ณ ํ๋ค.