di mana harga seluruhnya dari lintasan terpendek ini adalah: Z
= 2x
1
+ 2x
2
+ 3x
3
+ 5x
8
+ 4x
5
+ 3x
2
+ x
4
+ x
6
= 2 + 2 + 3 + 5 + 4 + 3 + 1 + 1 = 21
3.3 Analisis Pemrograman Dinamik
Pemrograman Dinamik merupakan 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 Pemrograman Dinamik, rangkaian keputusan yang optimal dibuat dengan menggunakan Prinsip Optimalisasi. Prinsip Optimalisasi: jika solusi optimal, maka
bagian solusi pada tahap ke-k juga optimal. Prinsip Optimalisasi berarti bahwa jika bekerja dari tahap k ke tahap k+1, maka dapat menggunakan hasil optimal dari tahap k
tanpa harus kembali ke tahap awal. Ongkos pada tahap k+1 = ongkos yang dihasilkan pada tahap k + ongkos dari tahap k ke tahap k+1. Dengan prinsip optimalisasi ini
dijamin bahwa pengambilan keputusan yang benar untuk tahap-tahap selanjutnya.
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 jalur terpendek, jadi sudah pasti terpilih.
b. isi
a
d dengan 0 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.
Perbaharui
i
d untuk
n i
,...., 3
, 2
, 1
dengan
i
d baru
ji j
i
m d
lama d
, min
Algoritma Pemrograman Dinamik bekerja dengan cara menyimpan setiap titik v, dengan d[v] menyatakan lintasan terpendek yang telah ditemukan antara s dan v. Pada
awalnya, nilai ini adalah 0 untuk sumber titik s d[s]=0, dan ketidakterbatasan untuk semua titik lain, yang menyatakan fakta bahwa v tidak mengetahui lintasan manapun
yang mengacu ke arah titik itu d[v]=
untuk tiap-tiap v di dalam V, kecuali s. Ketika algoritma berhenti, d[v] akan menyatakan nilai lintasan yang paling pendek dari s sampai
v atau bernilai tak berhingga, sehingga lintasan tersebut tidak ada.
Operasi dasar dari algoritma Pemrograman Dinamik adalah relasi sisi pada suatu sisi dari e ke v, jika diketahui lintasan yang paling pendek dari s ke e d[e] maka dapat
diperluas menjadi lintasan dari s ke v dengan menambahkan sisi e,v pada bagian akhir. Lintasan akan mempunyai panjang d[e]+we, v. Jika nilai ini adalah kurang dari d[v]
yang sekarang, maka dapat mengganti nilai d[v] yang sekarang dengan nilai yang baru itu. Relaksasi sisi diterapkan sampai semua nilai-nilai d[v] mengembalikan nilai lintasan
yang paling pendek dari s ke v. Algoritma ini diorganisir sedemikian sehingga masing- masing sisi e,v direlaksasi hanya sekali, ketika d[e] telah mencapai nilai akhirnya.
Ide relaksasi ini datang dari suatu analogi antara perkiraan lintasan yang paling pendek dan panjang suatu pegas seperti bentuk sekrup yang bukan dirancang untuk
tekanan. Pada awalnya, nilai lintasan yang paling pendek adalah suatu optimisasi yang dianalogikan dengan pegas. Ketika lintasan lebih pendek ditemukan, nilai yang telah
diperkirakan diturunkan, dan pegas diperlonggar.
Universitas Sumatera Utara
Algoritma memelihara dua himpunan titik S dan Q, himpunan S berisi semua titik yang telah diketahui bahwa nilai d[v] adalah sudah merupakan nilai terpendek dan
himpunan Q berisi semua titik lainnya. Pada awalnya himpunan kosong, dan pada setiap langkah satu titik dipindahkan dari Q ke S. Titik ini dipilih sebagai titik dengan nilai d[u]
paling rendah. Ketika suatu titik e dipindahkan ke S, algoritma ini merelaksasi setiap sisi e,v.
Contoh: Misalkan lintasan dari kota A ke kota J yang dapat dilihat pada Gambar 3.2. Angka pertama pada busur v
i
,v
j
diberikan av
i
,v
j
[biaya], dan angka ke dua bv
i
,v
j
[waktu], gambar sebagai berikut:
6,5 3,2
9,2 4 3,6
6,6 7,5
2,7 3,1
5,5 8,3
5,6 9,3
2.3 4,7
Gambar 3.2. Lintasan Terpendek Terpendek dengan Nilai Biaya dan Waktu
Angka pada setiap garis penghubung merupakan biaya dan waktu. Dari Gambar di atas sehingga persoalan ini dapat dibagi menjadi 4 empat tahap nomor tahap dimulai
dari kota tujuan berurutan ke kota asal. Tujuan pencarian solusi optimal adalah dengan meminimalkan biaya dengan waktu
tempuh terpendek. Andaikan z
1
f = fungsi biaya dan z
2
f = fungsi waktu yang ditempuh.
Formulasi tujuan: Min
z
1
f =
, .
,
j i
j i
v v
f v
v a
z
2
f =
, .
,
j i
j i
v v
f v
v b
7,1 5,5
2,4
3,6 7,4
A B
C D
E
F G
H
I J
Universitas Sumatera Utara
Berikut langkah pencarian lintasan terpendek dengan minimalkan biaya dan waktu:
Langkah 1:
Persoalan dipecah menjadi sub-persoalan atau tahapan yang lebih kecil. Misalkan x
1
, x
2
, x
3
, x
4
adalah titik yang dikunjungi pada tahap-i i = 1, 2, 3, 4
6,5 3,2
9,2 4 3,6
6,6 7,5
3,1 5,5
8,3 5,6
9,3 2.3
4,7
Tahap-1 Tahap-2 Tahap-3 Tahap-4
Gambar 3.3 Lintasan Terpendek dengan Nilai Biaya dan Waktu
Langkah 2:
Tentukan S
i
= Awal dan x
i
= Tujuan, i = 1, 2, 3, 4 1.
Isi S
i
dengan nilai Stage karena titik i adalah titik asal lintasan terpendek sudah pasti terpilih.
2. Isi x
i
dengan n tidak ada loop dari titik i ke i.
Langkah 3:
Perbaharui x
i
: x
i
baru = min {x
i
lama} 7,1
5,5 2,4
3,6 7,4
A B
C D
E
F G
H
I J
Universitas Sumatera Utara
Langkah 4:
Tentukan solusi optimal yang dihasilkan pada setiap tahap dalam bentuk fungsi rekursif, yaitu:
f
i
S
i
= min {f
i
S
i
, x
i
}
di mana f
i
S
i
= hasil optimal dari keputusan pada tahap-i. Sehingga didapat hasil seperti tahap-tahap sebagai berikut:
Tahap-1 :
Tabel 3.2. Penentuan Nilai Minimum untuk Tahap-1 pada x
1
x
1
f
1
S
1
,x
2
= CS
1
,x
1
f
1
S
1
x
1
S
1
A B
6,6 6,6
B C
8,3 8,3
C
Tahap-2 :
Tabel 3.3. Penentuan Nilai Minimum untuk Tahap-2 pada x
2
x
2
f2S
2
,x
2
= cS
2
,x
2
+ f
1
s
1
f
2
S
2
x
2
S
2
B C
D 3+6=9,2+6=8
7+8=15,4+3=7 9,7
B,C E
2+6=8,4+6=10 5+8=13,5+3=8 8,8
B,C F
7+6=13,1+6=7 3+8=11,6+3=9 11,7
C,B
Universitas Sumatera Utara
Tahap-3 :
Tabel 3.4. Penentuan Nilai Minimum untuk Tahap-3 pada x
3
x
3
f
3
S
3
,x
3
= CS
3
,x
3
+ f
2
S
2
f
3
S
3
x
3
S
3
D E
F G
6+9=15,5+7=12 7+8=15,5+8=13 4+11=15,3+7=10 15,10
D or F,F
H 2+9=11,7+7=14 5+8=13,6+8=14
3+11=14,1+7=8 11,8
D,F I
5+9=14,6+7=13 3+8=11,1+8=9
4+11=15,7+7=14 14,9
D,E
Tahap-4 :
Tabel 3.5. Penentuan Nilai Minimum untuk Tahap-4 pada x
4
x
4
f
4
S
4
,x
4
= CS
4
,x
4
+ f
3
S
3
f
4
S
4
X
4
S
4
G H
I J
3+15=18,6+10=16 5+11=16,5+8=13 2+14=16,3+9=12 16,12
H or I,I
Pembacaan tabel-tabel ini untuk menentukan tingkat optimal adalah dari tahap-1 tahap-
2 tahap-3 tahap-4.
Lintasan terpendek yang minimumkan biaya adalah: A
B D H J, dengan total biaya = 5+2+3+6 = 16, dengan total waktu = 5+7+2+6 = 20, atau z
1
= 16,20 A
B D I J, dengan total biaya = 2+5+3+6 = 16, dengan total waktu = 3+6+2+6 = 17 atau z
3
= 16,17 Lintasan terpendek yang meminimumkan waktu adalah:
A B F I J, dengan total waktu = 3+ 1+6+6 = 16, dengan total biaya =
2+4+7+6 = 19, atau z
2
= 16,19 A
C F I J, dengan total waktu = 3+1+4+6 =14, dengan total biaya = 2+4+3+8 = 17 atau z
4
= 14,17
Universitas Sumatera Utara
Dalam masalah yang pertama, biaya yang diperoleh minimum, namun waktu yang dibutuhkan tidak layak dan dalam masalah kedua, kendala tambahan adalah berlebihan
dalam hal biaya.
Untuk menentukan
alternatif lintasan
terpendek lain
dengan tujuan
meminimumkan kedua kendala. Secara grafik dapat diilustrasikan penentuan solusi optimal dari masalah ini adalah seperti terdapat pada gambar di bawah ini.
z
2
20 z
1
= 16,20
19
18
17 z
2
= 16,17
16 z
3
= 16,19
15 z
4
= 14,17 z
1
15 16 17 18 19
Solusi Optimal 16,17
Gambar 3.4 Ilustrasi Pencarian Lintasan Terpendek
Ditemukan lintasan terpendek yang meminimumkan biaya dan waktu adalah z = 16,17 dengan lintasan: A
B D I J.
Universitas Sumatera Utara
3.4 Flowchart Pemrograman Dinamik