Algoritma dinamis, atau dynamic programming, adalah teknik pemecahan masalah dengan memecah masalah menjadi submasalah yang tumpang tindih dan menyimpan hasil submasalah tersebut agar tidak dihitung ulang. Metode ini sangat efektif untuk masalah yang dapat dipecah menjadi bagian-bagian yang lebih kecil dengan struktur solusi yang optimal.
Konsep Dasar Pemrograman Dinamis
Algoritma dinamis menggunakan tabel atau struktur data lain untuk menyimpan hasil perhitungan submasalah. Dengan cara ini, waktu komputasi dapat dipangkas secara signifikan dibandingkan dengan teknik rekursif biasa.
Contoh Masalah Dinamis
Beberapa contoh penerapan algoritma dinamis adalah pada masalah Fibonacci, knapsack problem, dan penyelarasan urutan dalam bioinformatika. Solusi dinamis seringkali digunakan untuk masalah yang memiliki banyak solusi parsial yang tumpang tindih.
Keunggulan dan Kekurangan
Keunggulan utama dari algoritma dinamis adalah efisiensi waktu. Namun, algoritma ini biasanya membutuhkan ruang memori lebih banyak karena harus menyimpan hasil perhitungan submasalah.