ANALISIS DAN PERANCANGAN APLIKASI GRAPH DENGAN MENGGUNAKAN METODE SPANNING CYCLE 1 Dian Prayudha, 2 T. M. Diansyah, 3 Nur Wulan, Prodi Teknik Informatika Sekolah Tinggi Teknik Harapan Medan Jl.HM Jhoni No 70 Medan,Indonesia [email protected] Abstrak Permasalahan dalam menentukan spanning cycle pada suatu graph dapat direpresentasikan dalam perencanaan perjalanan yang menghubungkan beberapa sasaran atau lokasi. Perencanaan yang dimaksud seperti pembangunan jaringan telepon, rute-rute wisata dan lain-lain. Jumlah spanning cycle yang mungkin terjadi tergantung dari banyaknya vertex dan juga edge yang digunakan untuk menghubungkan setiap vertex dalam menggambarkan graph. Semakin banyak jumlah vertex pada suatu graph maka akan semakin banyak pula edge yang akan menghubungkan vertex tersebut dan secara otomatis akan menambah jalur-jalur yang akan dilalui atau semakin banyak pula spanning cycle yang akan terbentuk. Algoritma Depth First Search merupakan salah satu algoritma pencarian yang bisa menyelesaikan pencarian spanning cycle pada graph. Dan metode Pembangkitan dan Pengujian (Generate and Test) merupakan suatu metode yang bisa menentukan atau membandingkan setiap lintasan spanning cycle yang telah terbentuk untuk menghasilkan spanning cycle minimum. Kata Kunci: Graph, Depth First Search, Spanning Cycle Abstract Problems in determining the spanning cycle in a graph can be represented in trip planning that connects multiple targets or location. Planning is like building telephone networks, these routes travel and others. Total spanning cycle may occur depending on the number of vertices and edges that are used to connect each vertex in the graph illustrates. The more the number of vertices in a graph it will be the more edge that will connect the vertex and automatically adds tracks to be traversed or the more spanning cycle that will be formed. Depth First Search algorithm is one of the search algorithms can complete a quest spanning cycle on a graph. And methods Generation and Testing (Generate and Test) is a method that can determine or compare each trajectory spanning cycle that has been formed to generate minimum spanning cycle. Key words: Graph, Depth First Search, Spanning Cycle 1. Pendahuluan Dalam berbagai situasi kehidupan kita, banyak diantaranya yang dapat kita presentasikan secara grafik yang terdiri atas titik-titik dan garis-garis yang menghubungkan titik-titik tersebut. Misalnya, titik-titik tersebut mewakili kota, dengan garis-garis mewakili jalan yang menghubungkan kota tersebut dengan kota lainnya atau bisa juga titik-titik itu mewakili manusia dengan garis mewakili hubungan manusia tersebut dengan manusia yang lainnya. [3] Graph sebagai salah satu cabang ilmu matematika, terbukti sangat membantu dalam memecahkan persoalan secara efisien. Salah satu contoh penerapan graph adalah mencari solusi permasalahan dalam menentukan jalurjalur pendistribusian barang. Seorang manager pendistribusian akan menentukan jalur-jalur yang akan ditempuh dalam mendistribusikan barang-barang kepada konsumen (pelanggan) agar dapat mengunjungi semua tempat tujuan dengan satu kali kunjungan dan kemudian kembali ke tempat asal (dalam hal ini kantor pendistribusian). Berdasarkan latar belakang diatas, maka rumusan masalah yang dapat diambil yaitu: 1. Bagaimana menentukan jalur-jalur yang membentuk lingkaran pertemuan satu titik awal dan titik akhir dari suatu graph. 2. Menentukan lintasan terpendek (shortest path) dari lingkaran graph yang sudah terbentuk. 3. Menentukan dalam pencarian jalur terpendek tidak ada siklus atau circuit yang mengunjungi setiap titik simpulnya lebih dari satu kali. Pengecualian bila tidak awal dan titik akhir adalah sama. 4. Memastikan dimana lintasan terpendek akan menjadi solusi terbaik dalam pencarian jalur tersebut. 5. Bagaimana cara merancang aplikasi yang dapat menentukan jalur terpendek dari suatu lintasan graph. Pada penyelesaian tugas akhir ini terdapat beberapa batasan masalah yaitu : 1. Graph yang digunakan adalah graph yang terbatas (finite), sederhana (tidak ada multiple edge dan loop), graph tidak berarah yang memiliki bobot dan merupakan graph tertutup. 2. Graph dengan vertex minimal tiga (3) dan maksimal dua puluh enam (26). 3. Penamaan vertex diberi dengan nama A, B, C, D, dan seterusnya sampai dengan Z. Adapun tujuan dari hasil penelitian ini adalah sebagai berikut : Tujuannya adalah merancang sebuah perangkat lunak yang bertujuan untuk membantu dalam menggambarkan spanning cycle dan menentukan spanning cycle minimum yang dapat terbentuk dari suatu graph. Adapun mamfaat dari hasil penelitian ini adalah sebagai berikut : Hasil penelitian ini berupa sebuah perangkat lunak yang bermanfaat untuk digunakan sebagai proses belajar mengajar dalam mata kuliah Matematika Diskrit Dan Teori Graph. 2. Pengertian Graph Graph merupakan representasi dari suatu masalah yang digambarkan sebagai sekumpulan noktah atau simpul. Lintasan terpendek (Shortest Path) merupakan lintasan minimum yang diperlukan untuk mencapai suatu titik-titik tertentu. Dalam pencarian lintasan terpendek masalah yang dihadapi adalah mencari lintasan mana yang akan dilalui sehingga di dapat lintasan yang paling pendek dari suatu verteks ke verteks yang lain. [6] Ada beberapa macam persoalan lintasan terpendek, antara lain: - Lintasan terpendek antara dua buah verteks. - Lintasan terpendek antara semua pasangan verteks. - Lintasan terpendek dari verteks tertentu ke semua verteks lain. Lintasan terpendek antara dua buah verteks yang melalui beberapa verteks tertentu. [7] 2.1 Element – element Graph 1. Lintasan (Path) Lintasan merupakan tapak dimana semua simpulnya berlainan, kecuali jika lintasan tersebut merupakan lintasan tertutup sehingga simpul awal sama dengan simpul akhir. [2] 2. Jalan (Walk Jalan merupakan urutan simpul dan sisi yang bergantian tidak kosong dan berhingga yang dimulai dan diakhiri dengan simpul, dimana setiap sisi menghubungkan dua simpul ( sebelum dan sesudah sisi tersebut). [2] 3. Siklus (Cycle) Disebut sebagai Siklus (Cycle) jika verteks awal dan verteks akhirnya sama, dan tidak ada edge yang berulang pada path tersebut. [1] 4. Sirkuit dan Lintasan Euler Lintasan Euler adalah Lintasan Euler ialah lintasan yang melalui masingmasing edge di dalam graf tepat satu kali. Sirkuit Euler ialah sirkuit yang melewati masing-masing edge tepat satu kali. [4] 5. Spanning Cycle Spanning cycle adalah merupakan alur yang melalui semua simpul hanya satu kali, dan simpul awal merupakan simpul akhir dan merupakan graph terhubung. Spanning cycle dari suatu graph adalah merupakan subgraph-subgraph dari graph Hamilton jika suatu graph G mengandung atau memiliki spanning cycle. maka graph G mempunyai sub graph dengan sifat-sifat sebagai berikut : 1. H terhubung 2. H memuat semua titik G 3. H mempunyai jumlah garis yang sama dengan jumlah titiknya. 4. Setiap titik dalam H mempunyai derajat 2. 2.2. Algoritma Pencarian Mendalam Pertama (Depth First Search) Algoritma Depth-First Search adalah algoritma pencarian pada sebuah pohon dengan menelusuri satu cabang sebuah pohon sampai menemukan solusi. Pencarian dilakukan pada satu node dalam setiap level dari yang paling kiri dan dilanjutkan pada node sebelah kanan Jika solusi ditemukan maka tidak diperlukan proses backtracking yaitu penelusuran balik untuk mendapatkan jalur yang diinginkan. [5] 3. Menentukan Lintasan Terpendek Pada Suatu Graph Persoalan mencari lintasan terpendek di dalam graph merupakan salah satu persoalan optimasi. Graph yang digunakan dalam mencari lintasan terpendek adalah graph berbobot (weighted graph), yaitu graph yang setiap sisinya diberikan suatu nilai atau bobot. 3.1 Langkah-Langkah Pencarian Spanning Cycle Diberikan sebuah graph G yang memiliki vertex sebanyak lima (A – B – C – D – E). Dimana jarak edge yang menghubungkan masing-masing vertex serta bobot yang dibutuhkan untuk menempuh lintasan tersebut adalah : Edge (A – B), Jarak = 9 Edge (A – C), Jarak = 18 Edge (A – D), Jarak = 20 Edge (A – E), Jarak = 7 Edge (B – C), Jarak = 8 Edge (B – D), Jarak = 9 Edge (B – E), Jarak = 12 Edge (C – D), Jarak = 15 Edge (C – E), Jarak = 5 Edge (D – E), Jarak = 10 Maka untuk membentuk vertex-vertex tersebut menjadi suatu graph, hingga pencarian spanning cycle dari graph yang telah terbentuk, dapat dicari dengan menempuh langkah-langkah sebagai berikut. 3.2. Hubungkan Vertex Hubungkan vertex dapat dilalui satu persatu secara berurutan, dimulai dari vertex A dengan vertex-vertex lainya, kemudian vertex B dan seterusnya. Dalam hal ini akan dicegah terjadinya vertex pararel dan juga terjadi loop atau hubungan vertex dengan dirinya sendiri. Untuk lebih jelasnya sesuai dengan permasalahan di atas dapat dilihat langkahlangkah sebagai berikut : 1). Vertex A. Hubungkan vertex A – B Hubungkan vertex A – C Hubungkan vertex A – D Hubungkan vertex A – E 2). Vertex B Hubungkan vertex B – C Hubungkan vertex B – D Hubungkan vertex B – E 3). Vertex C. Hubungkan vertex C – D Hubungkan vertex C – E Gambar 1. Vertex yang telah dihubungkan 3.3. Menentukan Jarak Terpendek (Spanning Cycle) Minimum. 1. Jalur (A–B–C–D–E–A) = (A–E–D–C– B–A); Panjang Jalur = 49 2. Jalur (A–B–C–E–D–A) = (A–D–E–C– B–A); Panjang Jalur = 52 3. Jalur (A–B–E–C–D–A) = (A–D–C–E– B–A); Panjang Jalur = 61 4. Jalur (A–B–D–E–C–A) = (A–C–E–D– B–A); Panjang Jalur = 51 5. Jalur (A–C–B–D–E–A) = (A–E–D–B– C–A); Panjang Jalur = 52 6. Jalur (A–C–B–E–D–A) = (A–D–E–B– C– A); Panjang Jalur = 83 7. Jalur (A–C–D–E–B–A) = (A–B–E–D– C–A); Panjang Jalur = 64 8. Jalur (A–C–E–B–D–A) = (A–D–B–E– C–A); Panjang Jalur = 64 9. Jalur (A–E–B–C–D–A) = (A–D–C–B– E–A); Panjang Jalur = 62 10. Jalur (A–E–B–D–C–A) = (A–C–D–B– E–A); Panjang Jalur = 61 11. Jalur (A–E–C–B–D–A) = (A–D–B–C– E–A); Panjang Jalur = 49 12. Jalur (A–E–C–D–B–A) = (A–B–D–C– E–A); Panjang Jalur = 45 Sehingga jalur atau lintasan terpendek dari graph diatas adalah (A–E–C–D–B –A) = (A–B– D–C–E–A), dengan panjang lintasan sebesar 45. Setelah diketahui jalur minimumnya selanjutnya akan digambarkan spanning cycle minimum dari graph. (A–E–C–D–B –A) = (A–B– D–C–E–A), dengan panjang lintasan sebesar 45. 4). Vertex D Hubungkan vertex D – E Gambar 2. Jalur Terpendek (Spanning Cycle) 3.4. Rancangan Flowchart . adalah layar yang digunakan untuk gambar 19. dengan menggunakan Visual Basic.Net karena bahasa program ini dapat digunakan untuk membuat aplikasi secara cepat dan mudah. Visual Basic.Net menyediakan berbagai fasilitas untuk penanganan grafis dan juga fasilitas untuk membuat user interface yang menarik serta instruksi penanganan file. 4.1. Tampilan Form Splash Ketika program aplikasi dipanggil atau dijalankan, Splash akan ditampilkan di tengah-tengah monitor dengan latar belakang jendela utama program aplikasi. Splash merupakan tampilan pembuka yang menampilkan nama aplikasi dan nama penulis. Setelah beberapa detik tampilan splash ini secara perlahan-lahan akan meredup dan hilang sama sekali. Tampilan ini juga akan hilang bila area gambar diklik. Gambar 4. Flowchat Gambar 2. Flowchart Gambar 3. Flowchart menentukan jarak terpendek (Spanning Cycle) 3.5. Diagram Activity Gambar 5. Tampilan Form Splash 4.2. Form Menu Utama Setelah tampilan splash hilang dari layar, selanjutnya jendela utama menjadi aktif. Seluruh kegiatan dalam penggambaran graph dikendalikan dari jendela utama ini. Di dalam menu utama user pertama kali akan melakukan langkah seperti Input jumlah Vertex, menentukan vertex awal, menggambar graph, serta Input dan Edit Bobot untuk melakukan pencarian Spanning Cycle pada suatu graph ataupun ingin mengakhiri pekerjaan dan keluar dari aplikasi. Gambar 6. Diagram Activity 4. Gambar 4. Diagram Activity Diagram activity diatas menggambarkan aktivitas system yang dirancang, dimana aktivitas aplikasi ini dimulai dari menampilkan form utama, kemudian memilih rancangan graph yang sudah ditentukan atau juga bias menggambar graph yang akan dicari solusi jarak terpendeknya, sampai menghasilkan solusi jarak terpendek dari graph yang telah ditentukan sebelumnya. Pengujian Sistem Perancangan perangkat lunak untuk penelusuran spanning cycle ini dibangun Gambar 6. Form Menu Utama Langkah awal yang akan dilakukan user adalah menentukan jumlah vertex yang akan diinput untuk membentuk suatu graph yang terdapat pada tool box paling atas. Jumlah Vertex yang mana dalam hal ini jumlah vertex minimal 3 dan maksimal 26 vertex. Gambar diatas adalah bagian form utama untuk menentukan jumlah vertex dan menentukan vertex awal sebagai titik awal penelusuran lintasan spanning cycle. Setelah graph terbentuk dengan melakukan klik dan drag pada setiap vertex yang telah diinput maka langkah selanjutnya adalah menentukan bobot setiap edge dengan cara, mengisi setiap isian GridInput yang ada pada sebelah kanan lembar kerja Gambar 7. Input jumlah vertex dan Penentuan vertex awal Setelah jumlah vertex ditentukan dan telah menentukan atau memilih vertex awal maka langkah selanjutnya adalah mengklik tombol Gambar Vertex untuk menampilkan vertex pada layar utama dan penempatan vertex ditampilkan secara random oleh program. Gambar 10. Isian GridInput Dengan memilih menu File dan selanjutnya pilih Spanning Cycle atau dengan cara menekan tool Spanning Cycle makan bobot inputan dari GridInput akan dimasukkan kedalam setiap edge dari graph. Gambar 8. Form utama setelah input vertex Tahap berikutnya yang dilakukan adalah menggambar graph dari vertex yang telah diinput oleh user dengan menghubungkan setiap vertexvertex yang telah ditampilkan pada form utama. Karena vertex ditampilkan secara random oleh program, maka user dapat menata ulang letak vertex sesuai dengan keinginan user, dengan cara melakukan klik dan pilih menu pindah. Cara menghubungkan antara vertex yang satu dengan vertex lainnya adalah dengan cara klik dan drag dari vertex awal sampai vertex tujuan. Gambar 11. Graph dengan masingmasing edge yang memiliki bobot. Tampilan hasil akhir atau output yaitu Spanning Cycle yang dihasilkan dari suatu graph dari aplikasi ini, Sejalan dengan penginputan bobot untuk setiap edge maka program akan secara otomatis menampilkan Matrix Adjency dan juga Matrix Bobot sebagai representasi matrix dari graph yang digambar oleh user. Gambar 9. Graph lengkap dengan masing-masing edge membantu penulis dalam menyelesaikan tugas akhir ini. Form About Penulis. Gambar 14. Form About Penulis Gambar 12. Representasi Graph terhadap Matrix Demikian juga dengan Spanning Cycle dan Spanning Cycle Minimum yang dihasilkan dari graph akan di tampilkan secara bersamaan yang terletak pada sebelah kiri bawah bagian form utama. 4.4. Kotak Dialog Open Kotak dialog Open akan ditampilkan ketika user memilih menu File kemudian dilanjutkan dengan memilih submenu Open. Kotak dialog Open juga akan ditampilkan ketika user menekan tool Open. Fungsi dari kotak dialog Open adalah untuk membantu user dalam memanggil file data yang disimpan pada folder. Gambar 15. Kotak Dialog Open 4.5. Kotak Dialog Save Gambar 13. Output (Spanning Cycle dari Graph) yang dihasilkan dari graph berupa spanning cycle sejumlah 720 lintasan dan juga spanning cycle minimum sejumlah 2 lintasan. Pada bagian Output akan di tampilkan spanning cycle yang terbentuk dari suatu graph dan juga spanning cycle minimum atau jarak terpendek dari spanning cycle yang dihasilkan. 4.3. Form About Penulis Form About Penulis digunakan untuk menampilkan informasi tentang Penulis. Informasi yang ditampilkan adalah judul skripsi, nama penulis, Logo Almamater, foto penulis dan ucapan terima kasih kepada berbagai pihak yang telah Kotak dialog Save akan ditampilkan ketika user memilih menu File kemudian dilanjutkan dengan memilih submenu Save. Kotak dialog Save juga akan ditampilkan ketika user menekan tool Save. Fungsi dari kotak dialog Save adalah untuk membantu user dalam menyimpan file data ke dalam folder data user. Gambar 16. Kotak Dialog Save 5. Kesimpulan dan Saran 5.1. Kesimpulan 1. Aplikasi berhasil dirancang untuk membantu dalam menggambarkan spanning cycle dan menentukan spanning cycle minimum yang dapat terbentuk dari suatu graph. 2. Jumlah spanning cycle yang dihasilkan dari suatu graph tergantung dari jumlah vertex dan banyaknya edge yang menghubungkan setiap vertex. 3. Perangkat lunak ini akan lebih mengefektifkan waktu dan memiliki ketelitian yang lebih tinggi dibandingkan dengan pencarian manual oleh otak manusia untuk menentukan spanning cycle pada suatu graph. 5.2. Saran 1. Diharapkan aplikasi ini dirancang lebih menarik dan lebih sempurna, dan dapat digunakan dalam proses belajar-mengajar dalam mata kuliah Matematika Diskrit maupun Teori Graph. 2. Dengan adanya aplikasi ini, menumbuhkan minat pembaca untuk mengembangkannya dalam mengatasi problema kehidupan. Seperti aplikasi perjalanan Tukang Pos maupun Salesman Problem dan lain sebagainya, yang dapat dirancang dengan bentuk dan atau wujud sebenarnya seperti pada aplikasi pemetaan. Daftar Pustaka [1] Dian Wirdasari, 2011, Teori Graph Dan Implementasinya Dalam Ilmu Komputer, Universitas Sumatra Utara, Medan. [2] Danny Manongga, Dan Yessica Nataliani 2013, Matematika Diskrit, Kencana Prenada Media Group. [3] Dany Wiria Nugraha, 2011, Aplikasi Algoritma Prim Untuk Menentukan Minimum Spanning Tree Suatu Graph Berbobot Dengan Menggunakan Pemrograman Berorientasi Objek, UNTAD, Palu. [4] Erwin, Analisis Teori Graph Pada Persoalan Knight’s Tour, Universitas Sumatra Utara, Medan. [5] Eny Tri Handayani, 2009, Website Algoritma Backtracking Untuk Pencarian Katalog, Universitas Islam Negeri Syarif Hidayatullah, Jakarta. [6] Jong Jek Siang, 2009, Matematika Diskrit Dan Aplikasinya, Andi Yogyakarta. [7] Muh.Yamin, 2015, Aplikasi Pencarian Jalur Terpendek Pada Rumah Sakit Umum Bahteramas Menggunakan Algoritma A*(A-Star), FTEKNIK UHO, Kendari.