μλ νμΈμ :) μ€λμ Dynamic Programing(DP)μ λν΄ μμλ³΄κ² μ΅λλ€. νΌλ³΄λμΉ μλ₯Ό ꡬνλ λ°©λ²μ²λΌ, νΉμ λ¬Έμ λ₯Ό μ€λ³΅λλ μμ λ¬Έμ λ‘ μͺΌκ°μ΄ ν λ, ν¨μ¨μ μΈ λ°©λ²μΌλ‘ μ¬μ©λλ λ°©λ²μ λλ€. BF μκ³ λ¦¬μ¦μμ ν μΈ΅ λ λ°μ λ μκ³ λ¦¬μ¦μΌλ‘ μ κ·Όνμλ©΄ μ’μ΅λλ€. κ·ΈλΌ μ€λλ νμ΄ν μ λλ€πΏ
ν° λ¬Έμ λ₯Ό μμ λ¬Έμ λ‘ λλ μ νΈλ μκ³ λ¦¬μ¦μΌλ‘, μ£Όμ΄μ§ λ¬Έμ μ ν¬κΈ°(N)μ λν μ νμκ³Ό λ©λͺ¨μ μ΄μ κΈ°λ²μ ν΅ν΄ λ¬Έμ λ₯Ό ν΄κ²°νλ λ°©λ²μ λλ€.
λΆν μ 볡과 λ€μ΄λλ―Ή νλ‘κ·Έλλ°μ μ°¨μ΄μ
- λΆν μ 볡 : ν° λ¬Έμ λ₯Ό λλ μμ λ¬Έμ κ° μ€λ³΅μ΄ λμ§ μμ, λͺ¨λ μμ λ¬Έμ λ₯Ό ν λ²μ© νΈλ λ°©λ²μ λλ€.
- λ€μ΄λλ―Ή νλ‘κ·Έλλ° : ν° λ¬Έμ λ₯Ό λλ μμ λ¬Έμ κ° μ€λ³΅μ΄ λμ΄, μ¬λ¬λ² λμ€λ κ°κ°μ μμ λ¬Έμ λ€μ λ¨ ν λ²μ©λ§ νΈλ λ°©λ²μ λλ€.
Overlapping Subproblemλ ν° λ¬Έμ λ₯Ό λλ μμ λ¬Έμ λ€μ΄ κ²ΉμΉλ νΉμ±μ μλ―Έν©λλ€.
ν° λ¬Έμ μ μμ λ¬Έμ λ₯Ό κ°μ λ°©λ²μΌλ‘ ν μ μμ΅λλ€.
β λ¬Έμ λ₯Ό μμ λ¬Έμ λ‘ μͺΌκ°€ μ μμ΅λλ€.
Optimal Substructureλ λ¬Έμ μ ν¬κΈ°μ μμ μ μκ΄μμ΄, ν λ¬Έμ μ μ λ΅μ νμ κ°λ€λ νΉμ±μ μλ―Έν©λλ€.
μ΄λ ν μμ λ¬Έμ λ₯Ό νλ, κ·Έ μ μ νΌ νΉμ μμ λ¬Έμ μ μ λ΅μ λ³νμ§ μλλ€.
β ν° λ¬Έμ μ μ λ΅μ μμ λ¬Έμ μ μ λ΅μ ν΅ν΄ ꡬν μ μμ΅λλ€. μ¦, μμ λ¬Έμ λ€μ μ λ΅μ ꡬμ±νμ¬ ν° λ¬Έμ λ₯Ό ν΄κ²°ν μ μμ΅λλ€.
β κ°μ λ¬Έμ λ€(μ€λ³΅λλ μμ λ¬Έμ λ€)μ ν λ²μ©λ§ νμ΄μΌν©λλ€. μ¦, λͺ¨λ μμ λ¬Έμ μ μ§ν©μ ν λ²μ©λ§ νλ €μΌν©λλ€. (μ€λ³΅μ΄ μλ€λ μλ―Έλ‘μ¨μ μ§ν©)
β κ°μ λ¬Έμ λ€μ μμ μ΄λ ν¬κΈ°μ μκ΄μμ΄, ꡬν λλ§λ€ μ λ΅μ΄ κ°μΌλ―λ‘, μ΄μ μ ꡬν μ λ΅λ€μ μ μ₯ν΄λμμΌν©λλ€. (Memoization)
λ¬Έμ μμ ꡬνκ³ μνλ κ²μ λ¬Έμ₯μΌλ‘ λνλ λλ€. μ¦, λ€μμ μΈμΈ μ νμμ λν μ μλ₯Ό μΈμλλ€.
N-2 λ²μ§Έ νΌλ³΄λμΉ μμ N-1 λ²μ§Έ νΌλ³΄λμΉ μμ ν©μΈ N λ²μ§Έ νΌλ³΄λμΉ μ
ν΄λΉ λ¬Έμ₯μμ λ±μ₯νλ λΆλΆ λ¬Έμ λ€μ μ μν©λλ€.
N λ²μ§Έ νΌλ³΄λμΉ μμ λν λΆλΆ λ¬Έμ : N-2 λ²μ§Έ νΌλ³΄λμΉ μ, N-1 λ²μ§Έ νΌλ³΄λμΉ μ
μμ μ μν λ΄μ©λ€μ μ¬μ©νμ¬, μμμΌλ‘ μ νμμ νννκ³ , λ©λͺ¨μ μ΄μ μ μν λ°°μ΄μ λ§λλλ€.
D[N] = D[N-1]+D[N-2]
β μ¬κ· ν¨μλ₯Ό μ¬μ© : νΉμ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ νμν λΆλΆ λ¬Έμ λ€λΆν° ν΄κ²°ν΄λκ°λ λ°©λ²
β λ°λ³΅λ¬Έμ μ¬μ© : κ°μ₯ μμ λΆλΆ λ¬Έμ μ μ²μλΆν° λκΉμ§ μ°¨λ‘λλ‘ ν΄κ²°νλ λ°©λ²