(PEMROGRAMAN DINAMIS)
Semua keputusan dimasa yang akan datang dipilih secara optimal tanpa
melihat keputusan yang diambil sebelumnya. Sifat khusus ini merupakan prinsip
optimalitas yang merupakan dasar bagi keabsahan perhitungan dynamic
programming.
Dynamic Programming mirip seperti metode divide-and-conquer yang
menyelesaikan suatu problem dengan mengkombinasikan solusi menjadi
subproblem. Divide-and-conquer membagi problem menjadi subproblem yang
independen. kemudian menyelesaikan subproblem secara rekursif dan
mengkombinasikan solusi tersebut untuk menyelesaikan problem utama.
Sedangkan Dynamic Programming cocok digunakan ketika subproblem tidak
indepen-den, jadi ketika subproblem terbagi menjadi subsubproblem.
Dynamic Programming biasanya digunakan untuk masalah optimisasi. Dimana
suatu permasalahan memiliki banyak solusi. Setiap solusi memiliki nilai masing-
masing. Dan ingin ditemukan solusi dengan nilai yang optimum (maksimal atau
mininal).
Dynamic Programming dapat dibagi menjadi empat tahap yang berurutan
sebagai berikut :
1. Karakterisasi struktur pada solusi optimasi
2. Mendefinisikan nilai solusi optimal secara rekursif
3. Menghitung nilai solusi optimal pada model bottom-up
4. Menyusun solusi optimal dari informasi hasil perhitungan
Langkah 1 sampai langkah 3 adalah dasar dynamic-programming dalam
menemukan solusi untuk suatu problem, langkah ke-4 dapat dilakukan jika nilai
solusinya optimal diperlukan.
Dynamic Programming sebagai suatu pendekatan matematik memiliki
beberapa prinsip dasar yang terkait erat satu sama lain. Prinsip-prinsip dasar
tersebut, yaitu :
Prinsip pertama dalam model Dynamic Programming adalah bahwa
masalah dapat dibagi menjadi bagian-bagian masalah yang lebih kecil. Masalah
yang lebih kecil atau sub masalah ini tersebut sebagai tahap keputusan (stage).
Setiap masalah uang akan diselesaikan, terlebih dahulu dibagi-bagi menjadi
beberapa masalah kecil dengan maksud memudahkan evaluasi masalah untuk
mendapatkan keputusan optimal dari tiap-tiap tahap yang pada akhirnya akan
menghasilkan satu keputusan yang optimal. Oleh karena itu model Dynamic
Programming disebut juga model multi stage programming (model multi tahap).
Status
Status output output
Tahap3 Tahap 2
Prinsip kedua dalam model Dynamic Programming adalah tentang status
(state). Pengertian status (state) dalam Dynamic Programming adalah arus
informasi dari suatu tahap ke tahap berikutnya. Arus informasi yang masuk ke
suatu tahap disebut status input, sedangkan arus informasi yang keluar dari suatu
tahap diseebut stats output. Status input penting, karena keputusan pada tahap
berikutnya tergantung dari status input sebelumnya. Jadi, status input untuk tahap
keputusan n-1 merupakan status output dari tahap keputusan sebelumnya, yaitu
tahap keputusan n. Sedangkan status output dari tahao keputusan n akan menjadi
status input untuk tahap kepututsan berikutnya, yaitu tahap keputusan n-1.
Prinsip ketiga dalam model Dynamic Programming adalah tentang
variabel keputusan. Variabel keputusan dalam Dynamic Programming
dainyatakan dalam berbagai bentuk keputusan alternatif yang dapat dipilih pada
saat pengambilan keputusan pada tahap tertentu. Berbagai alternatif keputusan
yang dapat diambil dalam setiap tahap keputusan dapat dibatasi dengan sejumlah
persyaratan yang dikenalkan dalam struktur masalah.
Prinsip keempat dalam model Dynamic Programming adalah tentang
fungsi transformasi. Fungsi transformasi memberikan penjelasan tentang
bagaimana hubungan antara tahap keputusan yang satu dengan tahap keputusan
yang lain dalam Dynamic Programming diformulasikan. Selain itu fingsi
transformasi juga menyatakan tentang hubungan fungsional nilai status pada
setiaptahap keputusan. Hubngan status dalam tahap keputusan yang berurutan
bersifat berulang, artinya jika terdapat tahap keputusan n dalam hubungannya
dengan thap keputusan n-1 maka perhitungan untuk nilai status n-1 menggunakan
nilai status n dari keputusan pada tahap n.
Ada 2 (dua) Pendekatan pada Program dinamis, yaitu :
terlebih dahulu.
Tiap stage punya nomor stage berhubungan dengan awal dari stage. Hasil
dari setiap stage ditransformasikan pada stage yang lainnya.
Optimasi Tahap
Optimasi tahap dalam Dynamic
Programming adalah menentukan
keputusan optimal pada setiap tahap dari bebagai kemungkinan nilai status
inputnya.
Fungsi Rekursif
Fungsi rekursif biasanya digunakan pada berbagai program computer,
dimana nilai sebuah variable pada fungsi itu merupakan nilai kumulatif
dari nilai variable tersebut pada tahap sebelumnya.
Dynamic Programming (DP) merupakan salah satu teknik perancangan
algoritma yang dikembangkan untuk menyelesaikan permasalahan yang sangat
kompleks dengan memecah permasalahan tersebut menjadi banyak sub-
permasalahan. Perbedaan utama DP dengan Divide and Conquer (D&C) adalah
pada DP kita menggunakan kembali Perbedaan utama dari DP dengan D&C
adalah DP melakukan penyimpanan hasil penyelesaian sub-masalah sehingga kita
tidak perlu menyelesaikan sub-masalah yang sama berulang kali.
Contoh :
Perbedaan Dynamic Programming dan Divide and Conquer (D&C) dalam
perhitungan bilangan fibonacci. Algoritma untuk menyelesaikan perhitungan
fibonacci secara naif adalah seperti berikut:
Gambar 1.4 Algoritma untuk menyelesaikan perhitungan fibonacci
Algoritma fibonacci sederhana seperti di atas dapat dikatakan sebagai
algoritma D&C, karena kita membagikan perhitungan fibonacci ke dua fungsi
fibonacci, sampai didapatkan nilai hasil terkecilnya. Pemanggilan fungsi fibonacci
di atas dapat digambarkan seperti berikut: