Analisis Pemrograman Dinamik Pendekatan Algoritma Pemrograman Dinamik Dalam Menyelesaikan Persoalan Knapsack 0/1

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