1
THE APPLICATION OF SEARCHING THE SHORTEST PATH
WITH DIJKSTRA ALGORITHM
USING J2SE (Java 2 Standard Edition)
Aditha Citra Prigianti
Major of Informatic Technique, Faculty of Industry Technology, Gunadarma University
lovely_mickeyditha@yahoo.com
Abstract
Path/the shortest path is the minimum path which is needed to achieve a place from a particular place. This application can be used for the driver or delivery service as the searching simulation of optimal distance, to get the efficiency of time, besides that this application can be used by students who want to know the process of learning about dijkstra algorithm which is used to search the shortest path.
This application will display the shortest path to get to a point desired by the user. User can be flexible to determine the point and determine the respective segments of each point with a certain quality. Results from this application are that it will display the shortest path from the specified point and also the distance required to reach that point. The purpose of this application is for the optimization of time and path to a point. This application will be created using J2SE (Java 2 Standard Edition) language program.
Abstraksi
Lintasan/jalur terpendek adalah lintasan minimum yang diperlukan untuk mencapai suatu tempat dari tempat tertentu. Aplikasi ini dapat digunakan untuk para pengendara atau jasa delivery sebagai simulasi pencarian jarak optimal, sehingga mendapatkan keefisiensian waktu, selain itu aplikasi ini dapat digunakan oleh para pelajar yang ingin mengetahui proses pembelajaran tentang algoritma dijkstra yang digunakan untuk pencarian jalur terpendek.
Dalam aplikasi ini akan menampilkan jalur terpendek untuk menuju suatu titik yang diinginkan oleh user. User dapat menentukan titik secara fleksibel dan menentukan ruas masing - masing dari titik tersebut dengan bobot tertentu. Yang dihasilkan dari aplikasi ini adalah akan menampilkan jalur terpendek dari titik yang ditentukan beserta jarak yang dibutuhkan untuk mencapai suatu titik tersebut. Tujuan dari aplikasi ini adalah untuk pengoptimalan waktu dan jalur kesuatu titik. Aplikasi ini akan dibuat dengan menggunakan bahasa pemrograman J2SE (Java 2 Standard Edition).
2
1. Pendahuluan 1.1.Latar Belakang
Menghubungkan beberapa kota besar mungkin akan dihubungkan secara langsung dengan jalan tol, namun pada umumnya, seperti pada jalan kereta api, untuk penghematan pembuatan jalan, rel kereta api dibuat tidak langsung dibuat seperti jalan tol yang menghubungkan 2 kota yang cukup jauh secara langsung, namun melalui kota-kota yang berada di antaranya, jadi jalanan ini sekaligus menghubungkan kota-kota yang ada diantara kota asal dan kota tujuan kita. Untuk menentukan jalur mana yang akan dipakai agar efisien maka diperlukan cara untuk mendapatkan jalur terpendek. Karenanya pencarian sebuah jalan dengan jarak minimal sangatlah dibutuhkan khususnya dalam dunia transportasi di dunia.
Lintasan/jalur terpendek adalah lintasan minimum yang diperlukan untuk mencapai suatu tempat dari tempat tertentu. Lintasan minimum yang dimaksud dapat dicari dengan menggunakan graf. Graf yang digunakan adalah graf yang berbobot, yaitu graf yang setiap sisinya diberikan suatu nilai atau bobot.
Penerapan jalur terpendek adalah pada TSP (Travelling Salesman Problem), yang merupakan persoalan mengunjungi sejumlah kota tepat satu kali dan kembali lagi ke kota asal keberangkatannya.
Penulis bermaksud untuk mencari penyelesaian dengan membuat suatu program aplikasi pencarian jalur terpendek dengan algoritma Dijkstra
menggunakan bahasa pemrograman J2SE (Java 2 Standard Edition).
Kelebihan dari algoritma Dijkstra
adalah memerlukan waktu yang relatif lebih sedikit dalam mencari jalur terpendek. Sedangkan alasan penulis memilih bahasa pemrograman J2SE
(Java 2 Standard Edition) untuk pembuatan aplikasi pencarian jalur terpendek ini adalah selain memiliki
class library yang lengkap, J2SE adalah bahasa pemrograman berbasis objek yang membuat pemrogram mudah untuk mendesain, membuat, mengembangkan dan mengalokasi kesalahan sebuah program dengan basis Java secara cepat, tepat, mudah dan terorganisir.
1.2.Ruang Lingkup
Dalam aplikasi ini, penulis menggunakan algoritma Dijkstra yang memang berguna untuk melakukan pencarian jalur terpendek. Dalam pencarian jalur terpendek ini menggunakan graf, penulis mengasumsikan bahwa graf tersebut adalah lokasi. Dalam aplikasi ini, penulis menampilkan suatu layar yang dapat digunakan untuk menentukan lokasi dan jarak antar lokasi yang diinginkan, selain itu juga terdapat contoh penggunaan graf untuk siapa saja yang ingin mempelajarinya. Hasil dari proses ini adalah jalur terpendek yang dapat dicapai.
2. Tinjauan Pustaka
2.1.Jalur/Lintasan Terpendek
Jalur/Lintasan terpendek adalah graf berbobot (weighted graph) atau lintasan yang memiliki total bobot minimum.
Contoh aplikasi:
Menentukan jarak terpendek/waktu tempuh tersingkat/ongkos termurah antara dua buah kota.
Menentukan waktu tersingkat pengiriman pesan (message) antara dua buah terminal pada jaringan komputer.
Terdapat beberapa jenis persoalan lintasan terpendek, antara lain:
3 Lintasan terpendek antara dua buah
simpul tertentu.
Lintasan terpendek antara semua pasangan simpul.
Lintasan terpendek dari simpul tertentu ke semua simpul yang lain. Lintasan terpendek antara dua buah
simpul yang melalui beberapa simpul tertentu.
2.2.Algoritma Dijkstra
Algoritma Dijkstra, dinamai menurut penemunya, Edsger Dijkstra, adalah algoritma dengan prinsip greedy yang memecahkan masalah lintasan terpendek untuk sebuah graf berarah dengan bobot sisi yang tidak negatif. Misalnya, bila simpul dari sebuah graf melambangkan kota - kota dan bobot tiap simpul melambangkan jarak antara kota - kota tersebut, algoritma Dijkstra
dapat digunakan untuk menemukan jarak terpendek antara dua kota. Input algoritma ini adalah sebuah graf berarah dan berbobot, G dan sebuah source vertex s dalam G. V adalah himpunan semua simpul dalam graph G. Setiap sisi dari graf ini adalah pasangan
vertices (u,v) yang melambangkan hubungan dari vertex u ke vertex v. Himpunan semua edge disebut E.
Weights dari edges dihitung dengan fungsi w: E → [0, ∞), jadi w(u,v) adalah jarak non-negatif dari vertex u ke
vertex v. Cost dari sebuah edge dapat dianggap sebagai jarak antara dua vertex, yaitu jumlah jarak semua edge
dalam path tersebut. Untuk sepasang
vertex s dan t dalam V, algoritma ini menghitung jarak terpendek dari s ke t. Dibawah ini adalah pseudocode
algoritma dijkstra :
function Dijkstra(G, w, s)
for each vertex v in V[G] d[v] := infinity
previous[v] := undefined d[s] := 0
S := empty set Q := V[G]
while Q is not an empty set u := Extract_Min(Q) S := S union {u}
for each edge(u,v) outgoing from u
if d[u] + w(u,v) < d[v] d[v] := d[u] + w(u,v) previous[v] := u.
Dengan suatu tumpukan biner, algoritma akan memerlukan O((E+V)Logv) Waktu, dan Fibonacci Tumpukan meningkatkannya menjadi O(E + Vlogv). Jadi kompleksitas algoritma (running time) dijkstra
bernilai O(V*Log V + E).
2.3.Graf
Graf adalah himpunan busur dan simpul yang banyaknya berhingga dan busur - busurnya menghubungkan sebagian atau keseluruhan pasangan dari simpul- simpulnya. Dalam menggambarkan graf, simpul digambarkan dengan lingkaran kecil atau titik tebal dan busur digambarkandengan garis, dan arah panah pada garis melambangkan arah dari garis tersebut. Graf G(V, E) terdiri atas himpunan simpul yang dinyatakan dengan V = {v1,v2, v3, ..., vn} dan himpunan busur yang dinyatakan dengan E = {e1, e2, e3, ..., en} dengan ei = (vi, vj) merupakan busur yang menghubungkan simpul vi dan simpul vj. Busur (i,j) disebut busur berarah jika terdapat suatu aliran dari simpul i menuju ke simpul j.
Di dalam situasi yang dinamis, seperti contohnya pada komputer digital, ataupun pada sistem aliran (flow system), konsep graf berarah lebih sering digunakan dibandingkan dengan konsep graf tak berarah. Graf berarah dapat digambar pada suatu bidang rata. Simpul, anggota V, digambarkan
4 sebagai titik. Sedangkan ruas A = (u,v), digambarkan sebagai garis dilengkapi dengan tanda panah mengarah dari simpul u ke simpul v. Simpul u disebut titik pangkal, dan simpul v disebut terminal dari arkus A tersebut.
Contoh Graf Berarah :
Graf berarah D (V, A) dengan :
V mengandung 4 smpul, yaitu : 1, 2, 3 dan 4.
A mengandung 7 arkus, yaitu : (1,4), (2,1), (2,1), (2,2), (2,3), (2,4), (4,3).
Gambar Contoh Graf Berarah Arkus (2, 2) : gelung / self loop
Arkus (2,1) : arkus sejajar / arkus berganda
Apabila ruas dan/atau simpul suatu graf berarah menyatakan suatu bobot, maka graf berarah tersebut dinamakan suatu jaringan atau network. Graf semacam itu biasanya digunakan untuk menggambarkan situasi dinamis.
3. Metodologi Penelitian 3.1.Analisis Kebutuhan Sistem
Pada analisis kebutuhan sistem ini, penulis menggunakan sistem
domain application, yaitu rencana pembuatan sistem. Pembuatan sistem ini dilengkapi dengan tampilan
interface yang nantinya digunakan oleh
user untuk menjalankan aplikasi, yaitu sebagai berikut :
1. Aplikasi ini adalah suatu program untuk mencari jalur terpendek dengan meletakkan simpul - simpul yang dilakukan oleh user.
2. Dalam proses meletakkan simpul - simpul tersebut, user dapat menghubungkan simpul – simpul
tersebut dengan menentukkan bobotnya.
Dalam proses hasil, user akan mendapatkan jalur terpendek dari banyak jalur yang ada dengan menghitung bobot terendah yang dilakukan oleh sistem. Sistem juga menyediakan contoh dari jalannya aplikasi untuk user yang masih kurang mengerti.
Aplikasi ini akan membantu
user untuk mencari jalur terpendek menuju ke suatu tempat dari beberapa tempat yang ada.
3.2.Flowchart (Alur Program)
Gambar Flowchart (Alur Program) Aplikasi Jalur Terpendek
Flowchart diatas merupakan gambaran secara umum bagaimana program berjalan dalam menanggapi
input pilihan dari pengguna berupa penekanan salah satu tombol yang ada
5 mulai dari jalannya aplikasi sampai aplikasi ditutup atau selesai dijalankan.
3.3.Struktur Navigasi
Struktur navigasi ini digunakan untuk mempermudah pengguna dalam menggunakan aplikasi, karena berisi urutan – urutan proses yang dapat dikerjakan.
Gambar Struktur Navigasi Aplikasi Jalur Terpendek
Untuk struktur navigasi pada aplikasi jalur terpendek ini, pertama kali aplikasi dijalankan, maka akan muncul tampilan menu utama, kemudian dari menu utama tersebut dapat menuju ke pilihan ‘Clear’, ‘Process’, ‘Step’, ‘Review’, ‘Example’, ‘Save’, ‘Load’, ‘Help’, dan ‘About’. Jika pengguna memilih salah satu pilihan tersebut, maka akan dijalankan proses dari masing – masing pilihan yang dipilih. Dari masing – masing pilihan tersebut dapat langsung menuju piihan lainnya. Kemudian terdapat pilihan ‘Exit’ yang berarti jika pengguna memilih ‘Exit’, maka akan keluar dari aplikasi.
3.4.Verifikasi Sistem
Verifikasi sistem ini dilakukan dengan implementasi coding kedalam bahasa pemrograman yang digunakan, yaitu J2SE (Java 2 Standard Edition).
Misalnya saja dalam mengaktifkan fungsi tools yang digunakan dalam tampilan aplikasi, yaitu dengan cara memasukkan coding yang berhubungan
dengan masing – masing tools tersebut, seperti saat user menginginkan untuk membersihkan layar pada aplikasi yang dibuat, maka perintah itu akan dilaksanakan dengan baik dengan cara menekan salah satu tombol yang diaktifkan untuk perintah tersebut.
3.5.Validasi Sistem
Validasi sistem ini dilakukan dengan memasukkan data kedalam sistem yang sedang berjalan, dengan hasilnya adalah sesuai dengan algoritma yang digunakan. Algorima yang dipakai dalam sistem ini adalah algoritma
dijkstra. Selain Algoritma dijkstra juga terdapat algoritma Bellman-Ford untuk memecahkan persoalan jalur terpendek ini, hanya saja algoritma ini digunakan untuk graf berbobot untuk bobot yang dapat bernilai positif dan negatif, sehingga waktu yang diperlukan untuk menuju simpul tujuan lebih lama dibanding algorima dijkstra.
Misalkan terdapat sebuah jalur seperti gambar dibawah ini:
Gambar Contoh Penerapan Jalur Terpendek
Terdapat enam buah simpul disana, yaitu simpul 1, 2, 3, 4, 5, dan 6, dengan bobot yang telah diberikan pada masing – masing simpul yang berdekatan. Dengan algoritma dijkstra
ini bobot dari masing – masing simpul yang berdekatan dibandingkan, kemudian dipilih bobot yang terkecil, begitu seterusnya sampai semua bobot dari masing – masing simpul yang berdekatan terproses, dan terdapat simpul yang terpilih yang menentukan
6 jalur terpendek. Dari gambar diatas, dapat diuraikan ke dalam tabel dibawah ini :
Tabel Hasil Contoh Penerapan Jalur Terpendek Sim pul asal Simpul Tujuan Lintasan terpendek Jara k 1 3 1 3 10 1 4 1 3 4 25 1 2 1 3 4 2 45 1 5 1 5 45 1 6 tidak ada -
Untuk pembuktiannya, dapat diterapkan pada aplikasi yang dibuat, sebagai berikut :
Gambar Hasil Validasi Sistem Pada aplikasi ini, dimisalkan simpul 1, 2, 3, 4, 5, dan 6 adalah simpul a, b, c, d, e, dan f. Setelah masing – msing bobot dimasukkan, maka terdapat hasil jalur terpendak dari simpul awal ke simpul tujuan, dengan jarak bobot yang terkecil, yaitu 10 untuk jarak a ke c, 25 untuk jarak a ke d, 45 untuk jarak a ke b, dan 45 untuk jarak a ke e.
4. Pembahasan dan Implementasi 4.1. Proses Jalannya Aplikasi
Pada aplikasi ini, penulis menggunakan array untuk menyimpan simpul – simpul yang ada. Sedangkan untuk menyimpan simpul – simpul yang berdekatan digunakan matriks 2 x 2, dimana dalam matriks ini akan disimpan bobot yang menghubungkan
kedua simpul tersebut. Aplikasi ini menggunakan algoritma dijkstra dimana proses akan berjalan sampai semua simpul sudah terpilih. Saat terdapat beberapa simpul yang telah dihubungkan dengan ruas yang memiliki bobot, maka algoritma akan menganalisis bobot dari simpul – simpul yang dipilih, kemudian akan dipilih simpul dengan bobot yang terkecil, lalu saat simpul tersebut melalui simpul lainnya, dan mendapatkan bobot yang terkecil berikutnya, maka bobot tersebut akan berubah, yaitu dengan menjumlahkan bobot terkecil sebelumnya dengan bobot terkecil berikutnya.
4.2. Uji Coba Aplikasi
Uji Coba aplikasi ini dilakukan untuk membuktikan apakah aplikasi berjalan sesuai dengan tujuan yang diharapkan dengan cara mencoba aplikasi tersebut setelah implementasi coding kedalam bahasa pemrograman yang digunakan telah dilakukan. Tahap awal adalah menjalankan aplikasinya dengan cara melakukan compile pada
command prompt¸ yaitu ‘javac
menuUtama.java’, setelah berhasil dan tidak ada error, maka jalankan aplikasinya dengan mengetik ‘java menuUtama’, maka akan muncul gambar dibawah ini :
Gambar Uji Coba Tampilan Splash Screen
7 Ini adalah tampilan splashscreen
dimana tampilan ini akan muncul beberapa menit sebelum tampilan jalur terpendek muncul. Tampilan ini berisi biografi tentang pembuat algoritma
dijkstra.
Setelah itu muncul tampilan jalur terpendek seperti dibawah ini :
Gambar Uji Coba Frame Jalur Terpendek
Terdiri dari 1 buah kanvas, teks area, dan 8 buah button yang setiap
tools memiliki fungsinya masing – masing. Maka hasilnya akan terlihat seperti dibawah ini :
Gambar Uji Coba Pembuatan Graf Setelah graf terbentuk, maka graf dapat disimpan dengan menekan tombol ‘Save’, kemudian graf dapat dipanggil kembali dengan menekan tombol ‘Load’.
Setelah graf dipanggil kembali, maka dapat dijalankan prosesnya seperti berikut :
Gambar Uji Coba Tombol Process Seperti terlihat bahwa terdapat beberapa simpul yang dihubungkan dengan ruas yang memiliki bobot, yang bootnya dapat diatur besarnya. Kemudian adanya warna simpul awal yang berbeda dengan simpul tujuannya. Untuk mengulangi proses, dapat dilakukan dengan menekan tombol ‘Review’, maka graf akan kembali pada posisi awal dimana graf belum diproses. Tekan tombol ‘Step’ untuk melakukan proses secara langkah demi langkah agar lebih dapat dipahami.
Proses ini akan berjalan dengan keterangan yang berada pada teks area untuk lebih memperjelas jalannya proses.
Terdapat pula contoh yang disediakan oleh sistem seperti berikut:
Gambar Uji Coba Tombol Example Untuk lebih jelasnya dalam menjalankan aplikasi ini, pembuat aplikasi menyediakan langkah – langkah penggunaannya, dengan
8 menekan tombol ‘Help’, tampilannya akan terlihat pada gambar berikut :
Gambar Uji Coba Tombol Help
Kemudian untuk menampilkan pembuat aplikasi, dapat menekan tombol ‘About’, tampilannya akan terlihat seperti dibawah ini:
Gambar Uji Coba Tombol About Me Tampilan ini dibuat seperti ini agar user tidak perlu menampilkan banyak frame pada proses yang sama.
Penutup
4.1.Kesimpulan
Dari hasil pembahasan dan analisa yang telah dilakukan, penulis dapat menyimpulkan bahwa :
a. Penggunaan algoritma
dijkstra untuk mencari jalur terpendek menggunakan J2SE (Java 2 Standard
Edition) pada suatu graf dapat dilakukan dengan baik. b. Penggunaan algoritma
dijkstra sebagai media pembelajaran dapat diproses dengan baik.
c. Kompleksitas waktu (running time) yang dibutuhkan pada algoritma
dijkstra lebih baik dibandingkan dengan algoritma Bellman-Ford.
4.2.Saran
Penulis menyadari masih terdapat kekurangan dari aplikasi ini. Dengan demikian penulis berharap agar aplikasi ini dapat dikembangkan lagi kearah yang lebih baik dengan penyempurnaan dikemudian hari, misalnya saja dengan menggunakan bahasa pemrograman selain J2SE ataupun penggunaan algoritma yang berbeda untuk pencarian jalur terpendek ini.
5. Daftar Pustaka
[1] Suryadi H.S., Pengantar Teori & Algoritma Graph, cetakan ketiga, Gunadarma, Jakarta, 1995.
[2] Dwi Prasetyo, Didik. 2007. 150 Rahasia Pemrograman. Jakarta: Elex Media Komputindo.
[3] Kadir, Abdul. 2007. Dasar Pemrograman JAVA 2. Yogyakarta: Andi. [4] URL:http://id.wikipedia.org/ wiki/Algoritma_Dijkstra, 22 Juni 2010. [5] URL:http://jenigroup.blogspot. com/2009/01/kekurangan-dan-kelebihan-java.html, 8 Mei 2010.