PENERAPAN ALGORITMA AUCTION UNTUK MENGATASI MASALAH LINTASAN TERPENDEK (SHORTEST PATH)
Elvira Firdausi Nuzula, Purwanto, dan Lucky Tri Oktoviana Universitas Negeri Malang E-mail :
[email protected] ABSTRAK: Shortest Path Problem dideskripsikan sebagai masalah pencarian untuk menemukan lintasan terpendek antara dua atau beberapa simpul yang saling berhubungan. Salah satu algoritma untuk mengatasi masalah tersebut adalah Algoritma Auction. Algoritma tersebut merupakan algoritma perpaduan dua metode yaitu label setting (jarak terpendeknya ditemukan pada saat pertama kali titik diberi label, seperti Algoritma Dijkstra ) dan label correcting (label titik dapat terus diperbarui setelah jarak terpendeknya ditemukan, seperti Algoritma Bellman-Ford). Batasan masalah yang digunakan pada algoritma ini yaitu graf berarah yang mempunyai bobot dengan tidak memuat sisi ganda dan loop. Dari hasil penerapan terlihat bahwa lintasan dan panjang lintasan yang diperoleh sama. Namun, jumlah iterasi dan proses pencarian lebih banyak saat menggunakan Algoritma Auction. Sehingga, dapat disimpullkan bahwa Algoritma Dijkstra lebih efisien dibandingkan dengan Algoritma Auction. Hal ini dikarenakan pada algoritma Auction selalu memperbarui bobot titik dengan cara memeriksa dari titik asal. Sedangkan Algoritma Dijkstra pencarian hanya dengan sekali jalan tanpa harus bergerak mundur. Implementasi program dari Algoritma Auction yang telah dibuat sangat membantu dalam menyelesaikan permasalahan shortest path khususnya dengan banyak titik. Kata Kunci: shortest path, auction, algoritma auction
Lintasan terpendek adalah lintasan minimum yang diperlukan untuk mencapai suatu tempat dari tempat tertentu. Persoalan lintasan terpendek yaitu menemukan lintasan terpendek antara dua atau beberapa simpul lebih yang berhubungan. Persoalan mencari lintasan terpendek di dalam graf merupakan salah satu persoalan optimasi. Persoalan ini biasanya direpresentasikan dalam bentuk graf. Graf yang digunakan dalam pencarian lintasan terpendek atau shortest path adalah graf berbobot (weighted graph) (Mudiarsa, 2010). Permasalahan lintasan terpendek yang telah dibahas tersebut antara lain Penyelesaian Masalah Lintasan Terpendek (Shortest Path) Menggunakan Algoritma A* (A Star Search) oleh Erna Vianti, Penentuan Lintasan Terpendek (Shortest Path) Dengan Algoritma Dijkstra, Algoritma Floyd-Warshall dan Algoritma Bellman-Ford oleh Dwi Erna Novianti, dan Penyelesaian Masalah Lintasan Terpendek (Shortest Path) Dengan Menggunakan Algoritma Johnson oleh Dewi Wahyuningsih. Dalam jurnal yang ditulis oleh Bertsekas(1991:3) terdapat satu algoritma pencarian yang membahas permasalahan lintasan terpendek yaitu Algoritma Auction. Algoritma ini dipilih karena merupakan perpaduan dua metode, yaitu label setting (jarak terpendeknya ditemukan pada saat pertama kali titik diberi label, seperti Algoritma Dijkstra ) dan label correcting (label titik dapat terus diperbarui setelah jarak terpendeknya ditemukan, seperti Algoritma BellmanFord). Untuk mempermudah penyelesaian lintasan terpendek (Shortest Path) dengan Algoritma Auction digunakan alat bantu program yaitu Borland Delphi 7.
Algoritma Auction Algoritma Auction ini merupakan gabungan dari dua tipe algoritma, yaitu Label Setting (seperti Algoritma Dijkstra) dan Label Correcting (seperti Algoritma Bellman-Ford). Algoritma ini menyerupai algoritma label setting yang jarak terpendeknya ditemukan pada saat pertama kali titik diberi label. Selain itu juga menyerupai algoritma label correcting yang label titik dapat terus diperbarui setelah jarak terpendeknya ditemukan. Langkah-langkah untuk mencari lintasan terpendek dengan menggunakan Algoritma Auction : Input : (π0 , π) dengan π0 adalah titik asal dan π adalah titik tujuan
ο·
Inisialisasi bobot titik dengan 0 ππ = ππ = ππ = 0
(**) πΉπ β
πππ π + ππ π β π ππ
// π adalah himpunan titik-titik pada suatu graf
ο· (*) if (ππ < πΉπ ) then ππ = πΉπ ο·
go to (*)
else
ππ = arg πΉπ
ππ π = πΉπ
// ππ merupakan titik yang mempunyai bobot πΉπ
if (ππ = π) ππ = ππ π Return
else
π = ππ go to (**) Output : lintasan (π0 , β¦ , π) dan panjang lintasan = ππ β ππ0
Langkah untuk pencarian lintasan terpendek dengan Algoritma Auction pertama kali adalah inisialisasi label semua titik yang juga merupakan bobot titik dengan πππ 0. Sehingga, ππ = 0. Selanjutnya diperiksa, jika ππ < π + ππ , maka (π, π) β π΄ ππ πππ ππ diperbarui dengan ππ β π + ππ . Namun, apabila tidak memenuhi (π, π) β π΄ ππ πππ akan ditentukan titik yang dituju yaitu titik yang mempunyai π + ππ . (π, π) β π΄ ππ Proses akan berlanjut dan apabila titik yang diperoleh merupakan titik tujuan akhir, maka proses berhenti. Sehingga, diperoleh lintasan terpendek yang merupakan himpunan titik yang terpilih dari titik awal hingga titik tujuan. Panjang lintasan yang diperoleh adalah bobot titik tujuan awal dikurangi bobot titik tujuan akhir yaitu ππ β ππ . Apabila titk yang terpilih bukan merupakan titik tujuan akhir, maka proses terus berlanjut. HASIL
Dari kedua contoh yang telah, dapat menyimpulkan beberapa perbedaan dan persamaan antara Algoritma Auction dengan Algoritma Dijkstra. Dari kedua contoh tersebut, kita dapat melihat bahwa lintasan dan panjang lintasan yang
diperoleh adalah sama. Namun, jumlah iterasi dan langkah setiap iterasi pada kedua algoritma tersebut berbeda. Perbedaan serta persamaan yang ada pada Algoritma Auction dan Algoritma Dijkstra dapat dilihat dalam tabel berikut: Tabel 3.1 Persamaan Algoritma Auction dan Algoritma Dijkstra
Persamaan Algoritma Auction dengan Algoritma Dijkstra ο· Melabeli titik di awal iterasi ο· Iterasi dimulai dari titik awal menuju ke titik tujuan akhir ο· Label titik dapat berubah saat menemukan yang lebih minimum ο· Lintasan dan panjang lintasan yang diperoleh sama yaitu Surabaya β Tuban β Rembang β Kudus β Semarang dengan panjang 308 km Tabel 3.2 Perbedaan Algoritma Auction dan Algoritma Dijkstra
Perbedaan ο· Cara melabeli titik ο· Jumlah iterasi ο· Penentuan panjang lintasan
Algoritma Auction ο· Melabeli semua titik (titik awal dan titik lainnya) dengan 0 ο· Lebih banyak ο· Panjang lintasan = ππ β ππ
Algoritma Dijkstra ο· Melabeli titik awal dengan 0 dan titik lainnya dengan β ο· Lebih sedikit ο· Panjang lintasan = ππ β ππ
Dari uraian serta Tabel 3.1 dan 3.2 tentang perbedaan dan persamaan dari Algorima Auction dan Algoritma Dijkstra berdasarkan kedua contoh yang telah diberikan, diperoleh bahwa Algoritma Dijkstra lebih efisien. Hal ini disebabkan karena pada Algoritma Dijkstra pencarian lintasan terpendek dengan sekali jalan tanpa harus bergerak mundur, sedangkan dalam Algoritma Auction harus memeriksa kembali titik yang sudah terpilih dengan cara memperbarui label semua titik yang sudah dipilih. Sehingga, jumlah iterasinya akan semakin banyak, dan membutuhkan waktu yang lebih lama, khususnya untuk graf yang memiliki titik lebih banyak. Dapat disimpulkan bahwa hasil yang diperoleh dengan menggunakan Algoritma Auction dan Algoritma Dijkstra adalah sama, baik lintasan yang diperoleh maupun panjang lintasannya. Tetapi, dalam proses pencarian lintasan terpendeknya, akan lebih efisien manggunakan Algoritma Dijkstra daripada menggunakan Algoritma Auction.
Pada Bab IV ini akan dijelaskan tentang rancangan dan implementasi Algoritma Auction dengan program menggunakan bahasa pemrograman Borland Delphi 7. Rancangan program ini terdiri dari beberapa bagian yaitu data, proses, diagram alir dan tampilan program. Data yang akan digunakan pada program ini terbagi menjadi menjadi dua macam, yaitu data masukan (input) dan data hasil (output). Data masukan (input) yang digunakan pada program ini berupa titik (vertex), bobot, titik sumber (source) dan titik tujuan (sink). Data masukan titik (vertex) dilakukan dengan menggambar titik pada bidang yang tersedia. Setiap penambahan satu titik, jumlah
baris dan kolom pada bidang input bobot akan bertambah masing-masing sebanyak satu. Setiap data masukan bobot akan menghubungkan titik-titik yang bersesuaian antara baris dan kolom dengan sebuah busur. Data masukan titik sumber dan titik tujuan masing-masing menentukan titik-titik yang dijadikan sebagai titik sumber dan titik tujuan selama proses berlangsung. Data hasil (output) berupa bobot semua titik dan akan terus diperbarui selama iterasi belum berhenti, titik-titik yang dilalui, dan panjang lintasan terpendek yang diperoleh (shortest path). Titik terpilih yang dituju merupakan πππ titik yang memiliki π + ππ . Path yang dihasilkan diperoleh melalui (π, π) β π΄ ππ titik-titik terpilih. Shortest Path merupakan hasil akhir dari perolehan lintasan dengan panjang lintasan yang paling minimum dari titik sumber (source) ke titik tujuan (sink). Terdapat beberapa proses yang berlangsung pada saat menjalankan program. Proses tersebut meliputi proses mencari minimum dengan menghitung nilai setiap titik, menentukan titik selanjutnya, mencari panjang lintasan sekaligus pencarian shortest path. Proses menghitung nilai bobot titik (ππ ) digunakan untuk menghitung bobot titik selanjutnya atau menentukan titik selanjutnya yang dituju. πππ Jika memenuhi ππ < π + ππ maka akan dihitung bobot titik (π, π) β π΄ ππ selanjutnya. Sedangkan, jika tidak memenuhi maka akan diperoleh titik selanjutnya yang dituju. Apabila titik selanjutnya yang diperoleh merupakan titik tujuan maka secara langsung akan ditentukan panjang lintasannya. Proses pencarian panjang lintasan yaitu dengan cara menghitung bobot titik sumber dikurangi dengan bobot titik tujuan. Dan proses yang terakhir yakni pencarian shortest path dengan mengurutkan titik yang terpilih dari titik sumber menuju titik tujuan yang didapatkan dari setiap menghitung bobot titik (ππ ). Adapun diagram alir jalannya Algoritma Auction adalah sebagai berikut
Mulai
Input Titik, bobot, Titik awal, titik akhir
Menghitung nilai ππ
ππ <
πππ π + ππ (π, π) β π΄ ππ
Tidak
Ya
π = ππ
Perbarui bobot titik πππ ππ β π + ππ (π, π) β π΄ ππ
Dicari titik selanjutnya arg πππ ππ = π + ππ (π, π) β π΄ ππ
Tidak
Apakah sudah menemukan titik tujuan akhir
Ya Cari panjang lintasan ππ β ππ
Shortest path
Selesai
Implementasi program Algoritma ini memiliki kelebihan dan kekurangan. Kelebihan dari hasil implementasi ini antara lain : 1. Langkah-langkah menjalankan program relatif mudah dipahami. User hanya perlu menginputkan data-data yang diperlukan pada bagianbagian yang tersedia. 2. Solusi yang didapatkan ditampilkan dengan jelas, yaitu proses pencarian Shortest Path, lintasan Shortest Path, dan panjang lintasannya. 3. Dapat menyimpan data yang telah dibuat 4. Dapat membuka file yang sebelumnya telah disimpan 5. Dapat memulai dengan data baru, sehingga tidak perlu menutup program jika ingin melakukan pencarian Shortest Path pada permasalahan yang lain Selain kelebihan, program ini masih memiliki kekurangan yaitu apabila akan elah disimpan, tetapi file tersebut kosong, maka program akan mengalami gangguan. Simpulan dan Saran Beberapa kesimpulan yang dapat diambil dari permasalahan dalam penyelesaian masalah pencarian Shortest Path dengan menggunakan algoritma Auction adalah sebagai berikut : 1. Cara kerja dari algoritma Auction dapat dipahami sebagai berikut. Algoritma Auction ini dimulai dengan inisialisasi semua bobot titik dengan nol. Sebelum dilakukan penghitungan bobot selanjutnya pada setiap titik yaitu ππ , akan πππ dicari bobot sisi yang paling minimum yaitu π + ππ dari setiap (π, π) β π΄ ππ titik yang terhubung langsung. Setelah itu akan dilakukan pengecekan apabila πππ πππ ππ < π + ππ maka ππ β π + ππ . Namun, apabila (π, π) β π΄ ππ (π, π) β π΄ ππ tidak memenuhi maka diperoleh titik yang terpilih yaitu titik yang mempunyai πππ π + ππ . Dan apabila titik yang terpilih bukan titik tujuan akhir, (π, π) β π΄ ππ maka proses berlanjut. Sedangkan apabila merupakan titik tujuan akhir, maka proses berhenti. 2. Hasil yang diperoleh menggunakan Algorima Auction dan Algoritma Dijkstra berdasarkan kedua contoh yang telah diberikan, diperoleh bahwa Algoritma Dijkstra lebih efisien. Hal ini disebabkan karena pada Algoritma Dijkstra pencarian lintasan terpendek dengan sekali jalan tanpa harus bergerak mundur, sedangkan dalam Algoritma Auction harus memeriksa kembali titik yang sudah terpilih dengan cara memperbarui bobot semua titik yang sudah dipilih. Namun, baik lintasan maupun panjang lintasan yang diperoleh adalah sama. 3. Implementasi program dari algoritma Auction ini adalah program dengan inputnya adalah input titik, input bobot serta input titik asal dan titik tujuan. Hasil yang diperoleh berupa Shortest Path (Lintasan terpendek) beserta panjang lintasan tersebut. Keunggulan dari hasil implementasi ini yaitu langkah-langkah menjalankan program relatif mudah dipahami, solusi yang didapatkan ditampilkan dengan jelas, dapat menyimpan data yang telah dibuat, dapat membuka file yang sebelumnya telah disimpan, dapat memulai dengan data baru tanpa menutup program terlebih dahulu. Namun, program ini
masih memiliki kekurangan yaitu apabila suatu permasalahan tidak mempunyai solusi penyelesaian, maka proses pencarian pada bagian Hasil akan berjalan terus dan tidak dapat berhenti. Beberapa saran sebagai masukan untuk perkembangan selanjutnya yang dapat disampaikan, antara lain: 1. Algoritma Auction merupakan salah satu algoritma untuk menyelesaikan permasalahan Shortest Path. Berdasarkan analisis di atas, dapat disimpulkan bahwa alogoritma ini memiliki hasil yang sama dengan Algoritma Dijkstra. Oleh karena itu Algoritma Auction ini dapat menjadi alternatif dalam pencarian solusi untuk permasalahan Shortest Path. Untuk selanjutnya, pembaca melakukan analisa dengan membandingkan Algoritma Auction dan Algoritma Bellman-Ford. 2. Implementasi program untuk Algoritma Auction dapat membantu mempercepat pencarian solusi sehingga dapat digunakan sebagai alat bantu alternatif untuk menyelesaikan permasalahan Shortest Path. Walaupun masih terdapat kekurangan dalam program tersebut seperti yang telah dijelaskan.
Daftar Rujukan Erna, Dwi. 2005. Penentuan Lintasan Terpendek (Shortest Path) Dengan Algoritma Dijkstra, Algoritma Floyd-Warshall dan Algoritma BellmanFord. Skripsi tidak diterbitkan. Malang: FMIPA UM. Bertsekas, D.P. 1991. An Auction Algorithm for Shortest Paths,(Online), (http://www.google.co.id/search?q=algoritma%20auction%20untuk%20m asalah%.pdf), diakses 5 September 2012. Mudiarsa. 2010. Lintasan Terpendek, (Online), (http://mudiarsa.blogspot.com/2010/08/lintasan-terpendek.html), diakses 27 Januari 2013. Purwanto. 1998. Matematika Diskrit. Malang: IKIP MALANG. Vianti, Erna. 2010. Penyelesaian Masalah Lintasan Terpendek (Shortest ath)Menggunakan Algoritma A* (A Star Search). Skripsi tidak diterbitkan, Malang: FMIPA UM. Wahyuningsih, Dewi. 2007. Penyelesaian Masalah Lintasan Terpendek (Shortest Path) Dengan Menggunakan Algoritma Johnson. Skripsi tidak diterbitkan. Malang: FMIPA UM.
Malang, Juli 2013 Penulis
Pembimbing I
Prof. Drs. Purwanto, Ph.D NIP 19591222 198502 1 006 Pembimbing II
Lucky Tri Oktoviana, S.Si, M.Kom NIP 19681003 199702 2 001 Mahasiswa
Elvira Firdausi Nuzula NIM 908312411952