๐Ÿค– Computer Science/Algorithm

๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ (Dynamic Programming, DP)

yesolz 2024. 4. 30. 16:56
728x90

๊ฒน์น˜๋Š” ํ•˜์œ„ ๋ฌธ์ œ(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์€ ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ฝ๊ฐ„ ๋” ๋ณต์žกํ•˜๊ฑฐ๋‚˜ ๊ตฌํ˜„ํ•˜๊ธฐ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๋‹ค.

728x90