๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅ Computer Science/Algorithm

[Algorithm] ๋™์  ๊ณ„ํš๋ฒ•(Dynamic Programming)์ด๋ž€?

by Fomagran ๐Ÿ’ป 2021. 12. 9.
728x90
๋ฐ˜์‘ํ˜•

 

์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค!

 

๊ทธ ๋™์•ˆ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ๋™์  ๊ณ„ํš๋ฒ• ๊ด€๋ จ๋œ ๋ฌธ์ œ๊ฐ€ ๋‚˜์˜ค๋ฉด ์–ด๋ ค์›€์„ ๊ฒช๊ณค ํ–ˆ๋Š”๋ฐ์š”..

 

์˜ค๋Š˜์€ ๋™์  ๊ณ„ํš๋ฒ•์— ๋Œ€ํ•ด์„œ ์ œ๋Œ€๋กœ ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”!

 


๋™์  ๊ณ„ํš๋ฒ•(Dynamic Programming)์ด๋ž€? 

 

๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ 1950๋…„๋Œ€ ๋ฏธ๊ตญ์˜ ์ˆ˜ํ•™์ž์ธ ๋ฆฌ์ฒ˜๋“œ ๋ฒจ๋งจ์ด ์ตœ์ ํ™” ๋ฌธ์ œ(Optimization Problem)๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ณ ์•ˆ๋˜์—ˆ๋‹ค. ๋ณต์žกํ•œ ๋ฌธ์ œ๋ฅผ ๊ฐ„๋‹จํ•œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„์–ด ํ‘ธ๋Š” ๋ฐฉ๋ฒ•์„ ๋งํ•˜๋ฉฐ ์ด๊ฒƒ์€ ๋ถ€๋ถ„ ๋ฌธ์ œ ๋ฐ˜๋ณต๊ณผ ์ตœ์  ๋ถ€๋ถ„ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์— ๋น„ํ•ด ๋”์šฑ ์ ์€ ์‹œ๊ฐ„ ๋‚ด์— ํ’€ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. - ์œ„ํ‚ค ๋ฐฑ๊ณผ -

 

์ฆ‰, ๋ถ„ํ•  ์ •๋ณต ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๊ฐ™์ด ํฐ ๋ฌธ์ œ๋ฅผ ์ž‘๊ฒŒ ์ชผ๊ฐœ์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ๋‚˜๊ฐ€๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค.

 

๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๋˜๊ธฐ ์œ„ํ•œ ์กฐ๊ฑด์€ 3๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

1. Simple subproblems

 

ํฐ ๋ฌธ์ œ๋ฅผ ์ž‘์€ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

2. Optimal substructure

 

์ตœ์ ์˜ ํ•ด๋ฅผ ์ฐพ๋Š” ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

3. Overlapping problems

 

์ž‘์€ ๋ฌธ์ œ๋“ค์ด ์ค‘๋ณต๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ ์„ธ ๊ฐ€์ง€ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ผ๊ณ  ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๋ถ„ํ•  ์ •๋ณต(Divide and Conquer) ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ์˜ ์ฐจ์ด์ 

 

๊ทธ๋ ‡๋‹ค๋ฉด ๋ถ„ํ•  ์ •๋ณต ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ผ๊นŒ์š”?

 

๋ถ„ํ•  ์ •๋ณต ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ์˜ํ•ด ๋ถ„ํ• ๋œ ์ž‘์€ ๋ฌธ์ œ๋“ค์€ ์„œ๋กœ ๋…๋ฆฝ์ ์ž…๋‹ˆ๋‹ค. ์ฆ‰ ์„œ๋กœ ๊ด€๊ณ„๊ฐ€ ์—†๋‹ค๋Š” ๋œป์ด์ฃ .

 

ํ•˜์ง€๋งŒ ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋ถ„ํ• ๋˜๋Š” ์ž‘์€ ๋ฌธ์ œ๋“ค์€ ์„œ๋กœ ๋…๋ฆฝ์ ์ด์ง€ ์•Š๊ณ  ํ•œ๋ฒˆ ํ•ด๊ฒฐ๋œ ๋ฌธ์ œ๋“ค์„ ์„œ๋กœ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

 

์‰ฝ๊ฒŒ ์˜ˆ๋ฅผ ๋“ค์–ด ์„ค๋ช…ํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

 

๋จผ์ € ๋ถ„ํ•  ์ •๋ณต ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ํ•ฉ๋ณ‘ ์ •๋ ฌ์˜ ๊ณผ์ •์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์„œ๋กœ ๋ถ„ํ• ๋œ ์ •๋ณด๋Š” ๋‹ค๋ฅธ ๊ณณ์— ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ณ , ์‚ฌ์šฉ๋  ๋•Œ๋งˆ๋‹ค ๊ณ„์‚ฐ์„ ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

 

๊ทธ ๋‹ค์Œ์œผ๋กœ ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๋ถ„ํ• ๋˜๋”๋ผ๋„ ๋™์ผํ•œ ํ•จ์ˆ˜ ex) F(1)์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

 

์œ„ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด F(2)๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„œ F(1)๊ณผ F(0)์ด ๊ณ„์‚ฐ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  F(3)์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„  F(2)์™€ F(1)์ด ๊ณ„์‚ฐ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

์ฆ‰, ๋™์ผํ•œ ๋ฌธ์ œ๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ๊ตฌํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ์ ์ด ์ƒ๊ธฐ์ฃ ?

 

๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ๋ฉ”๋ชจ์ด์ œ์ด์…˜(Memoization) ๊ธฐ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

 

์ด๊ฒƒ ๋•Œ๋ฌธ์— ๋น„ํšจ์œจ์ ์ธ ๋ถ„ํ•  ์ •๋ณต์„ ๊ฐœ์„ ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ๊ณ  ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค.


๋ฉ”๋ชจ์ด์ œ์ด์…˜(Memoization)

 

๋ฉ”๋ชจ์ด์ œ์ด์…˜(memoization)์€ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์ด ๋™์ผํ•œ ๊ณ„์‚ฐ์„ ๋ฐ˜๋ณตํ•ด์•ผ ํ•  ๋•Œ, ์ด์ „์— ๊ณ„์‚ฐํ•œ ๊ฐ’์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•จ์œผ๋กœ์จ ๋™์ผํ•œ ๊ณ„์‚ฐ์˜ ๋ฐ˜๋ณต ์ˆ˜ํ–‰์„ ์ œ๊ฑฐํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์†๋„๋ฅผ ๋น ๋ฅด๊ฒŒ ํ•˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค. ๋™์  ๊ณ„ํš๋ฒ•์˜ ํ•ต์‹ฌ์ด ๋˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค. - ์œ„ํ‚ค ๋ฐฑ๊ณผ -

 

์ฆ‰, ์•ž์„œ ํ•ด๊ฒฐ๋œ ๋ฌธ์ œ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•ด๋†“๊ณ  ๋˜‘๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๊บผ๋‚ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด์ฃ .

 

๋‹ค๋ฅธ ๋ง๋กœ๋Š” ์บ์‹ฑ(Caching)์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค.


Top Down vs Bottom up

 

๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด๋‚˜๊ฐ€๋Š” ๋ฐฉ๋ฒ•์€ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋ฐ”๋กœ ๋ฐ”ํ…€์—… ๋ฐฉ์‹๊ณผ ํƒ‘๋‹ค์šด ๋ฐฉ์‹์ด์ฃ . 

 

Top Down

 

ํƒ‘๋‹ค์šด ๋ฐฉ์‹์€ ๋ง ๊ทธ๋Œ€๋กœ ์œ„์—์„œ ์•„๋ž˜๋กœ(ํฐ ๋ฌธ์ œ์—์„œ ์ž‘์€ ๋ฌธ์ œ๋กœ) ํ•ด๊ฒฐํ•ด ๋‚˜๊ฐ€๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

 

์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด F(6)์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ F(5)์™€ F(4)๋ฅผ ๊ตฌํ•˜๊ณ  F(5)๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด F(4)์™€ F(3)์„ ๊ตฌํ•˜๊ณ ....

 

์ด๋Ÿฐ ์‹์œผ๋กœ ๊ฐ€์žฅ ์ž‘์€ ๋ฌธ์ œ F(0)๊ณผ F(1)์ด ๋  ๋•Œ๊นŒ์ง€ ์žฌ๊ท€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

 

์žฌ๊ท€๋ฅผ ์ด์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•ž์„œ ํ˜ธ์ถœํ–ˆ๋˜ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•ด ๋†“์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

์ฆ‰, ์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋˜ ๋ฉ”๋ชจ์ด์ œ์ด์…˜ ๊ธฐ๋ฒ•์€ ํƒ‘๋‹ค์šด ๋ฐฉ์‹์ผ ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

 

 

 

Bottom Up

 

๋ฐ”ํ…€์—… ๋ฐฉ์‹์€ ๋‹จ์ˆœํžˆ ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด์„œ ๊ฐ€์žฅ ์ž‘์€ ๋ฌธ์ œ์—์„œ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

 

์ฆ‰ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ F(6)์ด๋ผ๋ฉด 0๋ถ€ํ„ฐ 6๊นŒ์ง€ ์ฐจ๋ก€๋Œ€๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ๋‚˜๊ฐ€๋Š” ๋ฐฉ์‹์ด์ฃ .


๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ณผ์ • 

 

1. ์ตœ์ ํ•ด๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.


2. ์ตœ์ ํ•ด์˜ ๊ฐ’์„ ์žฌ๊ท€์ ์œผ๋กœ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

 

3. ์บ์‹ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ํƒ‘๋‹ค์šด ๋ฐฉ์‹์ด๋‚˜ ๋ฐ”ํ…€์—… ๋ฐฉ์‹์œผ๋กœ ๊ฐ’์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.


4. ๊ณ„์‚ฐ๋œ ๊ฐ’์œผ๋กœ ์ตœ์ ์˜ ํ•ด๋ฅผ ๊ตฌํ•ฉ๋‹ˆ๋‹ค.

 

์‰ฌ์šด ์ดํ•ด๋ฅผ ์œ„ํ•ด ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ณผ์ •์„ ์„ค๋ช…๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

 

๋™์ „ ์ˆ˜์ง‘ ๋กœ๋ด‡(Coin collecting robot)

 

  • ๋™์ „ ์ˆ˜์ง‘ ๋กœ๋ด‡์€ (1,1)์—์„œ ์ถœ๋ฐœํ•˜์—ฌ ๊ธธ(Cell)์˜ ๋์ธ (6,5)๊นŒ์ง€ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋กœ๋ด‡์€ ์˜ค๋ฅธ์ชฝ์ด๋‚˜ ์•„๋ž˜๋กœ๋ฐ–์— ์ด๋™ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ์ตœ๋Œ€ํ•œ ๋งŽ์€ ๋™์ „์„ ์ˆ˜์ง‘ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•ฉ๋‹ˆ๋‹ค.

 

 

 

1. ์ตœ์ ํ•ด๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

 

๊ธธ(Cell)์ด ixj๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค๋ฉด ์ตœ์ ํ•ด๋Š” ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์ธ F(i,j)๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰(F(6,5)๊ฐ€ ๊ฐ€์žฅ ์ตœ๋Œ“๊ฐ’์ด ๋ฉ๋‹ˆ๋‹ค.

 

2. ์ตœ์ ํ•ด์˜ ๊ฐ’์„ ์žฌ๊ท€์ ์œผ๋กœ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

 

์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋‚ด๋ ค๊ฐ”์„ ๋•Œ ๋˜๋Š” ์•„๋ž˜๋กœ ๋‚ด๋ ค๊ฐ”์„ ๋•Œ ์ค‘์— ๋” ํฐ ๊ฐ’์„ ์ •ํ•˜๋ฉด ๋˜๊ฒ ์ฃ ?

 

์ฆ‰, ์•„๋ž˜ ์ ํ™”์‹์„ ์žฌ๊ท€ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. (c๋Š” ๊ธธ(Cell)์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.)

F(i, j) = max{F(i-1, j), F(i, j-1)} + cij

 

3. ์บ์‹ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ํƒ‘๋‹ค์šด ๋ฐฉ์‹์ด๋‚˜ ๋ฐ”ํ…€์—… ๋ฐฉ์‹์œผ๋กœ ๊ฐ’์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

 

2๋ฒˆ์—์„œ ์ •์˜ํ•ด๋†“์€ ์ ํ™”์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ํƒ‘๋‹ค์šด ๋ฐฉ์‹์œผ๋กœ ๊ฐ’์„ ๊ตฌํ•ด๋‚˜๊ฐ€๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐ’์ด ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.

 

 

4. ๊ณ„์‚ฐ๋œ ๊ฐ’์œผ๋กœ ์ตœ์ ์˜ ํ•ด๋ฅผ ๊ตฌํ•ฉ๋‹ˆ๋‹ค.

 

๊ฐ€์žฅ ๋งˆ์ง€๋ง‰๋ฒˆ ์จฐ ๊ฐ’์ธ (6,5)์˜ ๊ฐ’์ด 5์ด๋ฏ€๋กœ ์ตœ์ ํ•ด(์ตœ๋Œ“๊ฐ’)์€ 5๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.


์˜ค๋Š˜์€ ์ด๋ ‡๊ฒŒ ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.

 

ํ˜น์‹œ๋ผ๋„ ํ‹€๋ฆฐ ์ ์ด๋‚˜ ๊ถ๊ธˆํ•˜์‹  ์‚ฌํ•ญ์ด ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์„ธ์š”!

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€