Dynamic Programming
Dynamic Programming
(PEMROGRAMAN DINAMIS)
Status
Status output output
Tahap3 Tahap 2
terlebih dahulu.
1.3 Karakteristik dan Konsep Dasar Dynamic Programming
1.3.1 Karakteristik Dynamic Programming:
Permasalahan dibagia menjadi stage, dengan keputusan diperlukan pada
tiap stage.
Tiap stage punya nomor stage berhubungan dengan awal dari stage. Hasil
dari setiap stage ditransformasikan pada stage yang lainnya.
Prosedur penyelesaiannya dirancang untuk mendapatkan hasil yang
optimal.
Hasil optimal dari suatu stage tidak berhubungan dengan stage
sebelumnya.
Prosedur penyelesaiannya diawali dari stage terakhir.
Masing-masing tahap terdiri dari sejumlah status (state) yang berhubungan
dengan tahap tersebut. Secara umum, status merupakan bermacam
kemungkinan masukan yang ada pada tahap tersebut. Jumlahnya bisa
berhingga atau tak berhingga.
Hasil dari keputusan yang diambil pada setiap tahap ditransformasikan
dari status yang bersangkutan ke status berikutnya pada tahap berikutnya.
Ongkos (cost) pada suatu tahap meningkat secara teratur (steadily) dengan
bertambahnya jumlah tahapan.
Ongkos pada suatu tahap bergantung pada ongkos tahap-tahap yang sudah
berjalan dan ongkos pada tahap tersebut.
Keputusan terbaik pada suatu tahap bersifat independen terhadap
keputusan yang dilakukan pada tahap sebelumnya.
Adanya hubungan rekursif yang mengidentifikasikan keputusan terbaik
untuk setiap status pada tahap k memberikan keputusan terbaik untuk
setiap status pada tahap k + 1.
Prinsip optimalitas berlaku pada persoalan tersebut.
1.3.2 Konsep dasar Dynamic Programming
Dekomposisi
Persoalan Dynamic Programming dapat dipecah-pecah menjadi
subpersoalan atau tahapan ayang lebih kecil dan berurutan. Setiap tahap
disebut juga sebagai titik keputusan. Setiap keputusan yang dibuat pada
suatu tahap akan mempengaruhi keputusan-keputusan pada atahap
berikutnya.
Status
Status adalah kondisi awal dan kondisi akhir pada setiap tahap, dimana
pada atahap tersebut keputusan dibuat. Status akhir pada sebuah tahap
tergantung keadaan status awal dan keputusan ayang dibuat pada tahap
yang bersangkutan. Status akhir pada suatu tahap merupakan input bagi
tahap berikutnya.
Variable Keputusan dan Hasil
Keputusan yang dibuat pada setiap atahap merupakan keputusan yang
berorientasi kepada return yang diakibatkannya, tingkat maksimal atau
minimal.
Fungsi Transisi
Fungsi transisi menjelaskan secara pasti bagaimana tahap-tahap saling
berhubungan. Fungsi ini berbentuk fungsi hubungan antar status pada
setiap tahap yang berurutan.
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: