BAB 1
PENDAHULUAN
1.1 Latar Belakang
Masalah dalam menentukan lintasan terpendek di antara titik tertentu dalam suatu graph telah banyak menarik perhatian. Persoalan dirumuskan sebagai kasus khusus dan algoritma efisien yang tersedia untuk menghitung lintasan terpendek dan biaya minimum. Lintasan terpendek yang diperoleh akan meminimumkan fungsi linear yang khusus (fungsi) dari lintasan seperti biaya dan jarak (waktu). Persoalan ini akan menjadi salah satu kegunaan dari lintasan dengan waktu diminimumkan terhadap biaya yang dianggarkan. Beberapa masalah dalam menentukan lintasan terpendek dalam suatu graph antara lain: masalah transportasi, jaringan komunikasi, serta masalah pengiriman barang tidak bisa lepas dari permasalahan jarak (waktu) dan tentunya juga masalah biaya. Permasalahan dituntut untuk meminimisasi jarak (waktu) ke tujuan yaitu dengan memilih lintasan tersingkat dengan biaya yang telah dianggarkan sehingga dapat dicapai hasil yang optimal. Sebagai contoh masalah transportasi, pilihan lintasan perjalanan dari Kota A (sumber) ke Kota J (tujuan), untuk sampai ke Kota J ada beberapa lintasan berbeda yang dapat dilalui dan juga biaya perjalanan yang berbeda, permasalahan yang terjadi adalah lintasan terpendek mana yang harus dipilih yang sesuai dengan biaya yang dianggarkan untuk perjalanan tersebut agar hasil yang optimal diperoleh.
Permasalahan ini dapat dicontohkan seperti penjualan beberapa jenis peralatan rumah tangga oleh pedagang keliling dengan menggunakan gerobak ataupun alat pengangkut lainnya. Keperluan rumah tangga yang akan dijual hanya berjumlah satu
Universitas Sumatera Utara
untuk tiap jenisnya dan tiap jenis barang memiliki berat dan keuntungan. Tidak semua jenis keperluan rumah tangga yang akan dijual oleh pedagang keliling tersebut dapat dimasukkan ke dalam alat pengangkut. Tentu saja dikarenakan alat pengangkutnya memiliki kapasitas maksimum sehingga si pedagang tidak bisa memasukkan seluruh dagangannya. Pedagang tersebut harus memilih barang-barang mana saja yang harus diangkut dengan pertimbangan berat dari barang yang dibawanya tidak melebihi kapasitas maksimum gerobak dan memaksimalkan keuntungan dari barang-barang yang di bawa.
Terdapat beberapa variasi Persoalan Knapsack: 1.
Fractional Knapsack Problem Barang boleh dibawa sebagian saja (unit dalam pecahan).
2.
0-1 Knapsack Problem Setiap barang hanya tersedia satu unit, diambil atau tinggalkan.
3.
Bounded Knapsack Problem Setiap barang tersedia sebanyak N unit (jumlah barang terbatas).
4.
Unbounded Knapsack Problem Setiap barang tersedia lebih dari satu unit, jumlahnya tidak terbatas.
Pada prinsipnya persoalan Knapsack ini adalah persoalan optimisasi sehingga Algoritma harus mencari sebuah solusi paling optimal sebagai jawabannya.
Masalah khusus dari persoalan graph ini adalah mendapatkan suatu lintasan dengan jarak minimum yang memenuhi terhadap (subject to) kendala anggaran (budgetary). Kemungkinan masalah lainnya adalah minimimasi biaya yang harus memenuhi kendala jarak (waktu). Andaikan diberikan sebuah graph G dengan titik
-
N = 1,2,…,i dan garis F = 1,2,…,j serta a(x,y) dan b(x,y) adalah jarak (waktu) dan biaya. yang dihubungkan dengan tiap garis (i,j) dalam graph G. Masalahnya adalah menentukan lintasan terpendek dari titik 1 (sumber) ke titik n (tujuan) dalam graph G yang memenuhi terhadap kendala biaya yang dianggarkan. Jarak (waktu) dan biaya dari lintasan adalah jumlah nilai-nilai yang terdapat pada tiap garis dalam lintasan.
Universitas Sumatera Utara
Menentukan lintasan terpendek yang memenuhi kendala biaya yang dianggarkan pada suatu graph adalah merupakan salah satu tipe persoalan Integer Knapsack, yaitu memilih bobot minimum yang akan dimasukkan ke dalam Knapsack yang mempunyai bobot maksimum tertentu. Persoalan ini disebut Integer Knapsack karena tiap objek hanya memiliki dua status yaitu terpilih atau tidak. Untuk persoalanan Knapsack pada suatu graph, bobot minimum yang dipilih adalah merupakan lintasan terpendek yang harus dilewati dari titik sumber ke titik tujuan. Sedangkan biaya adalah sebagai kendala yang harus dipenuhi dalam menentukan lintasan terpendek.
Permasalahan Combinatorial Optimization dikenal sebagai NP Hard Problem. Persoalan Knapsack tidak dapat diselesaikan dalam waktu singkat hanya dapat diselesaikan dengan waktu yang lama disebabkan karena banyak data yang digunakan sebagai data input. Semakin besar data yang digunakan, semakin lama waktu yang dibutuhkan suatu Algoritma untuk menyelesaikannya.
Banyak Algoritma yang dapat digunakan untuk menyelesaikan persoalan Knapsack ini, misalnya Algoritma Brute Force, Branch and Bound, Greedy, Genetika dan lain-lain. Dalam tulisan ini, penulis membahas mengenai persoalan Knapsack dengan menggunakan Algoritma Pemrograman Dinamik.
Pemrograman Dinamik merupakan sebuah 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. Penemu dan orang yang bertanggung jawab atas kepopuleran Pemrograman Dinamik adalah Richard Bellman (1957).
Pada Pemrograman Dinamik, rangkaian keputusan optimal yang dibuat dengan menggunakan prinsip optimalitas. Prinsip optimalitas: jika solusi total optimal, maka bagian solusi sampai tahap ke-k juga optimal. Dengan prinsip optimalitas ini dijamin bahwa pengambilan keputusan pada suatu tahap adalah keputusan yang benar untuk tahap-tahap selanjutnya. Inti dari Pemrograman Dinamik adalah membuang suatu bagian
Universitas Sumatera Utara
kecil dari sebuah persoalan dalam setiap langkahnya, kemudian menyelesaikan persoalan yang lebih kecil tersebut dan menggunakan solusi hasil penyelesaian ini untuk ditambahkan kembali ke bagian persoalan dalam langkah berikutnya.
Pemrograman Dinamik mencoba untuk memberikan solusi yang memiliki konsekuensi yang ditimbulkan dari pengambilan keputusan pada suatu tahap. Pemrograman Dinamik mampu mengurangi pengenumerasian keputusan yang tidak mengarah ke solusi. Penerapan pendekatan Pemrograman Dinamik telah banyak diperlihatkan mampu utnuk menyelesaikan aneka masalah seperti: alokasi, muatan (Knapsack), capital budgeting, pengawasan persediaan, dan lain-lain.
1.2 Perumusan Masalah
Masalah yang dibahas adalah bagaimana menentukan lintasan terpendek yang merupakan persoalan Knapsack dari titik sumber ke titik tujuan pada suatu graph dengan pendekatan
Algoritma Pemrograman Dinamik.
1.3 Batasan Masalah
Dalam tulisan ini, masalah akan dibatasi dalam menyelesaikan Persoalan Knapsack pada lintasan terpendek dengan mencari solusi optimal dari lintasan terpendek dengan cara meminimumkan biaya dan waktu melalui pendekatan Algoritma Pemrograman Dinamik Maju.
1.4 Tinjauan Pustaka
Untuk maksud dan tujuan penelitian ini, penulis memanfaatkan buku–buku sebagai referensi di antaranya:
Universitas Sumatera Utara
Stuart E. Dreyfus dan Averii M. Law (1997) dalam bukunya “The Art And Theory Of Dynamic Programming”, memuat bahwa ada beberapa pendekatan yang digunakan dalam Algoritma Pemrograman Dinamik, salah satunya yaitu Pemrograman Dinamik Maju (forward atau up-down). Misalkan: x1, x2, ..., xn menyatakan varibel keputusan yang harus dibuat masing-masing untuk tahap 1, 2, ..., n. Pemrograman Dinamik Maju adalah program dinamis yang bergerak mulai dari tahap 1, terus maju ke tahap 2, 3 dan seterusnya sampai tahap n. Urutan variabel keputusan adalah x1, x2, …, xn. Tugas akhir ini menggunakan Pemrograman Dinamik Maju.
Pemrograman Dinamik memiliki karakteristik sebagai berikut: 1. Persoalan dapat dibagi menjadi beberapa tahap (stage), yang pada setiap tahap hanya diambil satu keputusan yang optimal. 2. Masing-masing tahap terdiri dari sejumlah status (state) yang berhubungan dengan tahap tersebut. 3. Hasil keputusan yang diambil pada tahap ditransformasikan dari status yang bersangkutan ke status berikutnya pada tahap berikutnya. 4. Jumlah pada suatu tahap bergantung pada jarak tahap-tahap sebelumnya dan meningkat secara teratur dengan bertambahnya jumlah tahapan. 5. Keputusan terbaik pada suatu tahap bersifat independen terhadap keputusan yang dilakukan tahap sebelumnya. 6. Adanya hubungan rekursif yang mengidentifikasikan keputusan terbaik untuk setiap status pada tahap k memberikan keputusan terbaik utnuk tahap sebelumnya. 7. Prinsip optimalitas berlaku pada persoalan ini.
Martello. S. and Toth. P. (1990) dalam bukunya “Knapsack Problem, Algorithms and Computer Implementations“, memuat tentang Algoritma Program 0-1 merupakan salah satu tipe persoalan Knapsack dalam keadaan tertentu dapat terjadi, masing-masing keadaan mempunyai sebuah nilai yang dihubungkan dengan besarannya. Secara nyata bahwa persoalan Knapsack akan menunjukkan kemungkinan yang terbaik.
Universitas Sumatera Utara
0-1 atau biner, Persoalan Knapsack yaitu masukan dari n item dan suatu Knapsack, dengan persamaan sebagai berikut:
Pilih subset dari item sebagai: maksimumkan
z=
j 1
pj x j
n
dengan kendala
wj xj c,
j 1
xj = 0 atau 1,
j N {1,….,n}
untuk 1 xj 0
untuk objek j memenuhi
Lainnya
Keterangan: pj = keuntungan dari item j, wj = bobot dari item j, c = kapasitas dari Knapsack
1.5 Tujuan Penelitian
Tujuan dalam penelitian ini adalah untuk memperlihatkan dan menerangkan suatu konsep algoritma untuk penyelesaian dalam menentukan lintasan terpendek sebagai contoh
persoalan Knapsack.
1.6 Kontribusi Penelitian
Dengan adanya penelitian menggunakan Algoritma Pemrograman Dinamik diharapkan dapat dikembangkan dan bermanfaat sebagai salah satu cara untuk memecahkan
Universitas Sumatera Utara
persoalan Knapsack agar menghasilkan solusi optimal dalam menyelesaikan lintasan terpendek.
1.7 Metode Penelitian.
Metode penelitian yang digunakan dalam tulisan ini adalah sebagai berikut: 1. Menguraikan teori dasar graph dan terminologi-terminologi graph yang menunjang terhadap pembahasan. 2. Menguraikan tentang konsep lintasan terpendek dan Persoalan Knapsack 3. Menguraikan tentang Algoritma Pemrograman Dinamik. 4. Menerapkan pendekatan Algoritma Pemrograman Dinamik ke dalam sebuah contoh Persoalan Knapsack yang diimplementasikan ke dalam kasus lintasan terpendek.
Universitas Sumatera Utara