Spanning Cycle dari Graph

advertisement
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.
Download