Apa itu Dynamic Programming?
Dynamic Programming (DP) adalah teknik untuk menyelesaikan masalah kompleks dengan memecahnya menjadi submasalah yang saling tumpang tindih, menyelesaikan setiap submasalah sekali, lalu menyimpan hasilnya agar bisa digunakan kembali. [web:111][web:116]
DP biasanya digunakan pada masalah optimisasi atau penghitungan, ketika:
- • Masalah memiliki optimal substructure. [web:110][web:113]
- • Masalah memiliki overlapping subproblems. [web:107][web:116]
Alih‑alih menghitung ulang subproblem yang sama berkali‑kali (seperti recursion naif), DP menyimpan jawaban subproblem di tabel/array. [web:111][web:108]
Optimal Substructure & Overlapping
- Optimal Substructure: solusi optimal masalah dapat dibangun dari solusi optimal submasalahnya (contoh: shortest path, knapsack, LCS). [web:110][web:113][web:111]
- Overlapping Subproblems: recursive solution yang naif akan menghitung subproblem yang sama berkali‑kali. [web:107][web:116]
Jika kedua sifat ini ada, biasanya DP adalah kandidat kuat. [web:110][web:116]