KnapSack Algorithm
KnapSack Algorithm(λ°°λ λ¬Έμ )λ DP μκ³ λ¦¬μ¦ μ€ νλλ€.
λ°°λ λ¬Έμ λ λ€μμ μν©μ κ°μ§λ€.
nκ°μ μ§κ³Ό λ°°λμ΄ μμ λ, κ°κ°μ μ§μ κ°μΉμ 무κ²κ° μλ€.
λ°°λμ μ§μ λ΄μ μ μλ μ΅λ μ©λμ΄ μ‘΄μ¬ν λ, λ°°λμ λ΄μ μ μλ κ°μΉμ μ΅λκ°μ μ°ΎμλΌ.
μ΄ λ¬Έμ κ° μ DPμ ν΄λΉλ κΉ?
μ΄ μν©μμ κ°λ₯ν λͺ¨λ μ‘°ν©μ μ΄λ€. νμ§λ§ μ΄ κ²½μ°λ₯Ό λͺ¨λ μ΄νΌκΈ°μ λ무 λ§μ μκ°μ΄ μμλλ€.
κ·Έλ λ€λ©΄ DPλ₯Ό κ³ λ €νμ λ, λΆλ¬Έμ λ₯Ό μ΄λ»κ² μ μν΄μΌ ν μ§κ° λ¬Έμ μ΄λ€.
μ΅λ 무κ²
κ°λ°©μ 무κ²λ₯Ό κΈ°μ€μΌλ‘ ν΄κ²°ν μ μλμ§ κ³ λ €ν΄λ³΄λ©΄ λΆκ°λ₯νλ€. μλνλ©΄ μ΅λ 무κ²κ° 4μΌλ μ΅λ κ°μΉκ°, μ΅λ 무κ²κ° 5μΌλ μ΅λ κ°μΉλ‘ μ΄μ΄μ§μ§ μλλ€. μ§μ λΉΌκ³ λ€μ λ£μΌλ©΄ μμ λ¬λΌμ§κΈ° λλ¬Έμ΄λ€.
μ§μ μ ν μ¬λΆ
λ°°λμ μ§μ λ£μ λ λ κ°μ§ μ νμ ν μ μλ€.
μ§μ λ°°λμ λ£λλ€.
μ§μ λ°°λμ λ£μ§ μλλ€.
λ§μ½ λ£μΌλ €λ μ§μ 무κ²κ° λ°°λμ 무κ²λ₯Ό μ΄κ³Όνλ€λ©΄, λ£μ§ μλλ€. νμ§λ§ μ§μ λ£μ μ μλ€κ³ ν΄μ λ€ λ£μΌλ©΄ λ§μ½ νμ λ°°λμ λ£μμ λ λ κ°μΉκ° λμ μ§μ λͺ» λ£λ κ²½μ°κ° μκΈ΄λ€. μ΄ μν© λν κ³ λ €ν΄μΌ νλ€. κ·Έλ¬λ©΄ κ²°κ΅ λ μμΈν μν©μ μ 리ν΄μΌ νλ€.
μλ‘μ΄ μ§μ λ£μ§ μλλ€.
μλ‘μ΄ μ§μ λ£κΈ° μν΄ νμ¬ λ¬Όκ±΄μ λ£μ 곡κ°μ λ§λ€μ΄μ 물건μ λ£λλ€.
μ΄ μν©μ μμμΌλ‘ νννλ©΄,
DP[i][w] = max(DP[i-1][w], DP[i][w-(μ§ iμ 무κ²)] + μ§ iμ κ°μΉ
λ£μ§ μλ κ²½μ°μ μ§μ λ£λ κ²½μ°(νμ¬ λ°°λμμ μ§ iμ 무κ²λ₯Ό λΊμ λμ μ΅λ κ°μΉμμ μ§ i μ 무κ²λ₯Ό λν¨) μ€ μ΅λκ°μ μ ννλ€.
μ΄ κ²½μ°λ₯Ό νλ‘ λΉκ΅ν΄λ³΄μ.
1: 6 / 13
0
0
0
0
0
0
13
13
2: 3 / 6
0
0
0
6
6
6
13
13
3: 4 / 8
0
0
0
6
8
8
13
14
4: 5 / 12
0
0
0
6
8
12
13
14
μμ κ°μ΄ κ°μ κ°μ§κ² λλ€
3λ² μ§μμ λ°°λμ 무κ²κ° 7μΈ κ²½μ°λ₯Ό μ΄ν΄λ³΄μ.
λ°°λμ 무κ²κ° 6μΌ λ μ΅λ κ°μΉλ 13μ΄λ€. λ°°λμ 무κ²κ° 7μΈ κ²½μ°λ₯Ό μ΄ν λ 3λ² μ§μ λ£λ κ²½μ°μ λ£μ§ μλ κ²½μ°λ₯Ό μ΄ν΄μΌ νλ€. λ£μ§ μλ κ²½μ°λ μ΄μ κ°μ κ·Έλλ‘ κ°μ Έμ¨λ€.
λ£λ κ²½μ°λ 2λ²μ§κΉμ§ κ³ λ €νλ©΄μ λ°°λ 무κ²κ° 3μΌ λμ μ΅λ κ°μΉμμ 3λ² μ§μ λ£λ μν©μ΄ μ΅λ κ°μΉκ° λλ€. λ°λΌμ λΉκ΅λ 13 vs 6 + 8
λ‘ μ΄λ£¨μ΄μ§λ€.
μ¦, μμ νλ₯Ό 2μ°¨μ 리μ€νΈλΌκ³ μκ°νλ€λ©΄, μμ²λΌ μμνν μ μλ€.
dpλ μμ νλ₯Ό 2μ°¨μ λ°°μ΄λ‘ λνλΈ κ²μ΄κ³ , item 2μ°¨μ λ°°μ΄μ κ° μ§μ 무κ²μ κ°μΉλ₯Ό λνλΈ κ²μ΄λ€.
Last updated