Anda di halaman 1dari 1

Programa Dinamis

Program Dinamis (dynamic programming): metode pemecahan masalah dengan cara


menguraikan solusi menjadi sekumpulan langkah (step) atau tahapan (stage) sedemikian
sehingga solusi dari persoalan dapat dipandang dari serangkaian keputusan yang saling
berkaitan.
Pemrograman dinamis menggunakan tabel atau array untuk menyimpan solusi submasalah. Tabel
ini disebut tabel memo atau cache. Ketika suatu submasalah diselesaikan, solusinya disimpan
dalam tabel memo sehingga dapat digunakan kembali nanti alih-alih menghitung ulang
solusinya.
Pemrograman dinamis sering digunakan dalam masalah yang melibatkan struktur
berurutan atau seperti rantai. Misalnya, masalah Urutan Umum Terpanjang dapat diselesaikan
dengan menggunakan pemrograman dinamis. Ini melibatkan pencarian rangkaian terpanjang
yang muncul di kedua string. Contoh lainnya adalah masalah Knapsack, dimana tujuannya
adalah untuk menemukan barang-barang yang akan dimasukkan ke dalam knapsack agar
nilainya maksimal dan tidak melebihi kapasitasnya.
Dalam rekursi, suatu masalah diselesaikan dengan memecahnya menjadi submasalah
yang lebih kecil dan menyelesaikan submasalah tersebut secara rekursif. Rekursi adalah langkah
pertama dalam menyelesaikan masalah pemrograman dinamis apa pun. Solusi rekursif yang
diperoleh pada langkah ini dapat lebih dioptimalkan dengan menerapkan konsep memoisasi dan
tabulasi.
Memoisasi merupakan teknik yang digunakan dalam pemrograman dinamis untuk
mengurangi waktu komputasi yang diperlukan untuk menyelesaikan suatu masalah dengan
menghindari perhitungan yang berlebihan. Sedangkan tabulasi mengacu pada teknik di mana
hasil antara dari submasalah disimpan dalam tabel untuk menghindari komputasi yang
berlebihan. Pendekatan ini digunakan untuk memecahkan masalah optimasi dimana solusinya
dapat dibangun dari solusi hingga submasalah. Dengan menyimpan hasil submasalah dalam
sebuah tabel, kita dapat menghindari penghitungan ulang submasalah ketika diperlukan lagi,
sehingga menghasilkan peningkatan efisiensi yang signifikan.
https://www.prepbytes.com/blog/dynamic-programming/dynamic-programming/

Anda mungkin juga menyukai