PENENTUANLOKASIDOORSMEERTERDEKATDIKOTA MEDANDENGANALGORITMAS-ORD
SKRIPSI
RIZKA FEBRISHA SIAGIAN 121401100
PROGRAM STUDI S-1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
MEDAN 2017
PENENTUAN LOKASI DOORSMEER TERDEKAT DI KOTA MEDAN DENGAN ALGORITMA S-ORD
SKRIPSI
Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Sarjana Ilmu Komputer
RIZKA FEBRISHA SIAGIAN 121401100
PROGRAM STUDI S-1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
PERSETUJUAN
Judul : PENENTUAN LOKASI DOORSMEER TERDEKAT
DI KOTA MEDAN DENGAN ALGORITMA S-ORD
Kategori : SKRIPSI
Nama : RIZKA FEBRISHA SIAGIAN
Nomor Induk Mahasiswa : 121401100
Program Studi : SARJANA(S1) ILMU KOMPUTER
Fakultas : ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
Diluluskan di Medan, 14 Maret 2017 Komisi Pembimbing :
Dosen Pembimbing II Dosen Pembimbing I
Siti Dara Fadilla, S.Si, M.T Prof. Dr. Muhammad Zarlis, M.Sc NIP. 197705162005012001 NIP. 195707011986011003
Diketahui/disetujui oleh
Program Studi S1 Ilmu Komputer Ketua,
Dr. Poltak Sihombing, M.Kom NIP. 196203171991031001
PERNYATAAN
PENENTUAN LOKASI DOORSMEER TERDEKAT DI KOTA MEDAN DENGAN ALGORITMA S-ORD
SKRIPSI
Saya menyatakan bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.
Medan, 14 Maret 2017
Rizka Febrisha Siagian 121401100
PENGHARGAAN
Puji dan syukur kehadirat Allah SWT yang telah memberikan rahmat dan hidayah-Nya, sehingga Penulis dapat menyelesaikan penyusunan skripsi ini, sebagai syarat untuk memperoleh gelar Sarjana Komputer pada Program Studi S1 Ilmu Komputer Universitas Sumatera Utara.
Penulis ingin menyampaikan rasa hormat dan terima kasih yang sebesar- besarnya kepada :
1. Bapak Prof. Dr. Runtung Sitepu, S.H., M.Hum selaku Rektor Universitas Sumatera Utara.
2. Bapak Prof. Opim Salim Sitompul, M.Sc., selaku Dekan Fakultas Ilmu Komputer dan Teknologi Informasi, Universitas Sumatera Utara.
3. Bapak Dr. Poltak Sihombing, M.Kom selaku Ketua Program Studi S1 Ilmu Komputer Universitas Sumatera Utara.
4. Bapak Prof. Dr. Muhammad Zarlis, M.Sc selaku Dosen Pembimbing I yang telah memberikan bimbingan, saran, masukan dan dukungan kepada penulis dalam pengerjaan skripsi ini.
5. Ibu Siti Dara Fadilla, S.Si, M.T selaku Dosen Pembimbing II yang telah memberikan bimbingan, saran, masukan dan dukungan kepada penulis dalam pengerjaan skripsi ini.
6. Bapak Dr. Syahril Efendi, S.Si, M.IT selaku Dosen Pembanding I yang memberikan kritik dan saran untuk penyempurnaan skripsi ini.
7. Bapak Handrizal, S.Si, M.Comp.Sc selaku Dosen Pembanding II yang memberikan kritik dan saran untuk penyempurnaan skripsi ini.
8. Seluruh dosen dan pegawai Program Studi S1 Ilmu Komputer Fasilkom-TI USU.
9. Teristimewa Ayahanda Nizamuddin Siagian, SE dan Ibunda Dra.Indriani, M.AP yang tidak henti-hentinya memberikan doa, dukungan dan motivasi kepada penulis, serta abang tersayang dr.M.Rizki Pratama Siagian yang terus memberikan dukungan dan dorongan bagi penulis untuk menyelesaikan skripsi ini.
10. Teman yang luar biasa Atikah Rahmah Zulni yang telah memberikan doa, dukungan dan membantu penulis dalam menyelesaikan skripsi ini.
11. Dan semua pihak yang telah banyak membantu yang tidak bisa disebutkan satu-persatu.
Semoga semua kebaikan, bantuan, perhatian, serta dukungan yang telah diberikan kepada penulis mendapatkan berkat yang melimpah dari Allah SWT.
Medan, 14 Maret 2017 Penulis ,
Rizka Febrisha Siagian
ABSTRAK
Banyak pengguna kendaraan yang menggunakan jasa service kendaraan. Untuk service kendaraan biasanya disebut juga dengan doorsmeer yang berada di tempat yang berbeda-beda. Terdapat banyak pilihan yang dapat ditempuh untuk menuju doorsmeer terdekat yang diinginkan, doorsmeer yang dipilih adalah doorsmeer ternama di Kota Medan. Data seperti jarak dan rute untuk menuju doorsmeer yang diinginkan diambil dari google maps, dengan jumlah simpul (vertex) sebanyak 15 buah dan sisi (edge) sebanyak 28 buah, dalam pencarian doorsmeer terdekat di Kota Medan tersebut akan diterapkan kedalam sebuah graf. Dalam menyelesaikan graf diperlukan pula algoritma, algoritma yang akan digunakan yaitu algoritma S-Ord. Algoritma S-Ord ini menggunakan perintah two-way linked-list. Dimana algoritma S-Ord ini mengunjungi seluruh jarak yang ada untuk melihat jarak mana yang terpendek. Setelah mengunjungi seluruh jarak, untuk mengetahui jarak mana yang terpendek algoritma ini mencarinya dengan melihat node sebelumnya. Berdasarkan hasil pencarian doorsmeer terdekat di Kota Medan dengan menggunakan algoritma S-Ord mendapatkan nilai rata-rata running time 4,71ms.
Kata kunci : Doorsmeer, Graf, Algoritma S-Ord
DETERMINATION NEAREST DOORSMEER LOCATION IN MEDAN CITY WITH S-ORD ALGORITHM
ABSTRACT
Many vehicle user who use the service vehicle. To service the vehicle is usually called to doorsmeer in different place. There are many options that can be taken to the nearest doorsmeer, doorsmeer that have to be chosen is the popular doorsmeer in Medan City.
The data such as distance and route to get in to doorsmeer were taken from google maps, with the number of vertices as many as 15 pieces and the edges as many as 28 pieces, to search the nearest doorsmeer in Medan City will be implemented into a graph. In completing the graph is also necessary algorithms, algorithms that will be used are S- Ord algorithm. The S-Ord algorithm using the command two-way linked-list. Where the S-Ord algorithm visited the all distance there is to see which one is the shortest distance.
After visiting the all distance, to know where the shortest distance the algorithm is looking for it to look at the previous node. Based on the results search doorsmeer nearest by using S-Ord algorithm get average value of running time 4,71 ms.
Key Words : Doorsmeer, Graph, S-Ord Algorithm
DAFTAR ISI
Halaman
Persetujuan ii
Pernyataan iii
Penghargaan iv
Abstrak vi
Abstract vii
Daftar Isi viii
Daftar Tabel x
Daftar Gambar xi
Daftar Lampiran xii
Bab 1 Pendahuluan
1.1 Latar Belakang 1
1.2 Rumusan Masalah 2
1.3 Ruang Lingkup Masalah 2
1.4 Tujuan Penelitian 4
1.5 Manfaat Penelitian 5
1.6 Metode Penelitian 5
1.7 Sistematika Penulisan 6
Bab 2 Landasan Teori
2.1 Pengertian Algoritma 8
2.2 Teori Dasar Graf 9
2.2.1 Jenis-Jenis Graf 9
2.2.2 Graf Berbobot (Weighted Graph) 11
2.3 Shortest Path 12
2.4 Linked List 12
2.4.1 Singly Linked List 12
2.4.2 Doubly Linked List 13
2.5 Algoritma S-Ord 13
Bab 3 Analisis dan Perancangan Sistem
3.1 Analisis Sistem 16
3.1.1 Analisis Masalah 16
3.1.2 Analisis Persyaratan 25
3.1.2.1 Persyaratan Fungsional 25
3.1.2.2 Persyaratan Non-Fungsional 26
3.1.3 Analisis Proses 26
3.2 Perancangan Sistem 27
3.2.1 Use Case Diagram 27
3.2.2 Activity Diagram 28
3.2.2.1 Activity Diagram Cara Kerja Sistem 28
3.2.3 Sequence Diagram 29
3.2.4.1 Flowchart Sistem 30
3.2.4.2 Flowchart Algoritma 31
3.3 Perancangan Antarmuka (Interface) 32
3.3.1 Halaman Menu Main Page 32
3.3.2 Halaman Menu Pencarian Rute Terpendek 34
3.3.3 Halaman Menu Tentang Penulis 36
3.3.4 Halaman Menu Bantuan Penggunaan 37
Bab 4 Implementasi dan Pengujian
4.1 Implementasi 39
4.1.1 Tampilan Halaman Menu Main Page 39
4.1.2 Tampilan Halaman Menu Pencarian Rute Terpendek 40 4.1.3 Tampilan Halaman Menu Tentang Penulis 41 4.1.4 Tampilan Halaman Menu Bantuan Penggunaan 42
4.2 Pengujian 42
4.2.1 Pengujian Proses Implementasi 42
4.2.2 Pengujian Proses Algoritma S-Ord 43
4.2.2.1 Perhitungan Manual Algortima S-Ord 44
4.3 Running-Time 51
4.4 Kompleksitas 54
4.4.1 Kompleksitas Algoritma S-Ord 54
Bab 5 Kesimpulan dan Saran
5.1 Kesimpulan 60
5.2. Saran 60
Daftar Pustaka 62
Lampiran
DAFTAR TABEL
Halaman
Tabel 3.1 Nama-Nama Doorsmeer yang Menjadi Vertex 17 Tabel 3.2 Data Simpul (Vertex) Pada Graf Doorsmeer di Kota Medan 22 Tabel 3.3 Keterangan Gambar Rancangan Antarmuka Halaman Menu Main Page 33 Tabel 3.4 Keterangan Gambar Rancangan Antarmuka Halaman Menu Pencarian
Rute Terpendek 35
Tabel 3.5 Keterangan Gambar Rancangan Antarmuka Halaman Menu Tentang
Penulis 37
Tabel 3.6 Keterangan Gambar Rancangan Antarmuka Halaman Menu Bantuan Pengaturan
Tabel 4.1 Hasil Pengujian Algoritma S-Ord 52
Tabel 4.2 Hasil Running Time Algoritma S-Ord 53
Tabel 4.3 Kompleksitas Fungsi Element 54
Tabel 4.4 Kompleksitas Fungsi S_Ord 54
Tabel 4.5 Kompleksitas Fungsi CariElementBerdasarkanNama 55
Tabel 4.6 Kompleksitas Fungsi FindShortestPath 56
DAFTAR GAMBAR
Halaman
Gambar 2.1 (a) Graf Sederhana, (b) Graf Ganda, dan (c) Graf Semu 10
Gambar 2.2 Gambar Berarah 10
Gambar 2.3 Graf Tidak Berarah 11
Gambar 2.4 Graf Berbobot 11
Gambar 3.1 Peta atau Rute Doorsmeer di Kota Medan 18
Gambar 3.2 Diagram Ishikawa 24
Gambar 3.3 Use Case Diagram 27
Gambar 3.4 Activity Diagram Cara Kerja Sistem 28
Gambar 3.5 Sequence Diagram Sistem 29
Gambar 3.6 Flowchart Sistem 30
Gambar 3.7 Flowchart Algoritma S-Ord 31
Gambar 3.8 Rancangan Antarmuka Halaman Menu Main Page 33 Gambar 3.9 Rancangan Antarmuka Halaman Menu Pencarian Rute Terpendek 34 Gambar 3.10 Rancangan Antarmuka Halaman Menu Tentang Penulis 36 Gambar 3.11 Rancangan Antarmuka Halaman Menu Bantuan Penggunaan 37
Gambar 4.1 Tampilan Halaman Menu Main Page 40
Gambar 4.2 Tampilan Halaman Menu Pencarian Rute Terpendek 41
Gambar 4.3 Tampilan Halaman Menu Tentang Penulis 41
Gambar 4.4 Tampilan Halaman Menu Bantuan Penggunaan 42 Gambar 4.5 Tampilan Nama dan Alamat Setiap Doorsmeer 43 Gambar 4.6 Tampilan Pengujian Pencarian Doorsmeer dengan Algoritma S-Ord 44
Gambar 4.7 Graf Algoritma S-Ord 44
Gambar 4.8 Hasil Pengujian Pertama dengan Algoritma S-Ord 51 Gambar 4.9 Hasil Pengujian Kedua dengan Algoritma S-Ord 52
DAFTAR LAMPIRAN
Halaman
Lampiran 1 Listing Program A-1
Lampiran 2 Curriculum Vitae B-1
BAB 1
PENDAHULUAN
1.1 Latar Belakang
Banyak pengguna kendaraan yang menggunakan jasa service kendaraan. Untuk service kendaraan biasanya disebut juga dengan doorsmeer yang berada di tempat yang berbeda-beda. Dalam usaha untuk menghemat tenaga dan waktu dapat diselesaikan dengan mencari lokasi doorsmeer yang terdekat atau disebut dengan istilah shortest path.
Shortest path adalah pencarian rute atau path terpendek antara node yang ada pada graph. Lintasan terpendek merupakan salah satu masalah yang dapat diselesaikan dengan menggunakan graph. Jika diberikan sebuah graph berbobot, masalah lintasan terpendek adalah bagaimana kita mencari sebuah jalur pada graph yang meminimumkan jumlah bobot sisi pembentuk jalur tersebut.
Dalam penyelesaian teori graph dalam penentuan jalur lintasan terpendek dibutuhkan suatu algoritma untuk menyelesaikannya. Terdapat banyak algoritma dalam penyelesaian masalah pencarian lintasan terpendek seperti algoritma Dijkstra, algoritma Bellman-Ford, algoritma Floyd, algoritma A*, dan sebagainya.
Contoh yang pertama pada Jurnal Sistem Informasi (JSI) [Fitria Apri Triansyah, Vol. 5, No. 2, Oktober 2013] “Implementasi Algoritma Dijkstra Dalam Aplikasi Untuk Menentukan Lintasan Terpendek Jalan Darat Antar Kota Di Sumatera Bagian Selatan”.
Pada jurnal ini penulis bertujuan dengan menerapkan alogaritma dijkstra untuk mencari lintasan terdekat dapat membantu para pengguna jalan, traveling salesman, perusahaan yang bergerak dibidang pariwisata dan angkutan antar provinsi, instansi pemerintah dan lain sebagainya terutama bagi yang membutuhkan informasi tentang lintasan terdekat.
Cafe Di Kota Malang Menggunakan Metode Bellman-Ford Dengan Location Based Service Berbasis Android”. Pada jurnal ini penulis bertujuan agar para pendatang atau wisatawan yang berkunjung ke kota Malang mengetahui semua informasi yang ada di kota Malang salah satunya adalah cafe yang berada di kota Malang. Dari permasalahan diatas penulis membuat suatu aplikasi pencarian jalur terpendek berbasis android untuk memberi informasi tentang cafe yang berada di kota Malang.
Pada penelitian kali ini penulis akan meneliti pencarian jalur terpendek antar doorsmeer dengan menggunakan algoritma S-Ord. Algoritma ini merupakan pengembangan dari algoritma Dijkstra. Algoritma ini adalah versi algoritma Dijkstra dengan Q diimplementasikan sebagai linked-list tersusun dalam penyelesaiannya (Gallo
& Pallottino, 1986).
1.2 Rumusan Masalah
Rumusan masalah yang akan dibahas dalam penelitian ini adalah bagaimana merancang aplikasi untuk mencari jarak terpendek antar Doorsmeer di Kota Medan dengan menggunakan algoritma S-Ord dan dapat mengetahui cara kerja algoritma ini dalam penyelesaian shortest path.
1.3 Ruang Lingkup Masalah
Ruang Lingkup Masalah dalam skripsi ini sebagai berikut:
1. Dalam kasus ini yang diteliti yaitu sebuah graf berarah terhubung (directed connected graph) dengan menggunakan vertex yang telah ditentukan.
2. Bobot yang digunakan adalah jarak.
3. Perhitungan dilakukan dengan membandingkan Running time dan kompleksitas Big Theta dengan satuan waktu yang digunakan adalah Milisekon serta melihat hasil (Result) dari algoritma S-Ord.
4. Studi kasus dilaksanakan di lima belas titik yaitu doorsmeer di Kota Medan.
5. Studi kasus hanya membahas tentang service kendaraan atau disebut juga dengan doorsmeer pada kendaraan roda empat.
6. Nama-nama doorsmeer yang menjadi titik dalam penelitian ini, yaitu : 1. Multra Auto Service
Jl. Asrama No.21 2. Cuci Express
Jl. Ngumban Surbakti 3. Doorsmeer Salju
Jl. A. H. Nasution 4. Sehat Pro Auto Clinic
Jl. Kenanga Raya No.66 5. Smart n Care
Jl. Sei Batang Hari No. 4 6. Duta Doorsmeer
Jl. Gatot Subroto No. 307 7. Berjaya Motor
Jl. Gajah Mada No. 9 8. Gesere Motor
Jl. K.H. Wahid Hasyim No.122 9. Modern Automatic Doorsmeer
Jl. Sisingamangaraja No.26 10. C3 Car Wash
Jl. Mongonsidi 11. Fit Service
Jl. T. Amir Hamzah
13. Tahiti Car Wash Jl. Menteng Raya 14. Sehat Panca Motor
Jl. H.M. Joni
15. Star Medan Service Jl. Willem Iskandar
7. Tidak membahas waktu dan kecepatan kendaraan dan keadaan lalu lintas dari tempat asal ke tempat tujuan.
8. Dari tempat asal ke tempat tujuan dianggap tidak ada hambatan seperti lampu merah atau hambatan lain.
9. Pengambilan data bobot jarak dengan simpul (vertex) sebanyak 15 buah dan sisi (edge) sebanyak 28 buah pada graf yang merepresentasikan jarak antara doorsmeer menggunakan bantuan dari Google Maps.
10. Aplikasi ini menggunakan data titik awal yang diinginkan dan posisi doorsmeer yang sudah ditentukan.
11. Aplikasi ini Offline dan dirancang dengan menggunakan bahasa pemograman C#.
1.4 Tujuan Penelitian Tujuan Penelitian ini adalah:
1. Menggunakan algoritma S-Ord untuk mendapatkan jalur terpendek dengan menggunakan bantuan bahasa pemrograman C#.
2. Mengimplementasikan algoritma S-Ord dalam menenetukan pencarian doorsmeer terdekat di Kota Medan.
1.5 Manfaat Penelitian
Manfaat yang diharapkan dapat dihasilkan dari penelitian ini adalah untuk mengetahui implementasi algoritma S-ord dan juga dapat membantu dan mempermudah pengguna dalam menentukan jarak terpendek antar doorsmeer di Kota Medan dengan menerapkan algoritma S-ord.
1.6 Metode Penelitian
Tahapan yang dilakukan dalam penelitian ini adalah:
1. Studi Literatur
Pada tahap ini dilakukan pengumpulan referensi yang diperlukan dalam penelitian. Hal ini dilakukan untuk memperoleh informasi dan data yang diperlukan untuk penulisan skripsi ini. Referensi yang digunakan dapat berupa buku, jurnal, artikel, situs internet yang berkaitan dengan penelitian ini.
2. Pengumpulan dan Analisis Data
Pada tahap ini dilakukan pengumpulan dan analisa data yang berhubungan dengan penelitian ini seperti fungsi algoritma S-ord dapat menentukan lintasan terpendek dari satu tempat ke tempat lainnya, banyaknya doorsmeer, lokasinya dan rute yang akan dilewati.
3. Perancangan Sistem
Merancang sistem sesuai dengan rencana yang telah ditentukan, yaitu meliputi perancangan desain awal seperti perancangan tampilan Gui(Graphic User Interface). Proses perancangan ini berdasarkan pada batasan masalah dari penelitian ini.
4. Implementasi Sistem
Pada tahap ini sistem telah selesai dikembangkan dengan algoritma S-Ord dalam penentuan lokasi doorsmeer terdekat di Kota Medan ke dalam bentuk program.
5. Pengujian Sistem
Pada tahap ini akan dilakukan pengujian terhadap sistem yang telah dikembangkan .
6. Dokumentasi Sistem
Melakukan pembuatan dokumentasi sistem mulai dari tahap awal hingga pengujian sistem, untuk selanjutnya dibuat dalam bentuk laporan penelitian (skripsi).
1.7 Sistematika Penulisan
Agar pembahasan lebih sistematis, maka tulisan ini dibuat dalam lima bab, yaitu:
BAB 1 PENDAHULUAN
Bab ini akan menjelaskan mengenai latar belakang penelitian judul skripsi
“Penentuan Lokasi Doorsmeer Terdekat Di Kota Medan dengan Algoritma S- Ord”. Rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metode penelitian, tinjauan pustaka dan sistematika penulisan skripsi.
BAB 2 LANDASAN TEORI
Bab ini membahas tentang teori-teori yang berhubungan dengan lintasan terpendek, teori graf, jenis-jenis graf, linked list, double linked list, algoritma S- Ord dan sebagainya.
BAB 3 ANALISIS DAN PERANCANGAN SISTEM
Berisi tentang uraian analisis mengenai proses kerja dari algoritma S-Ord dalam pencarian doorsmeer terdekat di Kota Medan, serta perancangan antarmuka pengguna.
BAB 4 IMPLEMENTASI DAN PENGUJIAN
Pada tahap ini dilakukan pembuatan sistem dan coding sesuai dengan analisis dan perancangan, kemudian melakukan pengujian sistem.
BAB 5 KESIMPULAN DAN SARAN
Bab terakhir akan memuat kesimpulan isi dari keseluruhan uraian dari bab-bab sebelumnya dan saran-saran dari hasil yang diperoleh yang diharapkan dapat bermanfaat dalam pengembangan selanjutnya.
BAB 2
LANDASAN TEORI
2.1 Pengertian Algoritma
Algoritma berasal dari nama seorang Ilmuwan Arab yang bernama Abu Jafar Muhammad Ibnu Musa Al Khuwarizmi penulis buku berjudul Al Jabar Wal Muqabala.
Dua Kata Al Khuwarizmi dibaca orang barat menjadi Algorism yang kemudian lambat laun menjadi Algorithm diserap dalam bahasa Indonesia menjadi Algoritma. Algoritma dapat diartikan urutan penyelesaian masalah yang disusun secara sistematis menggunakan bahasa yang logis untuk memecahkan suatu permasalahan (Barakbah, 2013).
Algoritma merupakan urutan langkah-langkah untuk menyelesaikan masalah yang disusun secara sitematis. Algoritma dibuat dengan tanpa memperhatikan bentuk yang akan digunakan sebagai implementasinya, sehingga suatu Algoritma dapat menjelaskan “bagaimana” cara melaksanakan fungsi yang dapat diekspresikan dengan suatu program atau suatu komponen fisik (Hartono, 2007).
Algoritma adalah urutan atau deskripsi langkah- langkah penyelesaian masalah yang tersusun secara logis, ditulis dengan notasi yang mudah dimengerti sedemikian sehingga langkah- langkah tersebut dapat dilaksanakan oleh pemroses dan merubah masukan masukan menjadi keluaran (Thomas, 2009).
Dari pengertian diatas maka dapat disimpulkan bahwa algoritma adalah ilmu yang mempelajari cara penyelesaian suatu masalah berdasarkan urutan langkah-langkah
terbatas yang disusun secara sistematis dan menggunakan bahasa yang logis dengan tujuan tertentu (Barakbah, 2013).
2.2 Teori Dasar Graf
Teori graf merupakan pokok bahasan yang sudah tua usianya namun memiliki banyak terapan sampai saat ini. Graf digunakan untuk merepresentasikan objek-objek diskrit dan hubungan antar objek-objek tersebut. Representasi visual dari graf adalah dengan objek dinyatakan sebagai noktah, bulatan, atau titik, sedangkan hubungan antara objek dinyatakan dengan garis (Munir, 2014).
Secara kasar, graf adalah suatu diagram yang memuat informasi tertentu jika diinterpretasikan secara tepat. Dalam kehidupan sehari-hari, graf digunakan untuk menggambarkan berbagai macam struktur yang ada. Tujuannya adalah sebagai visualisasi objek-objek agar lebih mudah dimengerti (Siang, 2006). Beberapa contoh model dalam dunia nyata yang dapat direpresentasikan sebagai graph adalah desain jaringan pipa minyak, jaringan fisik seperti jalan, rel kereta api, atau rute pesawat terbang, jaringan kabel listrik, dan sebagainya.
Tiap-tiap diagram memuat sekumpulan objek (kotak, titik, dan lain-lain) beserta garis-garis yang menghubungkan objek-objek tersebut. Garis bisa berarah ataupun tidak berarah. Garis yang berarah biasanya digunakan untuk menyatakan hubungan yang mementingkan urutan antara objek-objek. Urut-urutan objek akan berarti lain jika arah garis diubah. Sebaliknya, garis yang tidak berarah digunakan untuk menyatakan hubungan antar objek yang tidak mementingkan urutan.
Graf adalah hubungan antara simpul dan sisi. Di mana terdiri dari minimal sebuah simpul. G = (V,E), dengan V adalah himpunan simpul yang tidak kosong dan E adalah
himpunan sisi yang masing-masing anggotanya menghubungkan 2 buah simpul (Siang, 2006).
2.2.1 Jenis - Jenis Graf
Berdasarkan ada tidaknya gelang atau sisi ganda pada suatu graf, maka secara umum graf dapat digolongkan menjadi dua jenis, yaitu:
1. Graf Sederhana (simple graph) adalah graf yang tidak mengandung gelang maupun sisi ganda.Pada graf sederhana, sisi adalah pasangan tak terurut (unordered pairs) (Munir, 2014).
2. Graf Tidak Sederhana (unsimple graph) adalah graf yang mengandung sisi ganda atau gelang. Ada dua macam graf tidak sederhana, yaitu graf ganda (multigraph) dan graf semu (pseudograph). Graf ganda adalah graf yang mengandung sisi ganda. Sisi ganda yang menghubungkan sepasang simpul bisa lebih dari dua buah. Sedangkan graf semu adalah graf yang mengandung gelang (loop). Graf semu lebih umum daripada graf ganda, karena sisi pada graf semu dapat terhubung ke dirinya sendiri (Munir, 2014). Pada gambar 2.1 adalah contoh graf sederhana, graf ganda dan graf semu.
Gambar 2.1 (a) graf sederhana, (b) graf ganda, dan (c) graf semu
Sisi pada graf dapat mempunyai orientasi arah. Berdasarkan orientasi arah pada sisi, maka secara umum graf dibedakan atas dua jenis:
1. Graf berarah (direct graph) yaitu graf yang setiap sisinya diberikan arah sehingga untuk dua simpul vi dan vj, maka (vi,vj vj,vi). (Salaki, 2011). Kita lebih suka menyebut sisi berarah dengan sebutan busur (arc). Graf berarah sering dipakai untuk menggambarkan aliran proses, peta lalu lintas suatu kota (jalan searah atau dua arah), dan sebagainya. Pada graf berarah,gelang diperbolehkan, tetapi sisi ganda tidak. (Munir, 2014). Pada gambar 2.2 adalah contoh graf berarah.
Gambar 2.2 Graf Berarah
2. Graf tak berarah (undirect graf) yaitu graf yang sisinya tidak mengandung arah sehingga untuk dua simpul vi dan vj, maka (vi,vj) (vj,vi). (Salaki, 2011). Pada graf tak berarah, urutan pasangan simpul yang dihubungkan oleh sisi tidak diperhatikan.
Pada gambar 2.3 adalah contoh graf tak berarah.
Gambar 2.3 Graf Tidak Berarah 2.2.2 Graf berbobot (weighted graph)
Graf berbobot (weighted graph) adalah graf yang setiap sisinya diberi sebuah harga (bobot) (Munir, 2014). Bobot pada tiap sisi dapat berbeda-beda bergantung pada masalah yang dimodelkan dengan graf. Bobot dapat menyatakan jarak antara dua buah kota, waktu tempuh, dan sebuah simpul komunikasi ke simpul komunikasi lain. Pada gambar 2.4 adalah contoh graf berbobot.
Gambar 2.4 Graf Berbobot
2.3 Shortest Path
Shortest path adalah pencarian rute atau path terpendek antara node yang ada pada graph,biaya (cost) yang dihasilkan adalah minimum. Graf yang digunakan dalam pencarian lintasan terpendek adalah graf berbobot (weighted graph), yaitu graf yang setiap sisinya diberikan suatu nilai atau bobot. Bobot pada sisi graf dapat menyatakan jarak antar kota, waktu pengiriman pesan, ongkos pembangunan, dan sebagainya.
Asumsi yang digunakan di sini adalah bahwa semua bobot bernilai positif.
Lintasan terpendek adalah jalur yang dilalui dari suatu node ke node lain dengan besar atau nilai pada sisi yang jumlah akhirnya dari node awal ke node akhir paling kecil. Lintasan terpendek adalah lintasan minimum yang diperlukan untuk mencapai suatu tempat dari tempat lain. 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 (Hayati & Yohanes, 2014).
2.4 Linked List
Linked list adalah koleksi node dan setiap node terdiri dari bagian informasi dan bagian tautan. Bagian informasi berisi data dan bagian tautan berisi alamat dari simpul berikutnya. Manfaat utama dari linked list adalah bahwa elemen linked list dapat dengan mudah dimasukkan atau dikeluarkan tanpa realokasi atau reorganisasi seluruh struktur karena item data tidak perlu disimpan langsung dalam memori. (Karuna & Gupta, 2014).
Jadi, linked list merupakan struktur data yang memudahkan untuk mengatur ulang data tanpa harus memindahkan data dalam memori (Keogh & Davidson, 2004).
2.4.1 Singly Linked List
Singly linked list terdiri dari elemen-elemen individu,dimana masing-masing dihubungkan dengan pointer tunggal. Masing-masing elemen terdiri dari dua bagian, yaitu sebuah data dan sebuah pointer yang disebut dengan pointer next. Dengan menggunakan struktur two-member seperti ini, linked list dibentuk dengan cara menunjuk pointer next suatu elemen ke elemen yang mengikutinya. Pointer next pada elemen terakhir merupakan NULL, yang menunjukkan akhir dari suatu list. Elemen pada awal suatu list disebut head, dan elemen terakhir dari suatu list disebut tail (Keogh
& Davidson, 2004).
2.4.2 Doubly Linked List
Elemen-elemen dihubungkan dengan dua pointer dalam satu elemen. Struktur ini menyebabkan list melintas baik ke depan maupun ke belakang. Masing-masing elemen pada double linked list terdiri dari tiga bagian, disamping data dan pointer next, juga dilengkapi dengan pointer prev yang menunjuk ke elemen sebelumnya (Levitin, 2012).
Double linked list dibentuk dengan menyusun sejumlah elemen sehingga pointer next menunjuk ke elemen yang mengikutinya dan pointer prev menunjuk ke elemen yang mendahuluinya. Untuk menunjukkan head dari double linked list, maka pointer prev dari elemen pertama menunjuk NULL. Untuk menunjukkan tail dari double linked list tersebut, maka pointer next dari elemen terakhir menunjuk NULL. Susunan elemen yang dihubungkan dalam bentuk double linked list. Untuk melintas kembali melalui double linked list, kita gunakan pointer prev dari elemen yang berurutan pada arah tail ke head.
2.5 Algoritma S-Ord
Algoritma dijkstra merupakan algoritma yang paling sering digunakan dalam pencarian rute terpendek, sederhana penggunaannya denga menggunakan simpul-simpul sederhana pada jaringan jalan yang tidak rumit. Cara kerja algoritma Dijkstra yaitu dengan menggunakan prinsip antrian (queue), akan tetapi antrian yang digunakan algoritma dijkstra adalah antrian berprioritas. Jadi hanya simpul yang memiliki prioritas tertinggi yang akan ditelusuri. Dalam menentukan simpul yang berprioritas, algoritma ini membandingkan setiap nilai(bobot) dari simpul yang berada pada satu level. Selanjutnya nilai (bobot) dari setiap simpul tersebut disimpan untuk dibandingkan dengan nilai yang ditemukan dari rute yang baru ditemukan kemudian, begitu seterusnya sampai ditemukan simpul yang dicari (Fauzi, 2011).
Menurut Gallo & Pallottino (1986) algoritma S-Ord adalah versi algoritma Dijkstra dengan Q diimplementasikan sebagai linked-list tersusun. Algoritma S-Ord menggunakan perintah two-way linked-list. Untuk melakukan operasi Q pada node akhir dari arc di FS(u), list dipindahi hanya sekali mulai dari tail (label elemen tertinggi) ke head. Dan beberapa nilai Q dapat dilewati dalam proses scanning. Hal ini menarik ketika algoritma harus digunakan berkali-kali pada set data yang sama (Gallo &
Pallottino, 1988).
Berikut ini pseudocode algoritma S-Ord dalam mencari rute terpendek pada sebuah graf.
Procedure SORD(r) ; begin
repeat
comment: selection of u ; u:= Q(I) ;
remove u from Q ;
comment: exploration of FS(u) ;
foreach (u, v) ϵ FS(u) suchthat du + Iuv < dv do begin
dv := du + Iuv ; pv := u ;
if v ϵ Q then insert v into Q ;
move v to its proper position in Q end
until Q = 0 end ;
Penjelasan pseudocode diatas adalah sebagai berikut:
Didefinisikan p, d, Q
p = predecessor dari rute
d = nilai tempuh ke suatu node Q = node yang akan di proses
u = node yang sedang aktif (diproses)
FS(u) = forward star dari u, semua node yang terhubung pada u du = jarak awal
dv = jarak tujuan
I = panjang jarak awal ke tujuan Dipilih node awal yaitu U,
Dimana U merupakan elemen pertama dari seluruh node yang ditampung dalam Q, karna Q pada awalnya kosong, maka Q di isikan u.
Sehingga, u := Q[1].
Dihapus elemen u dari Q, artinya elemen pertama dari Q dihilangkan, dan dilakukan pencari an terhadap node yang terhubung terhadap u. Jika jarak yang sudah ditempuh ke node u + jarak dari u ke v < jarak yang sudah ditempuh ke node v, jarak tempuh v = jarak tempuh u + jarak dari u ke v. Predesessor dari v = u. Jika v bukan elemen dari Q maka masukkan v ke dalam Q, dan letakkan v pada urutan yang benar dalam Q.
Pencarian dilakukan hingga Q = {} Himpunan Kosong.
BAB 3
ANALISIS DAN PERANCANGAN SISTEM
3.1 Analisis Sistem
Analisis sistem merupakan tahapan yang menjelaskan beberapa permasalahan yang akan membantu proses perancangan model sistem yang nantinya akan diimplementasikan dan menjadi penyelesaian dari masalah yang dikaji. Aplikasi Penentuan Lokasi Doorsmeer Terdekat Di Kota Medan ini merupakan aplikasi untuk menentukan jarak terpendek yang paling efektif untuk mencapai tempat tersebut. Dalam tugas akhir ini fase analisis yang akan dibahas adalah analisis masalah dan analisis persyaratan, dimana analisis masalah bertujuan untuk mempermudah dalam memahami masalah yang akan dihadapi dalam sistem, sedangkan analisis kebutuhan bertujuan untuk menjelaskan fungsi-fungsi yang mampu dikerjakan oleh sistem.
3.1.1 Analisis Masalah
Banyak pengguna kendaraan yang menggunakan jasa service kendaraan. Untuk service kendaraan biasanya disebut juga dengan doorsmeer yang berada di tempat yang berbeda-beda. Dalam usaha untuk menghemat tenaga dan waktu dapat diselesaikan dengan mencari lokasi doorsmeer yang terdekat sehingga dapat membuat perjalanan lebih efektif. Dengan dasar ini penulis mencari suatu cara untuk mencari doorsmeer terdekat di Kota Medan dengan menggunakan algoritma S-Ord.
Permasalahan dari penelitian ini adalah bukan hanya sebatas pencarian jalur terpendek tetapi juga melihat hasil running time dan bagaimana cara kerja algoritma S- Ord. Dalam pengaplikasiannya graf dibentuk dengan mengikuti peta Kota Medan,
dimana vertex ditentukan berdasarkan beberapa nama doorsmeer ternama yang telah di pilih dan edge merupakan panjang jarak jalan yang akan dilalui nantinya dari doorsmeer satu ke doorsmeer lainnya.
Terdapat 15 nama doorsmeer besar di Kota Medan yang diterapkan kedalam graf pada sistem yang dibuat, nama-nama doorsmeer yang digunakan dapat dilihat pada Tabel 3.1.
Tabel 3.1 Nama-Nama Doorsmeer yang Menjadi Vertex
No Nama Foto Studio
1 Multra Auto Srvice 2 Cuci Express 3 Doorsmeer Salju 4 Sehat Pro Auto Clinic 5 Smart n Care
6 Duta Doorsmeer 7 Berjaya Motor 8 Gesere Motor
9 Modern Automatic Doorsmeer 10 C3 Car Wash
11 Fit Service 12 Auto 33
13 Tahiti Auto Car Wash
14 Sehat Panca Motor 15 Star Medan Service
Pada penelitian ini, penulis membatasi masalah hanya dengan 15 buah simpul (vertex), diharapkan akan ada penelitian lebih lanjut untuk menyelesaikan masalah yang serupa dengan memperbanyak jumlah simpul. Berikut peta rute/jalan dari 15 doorsmeer yang telah dipilih di Kota Medan dan dapat dilihat pada Gambar 3.1.
Gambar 3.1 Peta atau Rute Doorsmeer di Kota Medan
Permasalahan yang akan diangkat dari penelitian ini adalah bagaimana cara kerja algoritma S-Ord dalam pencarian lintasan terpendek. Pada penelitian ini, penentuan lintasan terpendek (shortest path) di simulasikan ke dalam model graph.
Dalam graf, penentuan hubungan antar simpul (vertex) dan sisi (edge) pada graf doorsmeer di Kota Medan sangat diperlukan, dengan memperhatikan bobot agar dapat dilakukan proses yang lebih maksimal, hubungan antar sebuah simpul (vertex) dengan simpul (vertex) lainnya saling berkaitan karna tiap simpul memiliki sisi (edge) yang menghubungkan sebuah simpul (vertex) dengan simpul (vertex) lainnya agar dapat membentuk graf. Data simpul (vertex) pada graf doorsmeer di Kota Medan yang telah dipilih dapat lihat pada Tabel 3.2.
Tabel 3.2 Data Simpul (Vertex) Pada Graf Doorsmeer di Kota Medan
No Nama Vertex Nama Tetangga Bobot
1 Multra Auto Service
Fit Service 6,4 km
Auto 33 5,3 km
Berjaya Motor 7,8 km
2 Berjaya Motor
Multra Auto Service 7,8 km
Auto 33 2,7 km
Smart n Care 1 km
Gesere Motor 450 m
Star Medan Service 9,1 km
3 Auto 33
Multra Auto Service 5,3 km
Fit Service 3,1 km
Berjaya Motor 2,7 km
4 Fit Service
Multra Auto Service 6,4 km
C3 Car Wash 8 km
Sehat Panca Motor 9,4 km
Smart n Care 4 km
Auto 33 3,1 km
5 C3 Car Wash
Fit Service 8 km
Tahiti Car Wash 6,3 km
Sehat Panca Motor 4,9 km
6 Star Medan Service Berjaya Motor 9,1 km
Duta Doorsmeer 7,2 km
7 Gesere Motor Berjaya Motor 450 m
Duta Doorsmeer 3 km
8 Smart n Care
Berjaya Motor 1 km
Fit Service 4 km
Sehat Pro Auto Clinic 3,9 km
Duta Doorsmeer 4,6 km
9 Sehat Panca Motor
Fit Service 4,1 km
C3 Car Wash 5,8 km
Tahiti Car Wash 5,6 km
Sehat Pro Auto Clinic 8,9 km
10 Tahiti Car Wash
C3 Car Wash 6,3 km
Sehat Panca Motor 1,4 km Sehat Pro Auto Clinic 10 km Modern Automatic Doorsmeer 6,3 km
11 Duta Doorsmeer
Star Medan Service 7,2 km
Gesere Motor 3 km
Smart n Care 4,6 km
Sehat Pro Auto Clinic 5,5 km
Sehat Panca Motor 8,9 km
Tahiti Car Wash 10 km
Modern Automatic Doorsmeer 12 km
Doorsmeer Salju 8,6 km
Cuci Express 4,9 km
Duta Doorsmeer 5,5 km
13 Cuci Express
Duta Doorsmeer 8,6 km
Sehat Pro Auto Clinic 4,9 km
Doorsmeer Salju 4,3 km
14 Modern Automatic Doorsmeer
Sehat Pro Auto Clinic 12 km
Tahiti Car Wash 6,3 km
Doorsmeer Salju 3,7 km
15 Doorsmeer Salju
Cuci Express 5,7 km
Sehat Pro Auto Clinic 8,6 km Modern Automatic Doorsmeer 3,7 km Analisis masalah dapat diidentifikasi dengan menggunakan diagram Ishikawa.
Diagram Ishikawa digunakan untuk mengidentifikasi kemungkinan penyebab masalah.
Diagram Ishikawa bentuknya menyerupai kerangka tulang ikan yang bagian-bagiannya meliputi kepala, sirip dan duri dimana digambarkan seperti susunan tulang ikan yang terbagi atas dua bagian yaitu bagian kepala ikan yang merupakan masalah, bagian utama tulang belakang merupakan kemungkinan-kemungkinan penyebab masalah. Diagram Ishikawa sistem ini dapat dilihat pada Gambar 3.2.
Gambar 3.2 Diagram Ishikawa
Diagram Ishikawa diatas terbagi atas 2 (dua) bagian yaitu head dan bone. Bone terdiri dari 4 aspek yaitu material, metode, user dan sistem. Material adalah apa saja yang diperlukan dalam menjalankan sistem yaitu jarak yang digunakan untuk mengetahui seberapa jauh jalan yang akan ditempuh. Metode adalah kebutuhan yang spesifik dari proses yang terdiri dari 2 (dua) bagian yaitu bagian algoritma S-Ord, dan hasil pencarian untuk menjalankan hasil graf yang terbentuk. User dalam hal ini yaitu apa saja yang akan diketahui dari sistem yang akan dikerjakan, dimana user sebelumnya belum mengetahui cara kerja sistem. Sistem adalah hal yang akan dilakukan atau dibuat yaitu dengan membuat aplikasi penentuan lokasi doorsmeer terdekat di Kota Medan dengan menggunakan algoritma S-Ord dan menerapkan cara kerja algoritma tersebut.
3.1.2 Analisis Persyaratan
Terdapat dua bagian pada analisis persyaratan yaitu persyaratan fungsional dan Sistem
User
Menganalisis kompleksitas algoritma
dan running time s-ord dalam penentuan lokasi doorsmeer terdekat di
kota medan Mencari jarak masih
digunakan secara manual
Belum adanya kinerja tentang Algoritma S-Ord
Belum adanya aplikasi untuk mencari doorsmeer terdekat di Kota Medan
Material Metode
Penginputan data vertex masih dilakukan secara manual
Penentuan node asal dan tujuan masih secara manual
User masih menghitung jarak secara manual
Untuk mengetahui cara kerja Algoritma S-Ord dan running time
3.1.2.1 Persyaratan Fungsional
Analisis kebutuhan fungsional disini mendekripsikan tentang sistem yang disediakan.
Sistem ini melakukan perhitungan jarak dan waktu pencarian doorsmeer terdekat di Kota Medan pada graph dengan algoritma S-Ord. Terdapat beberapa persyaratan fungsional antara lain:
1. Graf doorsmeer di Kota Medan yang telah dipilih dan dapat ditampilkan pada sistem sesuai dengan representasi graf yang telah ditentukan.
2. Sistem yang dibangun menggunakan simpul (vertex) dan sisi (edge) pada graf dan dapat ditampilkan pada sistem beserta nama, bobot, alamat dan rute yang akan dilalui menuju doorsmeer tersebut dari setiap sisi (edge) yang terhubung dengan simpul (vertex).
3. Sistem ini mendapatkan hasil pencarian dengan graf menggunakan algoritma S-Ord yang dapat diterapkan pada sistem.
4. Sistem menghasilkan running time agar dapat menentukan kecepatan proses dari algoritma tersebut.
5. Sistem mendapatkan hasil pada graf dengan menggunakan algoritma S-Ord yang dapat menentukan rute mana saja yang akan dilalui yang diterapkan dalam sistem.
3.1.2.2 Persyaratan Non-Fungsional
Kebutuhan non-fungsional adalah kebutuhan yang berisi kinerja operasional dan performance dari suatu sistem. Terdapat beberapa persyaratan non-fungsional yang harus dipenuhi diantaranya:
1. User Friendly
Sistem yang akan dibangun harus mudah digunakan (user friendly), artinya sistem ini akan mudah digunakan oleh user dengan tampilan yang sederhana dan dapat dimengerti.
2. Performa
Sistem atau perangkat lunak yang akan dibangun harus dapat menunjukkan hasil running time dari algoritma yang diterapkan yaitu algoritma S-Ord.
3. Hemat Biaya
Sistem atau perangkat lunak yang digunakan tidak memerlukan perangkat tambahan yang dapat mengeluarkan biaya dan menggunakan software pendukung yang bersifat freeware sehingga tidak memerlukan izin yang dapat merugikan pihak lain.
4. Manajemen Kualitas
Sistem atau perangkat lunak yang akan dibangun harus memiliki kualitas yang baik yaitu dapat menghitung jarak secara tepat serta dapat menghitung nilai running time.
3.1.3 Analisis Proses
Pembangunan sistem ini dirancang dengan menggunakan bahasa pemrograman C#.
Algoritma yang digunakan untuk mencari foto studio terdekat di Kota Medan adalah S- Ord, hasil kerja dari algoritma tersebut akan diterapkan untuk mendapatkan hasil yang baik dari graf yang telah terbentuk.
3.2 Perancangan Sistem
Pada bagian ini digunakan Unified Modeling Languange (UML) sebagai bahasa spesifikasi standar suatu model yang berfungsi untuk membantu merancang sistem.
Beberapa jenis UML yang digunakan dalam penelitian ini yaitu use case diagram, sequence diagram dan activity diagram.
3.2.1. Use Case Diagram
Use case diagram merupakan rangkaian yang saling terkait dan membentuk sistem secara teratur yang dilakukan atau diawasi oleh seorang aktor. Use case diagram biasanya menggambarkan proses sistem yaitu kebutuhan sistem dari sudut pandang user. Berikut use case diagram dapat dilihat pada Gambar 3.3.
Gambar 3.3 Use Case Diagram
3.2.2. Activity Diagram
Activity diagram dapat menggambarkan proses bisnis dan urutan aktivitas dalam sebuah proses, serta dapat menggambarkan alur aktivitas kerja pada sistem yang sedang dirancang ataupun berjalan, bagaimana masing-masing alur berawal, decision yang mungkin terjadi dan bagaimana berakhir.
3.2.2.1 Activity Diagram Cara Kerja Sistem
Activity diagram menjelaskan proses kerja dari sistem dalam proses input node serta menentukan titik awal dan akhir yang dilakukan oleh user. Activity diagram bertujuan untuk membantu memahami keseluruhan proses dan menggambarkan interaksi antara beberapa use case. Activity diagram sistem pada aplikasi yang dibuat dapat dilihat pada Gambar 3.4.
Gambar 3.4 Activity Diagram Cara Kerja Sistem
3.2.3 Sequence Diagram
Sequence diagram menggambarkan interaksi antar objek juga mengindikasikan komunikasi antar objek, sequence juga membantu untuk menggambarkan data yang masuk dan keluar sistem. Sequence diagram sistem ini dapat dilihat pada Gambar 3.5.
Gambar 3.5 Sequence Diagram Sistem
3.2.4 Flowchart
Flowchart adalah suatu bagan dengan simbol-simbol tertentu yang menggambarkan urutan proses secara mendetail dan hubungan antara suatu proses (instruksi) dengan proses lainnya dalam suatu program.
3.2.4.1 Flowchart Sistem
Berikut ini adalah flowchart yang akan menggambarkan cara kerja sistem yang akan berjalan dalam penentuan lintasan terpendek dengan menggunakan algoritma S-Ord.
Flowchart dari sistem yang dibangun dapat dilihat pada Gambar 3.6.
3.2.4.2 Flowchart Algoritma S-Ord
Berikut ini adalah flowchart yang akan menggambarkan cara kerja algoritma S-Ord yang digunakan dalam sistem penetuan lintasan terpendek. Flowchart dari algoritma S- Ord dapat dilihat pada Gambar 3.7.
Gambar 3.7 Flowchart Algoritma S-Ord
Keterangan:
P: Titik Awal d(u): Jarak Awal I: Panjang Jarak Awal ke Tujuan Q: Titik Tujuan d(v): Jarak Tujuan u : Node yang sedang aktif (diproses) FS(u) : forward star dari u, semua node yang terhubung pada u
3.3 Perancangan Antarmuka (Interface)
Perancangan antarmuka menampilkan antarmuka sistem yang akan digunakan oleh user.
Antarmuka yang baik perlu memperhatikan faktor pengguna dalam menggunakan sistem, selain untuk mempermudah pengguna dalam menggunakan sistem yang dibangun juga perlu diperhatikan kenyamanan dari pengguna dalam menggunakan sistem tersebut. Pada tampilan ini terdapat menu Main Page, Pencarian Rute Terpendek, Tentang Penulis, Bantuan Penggunaan.
3.3.1 Halaman Menu Main Page
Halaman Main Page merupakan halaman awal pada sistem saat dibuka..Pada Halaman ini terdapat beberapa menu bar yaitu Main Page, Pencarian Rute Terpendek, Tentang Penulis, Bantuan Penggunaan. Tampilan Rancangan halaman menu Main Page dapat dilihat pada Gambar 3.8 dan keterangan gambar rancangan halaman pada Tabel 3.3.
Tabel 3.3 Keterangan Gambar Rancangan Antarmuka Halaman Menu Main Page
3.3.2 Halaman Menu Pencarian Rute Terpendek
Pada halaman ini pengguna dapat melihat graf yang akan ditampilkan, dan melihat hasil total jarak, rute dan running time dari algoritma tersebut. Tampilan Rancangan halaman menu Pencarian Rute Terpendek dapat dilihat pada Gambar 3.9 dan keterangan gambar rancangan halaman pada Tabel 3.4.
No Keterangan
1 Label untuk menampilkan keterangan judul sistem
2 Tab page pada Menu “Main Page” untuk menampilkan beranda sistem 3 Tab control pada Menu “Pencarian Rute Terpendek” untuk menampilkan
graf , rute dan hasil algoritma
4 Tab control pada Menu “Tentang penulis” untuk menampilkan data dari penulis
5 Tab control pada Menu “Bantuan penggunaan” untuk menampilkan halaman pentunjuk penggunaan sistem
6 Label untuk menampilkan judul skripsi, nama dan NIM
7 Picture Box untuk menampilkan logo Universitas Sumatera Utara 8 Label untuk menampilkan tulisan Program Studi
9 Label untuk menampilkan tulisan Universitas
10 Picture Box untuk menampilkan logo Universitas Sumatera Utara
Gambar 3.9 Rancangan Antarmuka Halaman Menu Pencarian Rute Terpendek Tabel 3.4 Keterangan Gambar Rancangan Antarmuka Halaman Menu Pencarian
Rute Terpendek
No Keterangan
1 Tab control pada Menu “Main Page” untuk menampilkan beranda sistem 2 Tab control pada Menu “Pencarian Rute Terpendek” untuk menampilkan
graf , rute dan hasil algoritma
3 Tab control pada Menu “Tentang Penulis” untuk menampilkan data dari penulis
4 Tab control pada Menu “Bantuan Pengaturan” untuk menampilkan halaman pentunjuk penggunaan sistem
5 Group Box untuk menampilkan graf
7 Label untuk menampilkan tulisan doorsmeer awal 8 Combo Box untuk node asal
9 Label untuk menampilkan tulisan doorsmeer tujuan 10 Combo Box untuk node tujuan
11 Button untuk menampilkan Hasil
12 Group Box untuk menampilkan hasil output 13 Label untuk menampilkan tulisan asal 14 Label untuk menampilkan hasil asal 15 Label untuk menampilkan tulisan tujuan 16 Label untuk menampilkan hasil tujuan 17 Label untuk menampilkan tulisan total jarak 18 Label untuk menampilkan hasil total jarak 19 Label untuk menampilkan tulisan running time 20 Label untuk menampilkan hasil running time 21 Group Box untuk menampilkan rute yang dilalui 22 List box untuk menampilkan hasil rute yang dilalui 23 Button untuk mereset ulang graf
24 Group Box untuk menampilkan info vertex 25 Label untuk menampilkan tulisan kode node 26 Label untuk menampilkan hasil kode node
27 Label untuk menampilkan tulisan nama
28 Label untuk menampilkan hasil nama doorsmeer 29 Label untuk menampilkan tulisan alamat
30 Label untuk menampilkan hasil alamat doorsmeer 31 Label untuk menampilkan tulisan Program Studi
3.3.3 Halaman Menu Tentang Penulis
Halaman menu Tentang Penulis merupakan halaman yang berisi biodata penulis.
Tampilan rancangan halaman menu Tentang Penulis dapat dilihat pada Gambar 3.10 dan keterangan gambar rancangan halaman pada Tabel 3.5.
Gambar 3.10 Rancangan Antarmuka Halaman Menu Tentang Penulis
Tabel 3.5 Keterangan Gambar Rancangan Antarmuka Halaman Menu Tentang Penulis
3.3.
4 Hal ama n Men u Bantuan Penggunaan
Pada halaman ini pengguna dapat melihat petunjuk penggunaan dari sistem. Tampilan rancangan halaman menu Bantuan dapat dilihat pada Gambar 3.11 dan keterangan gambar rancangan halaman pada Tabel 3.8.
Gambar 3.11 Rancangan Antarmuka Halaman Menu Bantuan Pengaturan
No Keterangan
1 Group Box untuk menampilkan tulisan Tentang Penulis 2 Picture Box untuk menampilkan foto penulis
3 Label untuk menampilkan data penulis
Tabel 3.6 Keterangan Gambar Rancangan Antarmuka Halaman Menu Bantuan Pengaturan
No Keterangan
1 Group Box untuk menampilkan tulisan bantuan penggunaan program 2 Label untuk menampilkan urutan penggunaan aplikasi
BAB 4
IMPLEMENTASI DAN PENGUJIAN
4.1 Implementasi
Implementasi sistem merupakan lanjutan dari tahap analisis dan perancangan sistem.
Sistem ini dibangun dengan menggunakan bahasa pemrograman C# dan menggunakan SharpDevelop. Pada sistem ini terdapat 4 (empat) tampilan halaman, yaitu Halaman Main Page, Halaman Pencarian Rute Terpendek, Halaman Tentang Penulis dan Halaman Bantuan Penggunaan.
4.1.1 Tampilan Halaman Menu Main Page
Tampilan halaman menu Main Page merupakan tampilan halaman yang muncul pertama sekali pada saat sistem dijalankan. Halaman ini berisi judul sistem, nama penulis, nim penulis, logo Universitas dan nama Pogram Studi. Tampilan halaman menu Main Page dapat dilihat pada Gambar 4.1.
Gambar 4.1 Tampilan Halaman Menu Main Page
4.1.2 Tampilan Halaman Menu Pencarian Rute Terpendek
Tampilan halaman menu pencarian rute terpendek merupakan halaman yang digunakan untuk mengatur node awal, node tujuan, menampilkan rute yang akan dilalui serta menampilkan hasil total jarak dan running time. Pada halaman ini graf sudah ditampilkan. Tampilan halaman menu pencarian rute terpendek dapat dilihat pada Gambar 4.2.
Gambar 4.2 Tampilan Halaman Menu Pencarian Rute Terpendek 4.1.3 Tampilan Halaman Menu Tentang Penulis
Tampilan halaman menu tentang penulis merupakan halaman yang berisi data penulis dan penjelasan lainnya. Tampilan halaman menu tentang penulis dapat dilihat pada Gambar 4.5.
Gambar 4.3 Tampilan Halaman Menu Tentang Penulis
4.1.4 Tampilan Halaman Menu Bantuan Penggunaan
Pada halaman ini pengguna dapat melihat petunjuk penggunaan dari sistem yang dibuat.
Tampilan halaman menu bantuan penggunaan dapat dilihat pada Gambar 4.4.
Gambar 4.4 Tampilan Halaman Menu Bantuan Penggunaan
4.2 Pengujian
Pengujian sistem merupakan tahap setelah implementasi sistem. Pengujian sistem bertujuan untuk membuktikan sistem yang dibangun telah berjalan dengan baik.
Pengujian sistem ini dilakukan pada graf doorsmeer yang telah ditentukan dengan 15 buah simpul (vertex) dan 28 buah sisi (edge) dengan menghasilkankan running time dan total jarak dan rute.
4.2.1 Pengujian Proses Implementasi
Untuk melakukan proses pengujian pertama kali yang harus dilakukan adalah user membuka halaman Pencarian Rute Terpendek. Pada halaman ini user langsung menemukan graf yang telah ditentukan tanpa menginputnya terlebih dahulu. Pada
dengan cara mengarahkan kursor ke node (vertex). Tampilan tersebut dapat dilihat pada Gambar 4.5.
Gambar 4.5 Tampilan Nama dan Alamat Setiap Doorsmeer 4.2.2 Pengujian Proses Algoritma S-Ord
Algoritma S-ord adalah versi algoritma Dijkstra dengan Q diimplementasikan sebagai linked-list tersusun. Algoritma S-Ord menggunakan perintah two-way linked-list. List dipindahi hanya sekali dari tail (label elemen tertinggi) ke head. Proses pencarian doorsmeer dengan menggunakan algoritma S-Ord dapat dilihat pada Gambar 4.6.
Gambar 4.6 Tampilan Pengujian Pencarian Doorsmeer dengan Algoritma S-Ord
4.2.2.1 Perhitungan Manual Algoritma S-Ord
Contoh pencarian lintasan terpendek dengan menggunakan algoritma S-Ord dapat dilihat pada Gambar 4.7.
Tentukan node yang akan menjadi titik asal kemudian tentukan node yang akan menjadi titik tujuan. Contohnya, mencari jarak terpendek dari A menuju D. Proses pencarian dilakukan sebagai berikut :
1. Didefinisikan tabel Q, tabel Q berisi node yang akan diproses. Karena akan memulai proses pencarian dari A. Maka isi tabel Q sebagai berikut :
CATATAN PENTING : Data di dalam Tabel Q, harus diurut dari Jarak Tempuh yang paling kecil ke yang lebih besar. Inilah pembeda antara S-Ord dan Djikstra.
Tabel 4.1 Tabel Q Untuk Node A Nama Node Jarak Tempuh Ke
Node ini (d)
Predecessor
A 0 -
2. Langkah selanjutnya kita ambil baris pertama dari Tabel Q1 di atas.
Elemen pertama dari tabel Q1 adalah A.
Elemen yang baru saja kita ambil kita hapus dari tabel Q1, sehingga Q1 menjadi kosong.
Tabel 4.2 Tabel Q Setelah Node A Dihapus Nama Node Jarak Tempuh Ke
Node ini (d)
Predecessor
Cari hubungan dari A ke node yang lain. Dimana dalam kasus ini terdapat 2 node yaitu B, dan C.
Lakukan pengecekkan. Pengecekkan meliputi 2 hal berikut :
a. Apakah node tersebut sudah pernah diproses sebelumnya ? Jika sudah pernah, maka lewatkan.
b. Apakah node tersebut ada di dalam tabel Q ?
Jika tidak maka masukkan node tersebut ke dalam Q
Jika node tersebut sudah ada dalam Q, maka nilai yang paling kecil yang disimpan dalam Q.
Jadi, di sini cek node B dan C.
Untuk node B :
• Pertanyaan 1 Node tersebut belum pernah diproses sebelumnya.
• Pertanyaan 2 Node tersebut tidak ada di dalam Q. oleh karena itu kita simpan dia ke dalam Q.
Tabel 4.3 Tabel Q Untuk Node B Nama Node Jarak Tempuh Ke
Node ini (d)
Predecessor
B 10 A
Hal yang sama kita lakukan terhadap C
• Pertanyaan 1 Node tersebut belum pernah diproses sebelumnya
• Pertanyaan 2 Node tersebut tidak ada dalam Q. Oleh karena itu kita simpan dia ke dalam Q.
Tabel 4.4 Tabel Q Untuk Node C Nama Node Jarak Tempuh Ke
Node ini (d)
Predecessor
B 10 A
C 5 A
CATATAN PENTING : Data di tabel Q harus diurut berdasarkan jarak tempuh sehingga tabel Q sekarang menjadi :
Tabel 4.5 Tabel Q Setelah Diurutkan Dari Jarak Terkecil ke Terbesar Nama Node Jarak Tempuh Ke
Node ini (d)
Predecessor
C 5 A
B 10 A
Dengan begini kita dapat nyatakan bahwa node A sudah selesai kita proses.
Node yang sudah diproses = [ A ] Kembali ke langkah 2.
3. Langkah selanjutnya kita ambil baris pertama dari Tabel Q di atas.
Elemen pertama dari tabel Q adalah C.
Elemen yang baru saja kita ambil kita hapus dari Q.
Tabel 4.6 Tabel Q Setelah Node C Dihapus Nama Node Jarak Tempuh Ke
Node ini (d)
Predecessor
B 10 A
Kita cari hubungan dari C ke node yang lain. Dimana dalam kasus ini terdapat 3 node yaitu A, B dan D. Karena node A sudah kita proses, maka kita akan proses hanya B dan D.
Dari B :
• Pertanyaan 1 Node tersebut belum pernah diproses sebelumnya
• Pertanyaan 2 Node B ternyata sudah ada di dalam Tabel Q. Oleh karena itu kita cek Jarak B manakah yang lebih kecil
A B = Jarak Tempuh A + Jarak dari A ke B = 0 + 10 = 10 C B = Jarak Tempuh C + Jarak dari C ke B = 5 + 2 = 7 Dengan demikian nilai B pada tabel Q kita ganti menjadi
Tabel 4.7 Tabel Q Setelah Node B Mengganti Nilai Menjadi Lebih Kecil Nama Node Jarak Tempuh Ke
Node ini (d)
Predecessor
B 7 C
Dari D :
• Pertanyaan 1 Node tersebut belum pernah diproses sebelumnya
Tabel 4.8 Tabel Q Untuk Node D Nama Node Jarak Tempuh Ke
Node ini (d)
Predecessor
B 7 C
D 9 C
Tabel Q sudah dalam keadaan terurut.
Dengan demikian kita nyatakan bahwa node C sudah selesai diproses
Node yang sudah diproses = [ A, C ] Kembali ke langkah 2.
4. Langkah selanjutnya kita ambil baris pertama dari Tabel Q di atas.
Elemen pertama dari tabel Q adalah B.
Tabel 4.9 Tabel Q Setelah Node B Dihapus Nama Node Jarak Tempuh Ke
Node ini (d)
Predecessor
D 9 C
Kita cari hubungan dari node B. Dalam kasus ini B terhubung ke C, A dan D.
Karena C dan A sudah kita proses maka yang tersisa adalah node D.
Dari node D :
• Pertanyaan 1 Node D belum pernah diproses sebelumnya.
• Pertanyaan 2 Node D ternyata ada di dalam Tabel Q sehingga kita harus menghitung nilai jarak tempuh D yang lebih kecil.
BD = Jarak tempuh B + Jarak tempuh D = 7 + 3 = 10
Oleh karena jarak tempuh D dari node D lebih besar dari pada D yang sudah ada di dalam Tabel Q. Maka Tabel Q tidak mengalami perubahan.
Tabel 5.0 Tabel Q Untuk Node D Tidak Mengalami Perubahan Nama Node Jarak Tempuh Ke
Node ini (d)
Predecessor
D 9 C
Dengan demikian kita simpulkan bahwa node B selesai kita proses.
Node yang sudah diproses = [ A, C, B ] Kembali ke langkah 2.
5. Langkah selanjutnya kita ambil baris pertama dari Tabel Q di atas.
Elemen pertama dari tabel Q adalah D.
Sehingga tabel Q menjadi kosong.
Tabel 5.1 Tabel Q Setelah Menghapus Node D Nama Node Jarak Tempuh Ke
Node ini (d)
Predecessor
Kita cek hubungan D ke node yang lain. D terhubung ke C dan B, namun ternyata node B dan C sudah selesai di proses. Sehingga tidak ada node yang perlu diproses. Disimpulkan bahwa node D selesai diproses.
Node yang sudah diproses = [ A, C, B, D ]
Dari proses perhitungan diatas didapatkan hasil : 1. Node A, Jarak tempuh = 0, Predecessor = - 2. Node B, Jarak tempuh = 7, Predecessor = C 3. Node C, Jarak tempuh = 5, Predecessor = A 4. Node D, Jarak tempuh = 9, Predecessor = C Bagaimana cara menghasilkan rute terpendek ?
1. Dilakukan pengecekkan dari node yang menjadi tujuan. Dalam kasus ini node D.
Jarak terpendek : D
2. Kita ambil predecessor dari D yaitu C.
Jarak terpendek : C, D
3. Kita ambil predecessor dari C yaitu A.
Jarak terpendek : A, C, D
4. Karna A tidak memiliki predecessor. Maka selesai
Maka jarak terpendek yang kita dapatkan dengan menggunakan algoritma s-ord adalah:
A - C - D
4.3 Running Time
Untuk mencari running time harus dilakukan proses pengujian sistem dengan algoritma S-Ord dimana sebelum mengetahui running time-nya user harus memilih titik awal doorsmeer dia berada untuk menuju doorsmeer yang akan dikunjungi. Akan dilakukan dua kali proses pengujian, proses pengujian pertama akan dicari doorsmeer “A” ke doorsmeer “O” dengan menggunakan algoritma S-Ord dapat dilihat pada Gambar 4.8.
Gambar 4.8 Hasil Pengujian Pertama dengan Algoritma S-Ord
Dari pengujian pertama didapatkan total jarak dengan algoritma S-Ord yaitu 21,3km dan running time yang didapat yaitu 13ms.
Selanjutnya dilakukan pengujian kedua dengan menggunakan algoritma S-Ord.
Pengujian yang dicari adalah dari doorsmeer “B” ke doorsmeer “O” . Hasil dari pengujian kedua dengan algoritma S-Ord dapat dilihat pada Gambar 4.9.
Dari pengujian kedua didapatkan total jarak dengan algoritma S-Ord yaitu 13,5km dan running time yang didapat yaitu 5ms.
Lakukan pengujian seperti diatas sampai dengan pengujian ke empatbelas yaitu sampai proses pengujian foto studio “N” ke foto studio “O” dan bandingkan total jarak dan running time-nya.
Setelah dilakukannya pengujian, maka hasil dari keempatbelas dengan menggunakan algoritma S-Ord dapat dilihat pada Tabel 4.10.
Tabel 5.2 Hasil Pengujian Algoritma S-Ord Algoritma S-Ord
Pengujian ke
Node
Total Jarak (km)
Running Time (ms)
1 A – O 21,3 12
2 B – O 13,5 5
3 C – O 16,2 7
4 D – O 16,5 5
5 E – O 21,3 5
6 F – O 13,95 6
7 G – O 12,5 3
8 H – O 16,3 6
9 I – O 11,4 4
10 J – O 10 3
11 K – O 14,1 4
12 L – O 8,6 2
13 M – O 5,7 2
14 N – O 3,7 2
Berikut hasil rata-rata running time dari algoritma S-Ord dan adapat dilihat pada Tabel 4.2
Tabel 5.3 Hasil Running Time Algoritma S-Ord Algoritma S-Ord
Pengujian Ke
Node Running Time (ms)
1 A – O 12
2 B – O 5
3 C – O 7
4 D – O 5
5 E – O 5
6 F – O 6
7 G – O 3
8 H – O 6
9 I – O 4
10 J – O 3
12 L – O 2
13 M – O 2
14 N – O 2
Rata-rata 4,71
4.4 Kompleksitas
4.4.1 Kompleksitas Algoritma S-Ord
Perhitungan kompleksitas algoritma S-Ord dapat dilihat pada Tabel 4.3.
Tabel 5.4 Kompleksitas Fungsi Element
Code C # C#
public class s_ord {
private class element { C1 1 C1
public float d; C2 1 C2
public element ancestor; C3 1 C3
public string id; C4 1 C4
public string nama; C5 1 C5
public float x, y; C6 1 C6
public float jarakLink; C7 1 C7 }
Fungsi element dari algoritma S-Ord:
T(n) = C1n0 + C2n0 + C3n0 + C4n0 + C5n0 + C6n0 + C7n0
= Ɵ(n0) = Ɵ(1)
Tabel 5.5 Kompleksitas Fungsi S_Ord
Code C # C#
public s_ord(List<Link> A, List<Vertex> N){ C1 1 C1
this.A = A; C2 1 C2
foreach(Vertex item in N){ C3 n C3n this.listV.Add(new element{ C2 n C2n d = float.PositiveInfinity, C4 n C4n ancestor = null, C5 n C5n id = item.id, C6 n C6n nama = item.Nama, C7 n C7n x = item.x, C8 n C8n y = item.y, C9 n C9n jarakLink = 0, C10 n C10n });
} }
Fungsi S-Ord dari algoritma S-Ord:
T(n) = C1n0 + C2n0 + C3n1 + C2n1 + C4n1 + C5n1 + C6n1 + C7n1 + C8n1 + C9n1 + C10n1
= (C1 + C2) n0 + (C3 + C2 + C4 + C5 + C6 + C7 + C8 + C9+ C10) n1
= Ɵ (n1) = Ɵ (n)
Tabel 5.6 Kompleksitas Fungsi CariElementBerdasarkanNama
Code C # C#
element cariElementBerdasarkanNama(str ing nama){
Ɵ(1) 1 Ɵ(1)
foreach(element item in listV){ C1 n C1n if(item.nama.Equals(nama)){ C2 n C2n
return item; C3 n C3n
} }
return null; C3 1 C3
}
Fungsi Cari Element Berdasarkan Nama dari algoritma S-Ord:
T(n) = Ɵ(1) + C1n1 + C2n1 + C3n1 + C3n0
= Ɵ(1) + (C1 + C2 + C3) n1 + C3n0
= Ɵ (n)
Tabel 5.7 Kompleksitas Fungsi FindShortestPath
Code C # C#
public List<Link> findShortestPath(Verte x_u, Vertex_v){
C1 1 C1
u= new element{ C2 1 C2
d= 0, C3 1 C3
ancestor= null, C4 1 C4
id= _u.id, C5 1 C5
nama= _u.Nama, C6 1 C6
x= _u.x, C7 1 C7
y=_u.y, C8 1 C8
jarakLink= 0 C9 1 C9
};
Q.Add(u); C10 1 C10
do { C11 n C11n
u=Q[0]; C2 n C2n
Q.Remove(u); C12 n C12n
List<Link> u_v= new List<Link>
();
foreach(Link link in A){ C13 n2 C13n2 bool sudahDiproses= false; C14 n2 C14n2