๊ฒน์น๋ ํ์ ๋ฌธ์ (Subproblem)๋ฅผ ํด๊ฒฐํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํด ๋๊ฐ๋ ๋ฐฉ์์ผ๋ก ์ต์ ํ
๋ฌธ์ ๋ค ํน์ง
1. ์์ ํ์๋ฌธ์ ๋ค์ด ๋ฐ๋ณต์ ์ผ๋ก ๋ฐ์ํ๋ฉฐ, ์ด๋ค์ ํด๊ฒฐ ๊ฒฐ๊ณผ๊ฐ ์ฌํ์ฉ๋ ์ ์์ ๋
2. Optimal Substructure(์ต์ ๋ถ๋ถ๊ตฌ์กฐ)์ ๊ฐ์ถ ๋ฌธ์ . ํฐ ๋ฌธ์ ์ ์ต์ ํด๊ฐ ์์ ๋ฌธ์ ์ ์ต์ ํด๋ฅผ ํตํด ๊ตฌํ ์ ์์ ๋
3. ์ค๋ณต๋ ๊ณ์ฐ์ ์ต์ํํ ์ ์๋ ๊ตฌ์กฐ. ๊ฐ์ ํ์ ๋ฌธ์ ๋ฅผ ๋ฐ๋ณตํด์ ํด๊ฒฐํด์ผ ํ ๋
ํ์๋ฌธ์ ๊ฐ ๋
๋ฆฝ์ , ์ค์ฌ๊ฐ๋ฉด์ ํด๊ฒฐ -> Divide & Conquer
ํ์๋ฌธ์ ๊ฐ ์ค์ฒฉ๋จ, ๋ฐ๋ณตํด์ผ ํจ -> Dynamic Programming
DP๋ก ํด๊ฒฐํ๋ ๋ํ์ ์ธ ๋ฌธ์ ๋ค
- longest common subsequence
- Knapsack problem
- Rod cutting problem
- shortest common supersequence
Top-down vs Bottom-up
1. Top-down ๋ฐฉ์ (๋ฉ๋ชจ์ด์ ์ด์
)
Top-down ๋ฐฉ์์ ์ฌ๊ท์ ๊ตฌ์กฐ๋ฅผ ํ์ฉํ๋ฉฐ, ํฐ ๋ฌธ์ ๋ฅผ ์์ ๋ฌธ์ ๋ก ๋๋์ด ํด๊ฒฐ.
์ด ๋ฐฉ๋ฒ์ "๋ฉ๋ชจ์ด์ ์ด์
"(caching)์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ ๊ณ์ฐ๋ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๊ณ , ํ์ํ ๋ ์ฌ์ฌ์ฉ.
- ํน์ง
- ์ฌ๊ท์ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉ, ์ฝ๋๊ฐ ์ง๊ด์
- ํ์ํ ๋ถ๋ถ๋ง ๊ณ์ฐํ๊ณ , ๊ณ์ฐํ์ง ์์ ๋ถ๋ถ์ ํธ์ถ๋์ง ์์
- ์ค๋ณต ๊ณ์ฐ์ ํผํ๊ธฐ ์ํด ๋ฉ๋ชจ๋ฆฌ์ ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅ
- ๋จ์
- ์ฌ๊ท ํธ์ถ์ ์ค๋ฒํค๋๊ฐ ์์ด ๋นํจ์จ์ ์ผ ์ ์๋ค
- ์์คํ
์ ๋ฐ๋ผ ์ฌ๊ท ํธ์ถ ๊น์ด๊ฐ ์ ํ๋์ด ์์ด, ๋งค์ฐ ๊น์ ์ฌ๊ท ํธ์ถ์ด ํ์ํ ๊ฒฝ์ฐ ์คํ ์ค๋ฒํ๋ก์ฐ๋ฅผ ์ผ์ผํฌ ์ ์๋ค.
2. Bottom-up ๋ฐฉ์
Bottom-up ๋ฐฉ์์ ์์ ๋ฌธ์ ๋ถํฐ ์์ํ์ฌ ์ ์ฐจ์ ์ผ๋ก ํฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด ๋๊ฐ๋ ๋ฐฉ์.
์ด ๋ฐฉ๋ฒ์ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์ฌ ๊ตฌํ๋๋ฉฐ, ๋ชจ๋ ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ํ
์ด๋ธ(์ผ๋ฐ์ ์ผ๋ก ๋ฐฐ์ด)์ ์ ์ฅ.
- ํน์ง
- ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์ฌ ๊ตฌํ๋๋ฏ๋ก, ์ฌ๊ท ํธ์ถ์ ์ค๋ฒํค๋๊ฐ ์๋ค.
- ๋ฌธ์ ๋ฅผ ์์ ๋ถ๋ถ๋ถํฐ ์ฐจ๋ก๋๋ก ํด๊ฒฐํ๊ธฐ ๋๋ฌธ์, ๋ชจ๋ ์ค๊ฐ ๊ฒฐ๊ณผ๋ฅผ ๊ณ์ฐํ๊ณ ์ ์ฅ
- ํ
์ด๋ธ์ ์ฌ์ฉํ์ฌ ๊ฐ ๋จ๊ณ์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋ฏ๋ก, ์ฌ๊ท์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ณด๋ค ์ผ๋ฐ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๋ ๋ง์ ์ ์๋ค
- ๋จ์
- ๋ชจ๋ ์ค๊ฐ ๊ฒฐ๊ณผ๋ฅผ ๊ณ์ฐํ๊ธฐ ๋๋ฌธ์ ํ์ํ์ง ์์ ๊ณ์ฐ์ด ํฌํจ๋ ์ ์๋ค
- ์ฝ๋๊ฐ ๋ฐ๋ณต๋ฌธ์ ์์กดํ๋ฏ๋ก, ๋๋ก๋ ๊ตฌํ์ด ๋ ๋ณต์กํ๊ฑฐ๋ ์ง๊ด์ ์ด์ง ์์ ์ ์๋ค
๋น๊ต
- ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ: Top-down์ ํ์ํ ๋ถ๋ถ๋ง ๊ณ์ฐํ๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฝํ ์ ์์ง๋ง, Bottom-up์ ๋ชจ๋ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํ ์ ์๋ค.
- ์ฑ๋ฅ: Bottom-up์ ์ฌ๊ท ํธ์ถ์ ์ค๋ฒํค๋๊ฐ ์์ด ๋์ฒด๋ก ๋ ๋น ๋ฅธ ์ฑ๋ฅ์ ๋ณด์ผ ์ ์๋ค. Top-down์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ์ง๋ง ์ฌ๊ท์ ์ค๋ฒํค๋๋ก ์ธํด ๋๋ฆด ์ ์๋ค.
- ๊ตฌํ์ ๋ณต์ก์ฑ: Top-down์ ์ฌ๊ท๋ก ์ธํด ์ฝ๋๊ฐ ๋ ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ผ ์ ์์ง๋ง, Bottom-up์ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์ฌ ์ฝ๊ฐ ๋ ๋ณต์กํ๊ฑฐ๋ ๊ตฌํํ๊ธฐ ์ด๋ ค์ธ ์ ์๋ค.