๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜/์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ด๋ก 

Knapsack problem - Dynamic Program

by sh119 2023. 5. 20.

์ค‘์š”ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ธ ๊ฐ€์ง€์ค‘ ํ•˜๋‚˜์ธ Dynamic Program ์˜ ์œ ๋ช…ํ•œ ์˜ˆ์ œ์ธ ๋ฐฑ์ค€ 12865๋ฒˆ ๋ฐฐ๋‚ญ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด์•˜๋‹ค.

 

Knapsack problem์€ ์ฃผ์–ด์ง„ ๋ฌด๊ฒŒ ์ œํ•œ ์•ˆ์—์„œ ๊ฐ ์•„์ดํ…œ๋“ค์˜ ๋ฌด๊ฒŒ์™€ ๊ฐ€์น˜๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๊ฐ€์น˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. 

 

ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ Dynamic Program์œผ๋กœ ์ ‘๊ทผํ•˜๋Š”๋ฐ์—๋Š” ์ด์œ ๊ฐ€ ์žˆ๋‹ค.

์šฐ์„  ๋‹จ์ˆœ ์ ‘๊ทผ๋ฒ•์œผ๋กœ ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ‘ผ๋‹ค๋ฉด item ํ•˜๋‚˜๋‹น ์„ ํƒ ๋˜๋Š” ๋น„์„ ํƒ์˜ ๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ฅด๊ฒŒ ๋˜๋ฏ€๋กœ ์ด 2^n ์ด๋ž€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค. 

Greedy Algorithm ์œผ๋กœ ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ์ ‘๊ทผํ•œ๋‹ค๋ฉด ์–ด๋–ค๊ฒƒ์„ greedy ์ „๋žต์œผ๋กœ ์„ ํƒํ•ด์•ผํ• ์ง€ ๊ณจ๋ผ์•ผ ํ•˜๋Š”๋ฐ 

value ๊ฐ’์ด ํฐ ๊ฒƒ๋ถ€ํ„ฐ ์„ ํƒํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด optimalํ•œ solution์„ ๊ฐ€์ง€์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธด๋‹ค.

๊ทธ๋ ‡๋‹ค๊ณ  ๋ฌด๊ฒŒ๊ฐ€ ์ ์€ ๊ฒƒ ๋ถ€ํ„ฐ ์„ ํƒํ•˜๊ฒŒ ๋œ๋‹ค๊ณ  optimalํ•œ solution์„ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค๊ณ  ํ™•์‹ ํ•  ์ˆ˜ ์—†๋‹ค.

๋”ฐ๋ผ์„œ ํ•ด๋‹น ๋ฌธ์ œ๋Š” DP๋ฅผ ์ด์šฉํ•˜์—ฌ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ๋งž๋Š” ๊ฒƒ์ด๋‹ค. 

 

 

์•„๋ž˜์™€ ๊ฐ™์ด DP๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ’€๋•Œ์—๋Š” ๋จผ์ € optimal solution์˜ case๋ฅผ ๋‚˜๋ˆ„์–ด ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. 

๊ทธ ๋‹ค์Œ์œผ๋กœ๋Š” recursive step์„ ๊ฑฐ์ณ DPํ…Œ์ด๋ธ”์„ ์ฑ„์›Œ ๊ฐ’์„ ์ฐพ์œผ๋ฉด ๋œ๋‹ค. 

 

Knapsack problem์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ๊ฒฝ์šฐ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. 

Case 1 : item i๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒฝ์šฐ 

Case 2 : item i๋ฅผ ์„ ํƒํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ

 

์ด๊ฒƒ์„ Recursive step์œผ๋กœ ํ‘œํ˜„ํ•œ๋‹ค๋ฉด 

 1. item i์˜ ๋ฌด๊ฒŒ๊ฐ€ ๋” ์ด์ƒ ๊ฐ€๋ฐฉ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ : (i ๊ฐ€ ์ž๋ช…ํ•˜๊ฒŒ ๋“ค์–ด๊ฐ€์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ทธ ์ „๊นŒ์ง€ ๋น„๊ตํ•œ ๊ฒƒ๊ณผ ๋™์ผ)

      OPT(i,w) = OPT(i-1, w) 

2. item i์˜ ๋ฌด๊ฒŒ๊ฐ€ ๊ฐ€๋ฐฉ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ

     OPT(i,w) = max ( OPT(i-1, w) , v(i) + OPT(i-1, w-w(i)) )

-> i ๊ฐ€ ๋“ค์–ด๊ฐ”์„ ๋•Œ์™€ ๋“ค์–ด๊ฐ€์ง€ ์•Š์•˜์„๋•Œ์˜ OPT๊ฐ’์„ ๋น„๊ตํ•˜์—ฌ ํฐ ๊ฒƒ์„ ์„ ํƒํ•˜์—ฌ ํ…Œ์ด๋ธ”์— ์ ๋Š”๋‹ค. 

 

์œ„์—์„œ ๋งํ•œ ๊ณผ์ •์„ ๋”ฐ๋ผํ•˜๋ฉด ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ํ…Œ์ด๋ธ”์ด ์ฑ„์›Œ์ง€๊ณ  ๋งˆ์ง€๋ง‰๊ฐ’์œผ๋กœ ์ตœ๋Œ€ ๊ฐ€์น˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. 

 


๋งˆ์ง€๋ง‰์œผ๋กœ ํ•ด๋‹น๋ฌธ์ œ๋ฅผ Java์ฝ”๋“œ๋กœ ํ‘ผ ๊ฒƒ์œผ๋กœ ํฌ์ŠคํŒ…์„ ๋งˆ์นœ๋‹ค.