f. Solusi optimal yang dihasilkan pada setiap tahap berprinsip kepada hubungan
dalam bentuk fungsi rekursif recursion relationship. Secara umum bentuk fungsi rekursif adalah:
FnSn = maxmin {fnSn, Xn} Untuk setiap fnSn = hasil optimal dari keputusan pada tahap-n.
2.8.2 Analisa Algoritma Pemrograman Dinamik
Pemrograman Dinamik adalah 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.
Pada penyelesaian persoalan dengan Pemrograman Dinamik terdapat sejumlah berhingga pilihan yang mungkin. Solusi pada setiap tahap dibangun dari hasil solusi tahap
sebelumnya, penulis menggunakan persyaratan optimasi dan kendala untuk membatasi sejumlah pilihan yang harus dipertimbangkan pada suatu tahap.
Pada Pemrograman Dinamik, rangkaian keputusan yang optimal dibuat dengan menggunakan Prinsip Optimalitas. Prinsip Optimalitas: jika solusi total optimal, maka
bagian solusi sampai tahap ke-k juga optimal. Prinsip optimalitas berarti bahwa jika penulis bekerja dari tahap k ke tahap k + 1, penulis dapat menggunakan hasil optimal dari
tahap k tanpa harus kembali ke tahap awal, ongkos pada tahap k+1 = ongkos yang dihasilakan pada tahap k + ongkos dari tahap k ke tahap k +1. Dengan prinsip
optimalitas ini dijamin bahwa pengembalian keputusan pada suatu tahap adalah keputusan yang benar untuk tahap-tahap selanjutnya.
Universitas Sumatera Utara
2.8.3 Dua Pendekatan Algoritma Pemrograman Dinamik
Dua pendekatan yang digunakan dalam Pemrograman Dinamik yaitu: maju forward atau up-down dan mundur backward atau bottom up. Misalkan x
1
, x
2
, x
3,
…, x
n
menyatakan variabel keputusan yang harus dibuat masing-masing untuk tahap 1, 2, …, n, yaitu:
1.
Pemrograman Dinamik maju. Pemrograman Dinamik bergerak mulai dari tahap 1, terus maju ke tahap 2, 3, dan seterusnya sampai tahap n, urutan variabel keputusan
adalah x
1
, x
2
, x
3,
…, x
n.
Penulis disini menggunakan Program Dinamik Maju. 2.
Pemrograman Dinamik mundur. Pemrograman Dinamik bergerak mulai dari tahap n, terus mundur ke tahap n-1, n-2, dan seterusnya sampai tahap 1, urutan variabel
keputusan adalah x
n
, x
n-1
, x
n-2,
…, x
1.
Langkah-langkah Pengembangan Algoritma Pemrograman Dinamik: 1.
Karakteristik struktur solusi optimal. 2.
Definisikan secara rekursif nilai solusi optimal. 3.
Hitung nilai solusi optimal secara maju atau mundur. 4.
Konstruksi solusi optimal.
2.8.4 Algoritma Pemrograman Dinamik
Algoritma Pemrograman Dinamik adalah sebagai berikut:
Langkah 0 inisialisasi: Inisialisasi
i
s dan
ai i
m d
untuk
n i
,....., 2
, 1
Langkah 1: a.
Isi
a
s dengan 1 karena titik a adalah titik asal lintasan terpendek, jadi sudah pasti terpilih.
b. Isi
a
d dengan
tidak ada loop dari titik a ke a
Universitas Sumatera Utara
Langkah 2, 3, … , n-1: a.
Cari j sedemikian sehingga
j
s
dan
n j
d d
d d
,....., ,
min
2 1
b. Isi
j
s
dengan 1 c.
Perbarui
i
d , untuk
n i
,...., 3
, 2
, 1
dengan:
ji j
i i
m d
lama d
baru d
, min
2.9 Visual Basic 6.0