Simulasi minimum spanning tree menggunakan algoritma kruskal - USD Repository
SIMULASI MINIMUM SPANNING TREE
MENGGUNAKAN ALGORITMA KRUSKAL
Skripsi
Diajukan untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Sains
Program Studi Ilmu Komputer Oleh :
Rina Pertiwi Suherman NIM : 033124043
PROGRAM STUDI ILMU KOMPUTER JURUSAN MATEMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
THE SIMULATION OF MINIMUM SPANNING TREE USING KRUSKAL ALGORITHM A Final Thesis
Presented as Partial Fulfillment of The Requirements for the Degree of Sarjana Sains in Computer Science
By : Rina Pertiwi Suherman
Student Number : 033124043
COMPUTER SCIENCE STUDY PROGRAM DEPARTMENT OF MATHEMATICS FACULTY OF SCIENCE AND TECHNOLOGY
ABSTRAK
Minimum Spanning Tree adalah salah satu kasus dalam pemrograman matematika yang mempunyai banyak manfaat dalam kehidupan sehari-hari.
Misalnya dalam sistem sarana transportasi dan routing pada jaringan komputer. Namun begitu, belum banyak yang mengetahui perihal metode minimum
spanning tree ini. Tujuan dari penulisan ini adalah untuk membangun sistem
simulasi yang dapat mempermudah pemahaman teori Minimum Spanning Tree.Tugas akhir ini menggunakan algoritma Kruskal untuk menyelesaikan permasalahan minimum spaning tree. Sistem Simulasi Minimum Spanning Tree menggunakan algoritma Kruskal dibangun dengan metode waterfall dengan menggunakan bahasa pemrograman Visual Basic .Net.
Hasil akhir dari pembuatan program, program dapat digunakan untuk menyelesaikan permasalahan minimum spaning tree dengan meminimumkan bobot dan dengan batasan jumlah titik sebanyak dua belas titik. Sistem simulasi ini dapat memvisualisasikan proses pencarian minimum spanning tree. Selain itu sistem juga dapat menyimpan data yang telah dimasukkan oleh user. Data yang disimpan meliputi titik, relasi antar titik, dan bobot.
ABSTRACT Minimum Spanning Tree is one of cases in mathematics programming which has a lot of advantages in our daily life. For examples are on the transportation system and computer network routing. Nevertheless, not all of the people know about this method. The purpose of this writing is to build a simulation system which can make minimum spanning tree theory easier.
The final project uses Kruskal’s algorithm to solve minimum spanning tree problem. Simulation of Minimum spanning tree system using Kruskal’s algorithm is built with the waterfall method and it uses Visual Basic .Net programming language.
The result is the application can be used to solve the minimum spanning tree problem by minimizing the weight and by limiting the number of vertex becomes 12 vertexes. This simulation system can visualize the minimum spanning tree searching process. Besides, the system can save the data which has been entered by users. The saved data include vertex, edge, and the weight.
PERNYATAAN KEASLIAN KARYA
Saya menyatakan dengan sesungguhnya bahwa skripsi yang saya tulis ini tidak memuat karya atau bagian dari karya orang lain, kecuali yang telah disebutkan dalam kutipan dan daftar pustaka, sebagaimana layaknya karya ilmiah.
Yogyakarta, 30 September 2008 Penulis,
Rina Pertiwi Suherman
KATA PENGANTAR
Puji dan syukur penulis panjatkan kepada Tuhan Yang Maha Esa karena karunia-Nya sehingga tugas akhir ini dapat diselesaikan. Tugas akhir ini disusun untuk memenuhi salah satu syarat memperoleh gelar sarjana strata satu program studi Ilmu Komputer Fakultas Sains dan Teknologi Universitas Sanata Dharma Yogyakarta.
Tugas akhir dengan judul “Simulasi Minimum Spanning Tree Menggunakan Algoritma Kruskal” diharapkan dapat bermanfaat bagi Program Studi Ilmu Komputer FST Universitas Sanata Dharma sebagai lembaga studi ilmu terkait.
Banyak kendala-kendala yang dihadapi dalam menyelesaikan tugas akhir ini, namun berkat adanya bantuan, bimbingan dan kerjasama maka tugas akhir akhirnya dapat selesai. Oleh karena itu penulis mengucapkan terima kasih kepada: 1. Romo Dr. Ir. P. Wiryono P.,SJ. selaku Rektor Universitas Sanata Dharma.
2. Romo Ir. Greg. Heliarko SJ.,SS.,B.ST.,M.Sc.,MA. selaku Dekan Fakultas Sains dan Teknologi.
3. Ibu P.H. Prima Rosa, S.Si.,M.Sc. selaku Ketua Jurusan Matematika dan Ketua Program Studi Ilmu Komputer sekaigus sebagai dosen pembimbing akademik
4. Bapak Y. Joko Nugroho,S.Si. selaku dosen pembimbing yang telah membimbing penulis selama menyelesaikan tugas akhir.
5. Orang tua, kakak dan adik serta keluarga atas dukungan materi dan moral.
6. Teman-teman prodi Ilmu Komputer yang telah membantu dalam banyak hal yang tidak dapat disebutkan satu per satu.
7. Semua pihak yang telah memberikan dukungan secara langsung dan tidak langsung.
Tentunya tugas akhir ini belum sempurna, maka kritik dan saran yang. membangun dari semua pihak sangat diharapkan.
Yogyakarta, 30 September 2008 Penulis,
Rina Pertiwi Suherman
DAFTAR ISI HALAMAN JUDUL ....................................................................................... i HALAMAN PERSETUJUAN ........................................................................ ii HALAMAN PENGESAHAN ......................................................................... iii ABSTRAK ...................................................................................................... iv ABSTRACT .................................................................................................... v LEMBAR PERNYATAAN PERSETUJUAN .............................................. vi PERNYATAAN KEASLIAN KARYA ......................................................... vii KATA PENGANTAR .................................................................................... viii DAFTAR ISI ................................................................................................... x DFTAR TABEL .............................................................................................. xiv DAFTAR GAMBAR ...................................................................................... xv
BAB I PENDAHULUAN A. Latar Belakang Masalah ...................................................................... 1 B. Rumusan Masalah ............................................................................... 2 C. Batasan Masalah ................................................................................. 3 D. Tujuan Penulisan ................................................................................. 3 E. Manfaat Penulisan ............................................................................... 3 F. Metode Penulisan ................................................................................ 4 G. Sistematika Penulisan ......................................................................... 5
1. Sejarah Graf .................................................................................. 6
2. Teori Graf
a. Defenisi Graf ........................................................................... 8
b. Jenis Graf ................................................................................ 10
B. Pohon (Tree)
1. Defenisi Pohon .............................................................................. 14
2. Terminologi Pada Pohon Berakar ................................................. 16
3. Pohon Merentang (Spanning Tree) dan Pohon Merentang Minimum (Minimum Spanning Tree) ........................................... 18
C. Algoritma Kruskal ............................................................................... 20
1. Cara Kerja Algoritma Kruskal ...................................................... 21
2. Ilustrasi Cara Kerja Algoritma Kruskal ........................................ 22
D. Struktur Data
1. Array ............................................................................................. 26
2. Class .............................................................................................. 27
3. Method Drawline .......................................................................... 27
BAB III ANALISIS DAN PERANCANGAN SISTEM A. Analisis Sistem .................................................................................... 29 B. Perancangan Sistem
1. Konsep Kerja Sistem ..................................................................... 30
2. Struktur Data ................................................................................. 31
b. Flowchart Algoritma Sistem ................................................... 35
C. Perancangan Antarmuka ..................................................................... 36
1. Tampilan Awal ............................................................................... 37
2. Tampilan Utama ............................................................................. 38
3. Tampilan Form Input dan Hasil ..................................................... 38
4. Perancangan Penyimpanan ............................................................. 40
BAB IV IMPLEMENTASI DAN PEMBAHASAN A. Implementasi Program
1. Algoritma Kruskal .......................................................................... 41
2. Proses Penyimpanan Data Verteks ................................................. 44
3. Proses Open Data Verteks .............................................................. 45
4. Proses Gambar Graf ....................................................................... 46
B. Implementasi Antarmuka
1. Tampilan Awal ............................................................................... 48
2. Tampilan Utama ............................................................................. 48
3. Tampilan Form Input dan Hasil ..................................................... 50
4. Tampilan Open ............................................................................... 52
5. Tampilan Save ................................................................................ 52
C. Pembahasan ......................................................................................... 53
1. Contoh Penyelesaian Masalah MST ............................................... 53
D. Analisa
BAB V PENUTUP A. Kesimpulan ......................................................................................... 59 B. Saran .................................................................................................... 59
DAFTAR TABEL
Tabel 2.1 Jenis-Jenis Graf ............................................................................... 14Table 3.1 Data Ujicoba ................................................................................... 54Tabel 3.2 Data Ujicoba yang telah di sorting .................................................. 54Tabel 3.3 Hasil Pencarian MST untuk data ujicoba ........................................ 57DAFTAR GAMBAR
Gambar 2.1 Jembatan Konigsberg dan representasinya dalam graf ............... 6Gambar 2.2 Graf sederhana, graf ganda, dan graf semu ................................. 9Gambar 2.3 Graf tak berhingga ....................................................................... 12Gambar 2.4 Graf berarah ................................................................................. 14Gambar 2.5 Ikatan Kimia ................................................................................ 15Gambar 2.6 Struktur Pertandingan Sistem gugur ........................................... 15Gambar 2.7 Pohon berakar .............................................................................. 16Gambar 2.8 Subree pada pohon berakar ......................................................... 17Gambar 2.9 Contoh graf beserta pohon rentangnya ........................................ 19Gambar 2.10 Aplikasi pohon merentang pada jaringan komputer ................. 19Gambar 2.11 Graf ABCDEFG ........................................................................ 22Gambar 2.12 Tahap pertama penerapan algoritma Kruskal pada graf ABCDEFG ................................................................ 22Gambar 2.13 Tahap kedua penerapan algoritma Kruskal pada graf ABCDEFG ................................................................ 23Gambar 2.14 Tahap ketiga penerapan algoritma Kruskal pada graf ABCDEFG ................................................................ 23Gambar 2.15 Tahap keempat penerapan algoritma Kruskalpada graf ABCDEFG ................................................................. 25
Gambar 2.17 Minimum Spanning Tree dari graf ABCDEFG ........................ 25Gambar 3.1 Flowchart algoritma Kruskal ....................................................... 34Gambar 3.2 Flowchart system Simulasi MST dengan algoritma Kruskal ........................................................................ 35Gambar 3.3 Rancangan Struktur Menu ........................................................... 37Gambar 3.4 Rancangan tampilan menu startup .............................................. 37Gambar 3.5 Rancangan tampilan utama ......................................................... 38Gambar 3.6 Rancangan Form Input dan Hasil ................................................ 39Gambar 4.1 Tampilan awal ............................................................................. 48Gambar 4.2 Tampilan utama ........................................................................... 50Gambar 4.3 Form Input dan Hasil .................................................................. 50Gambar 4.4 Tampilan Open ............................................................................ 52Gambar 4.5 Tampilan Save ............................................................................. 53Gambar 4.6 Proses pertahap pembentukan graf MST ..................................... 56BAB I PENDAHULUAN A. Latar Belakang Masalah Teori Graf adalah salah satu teori yang sudah tua usianya, namun masih
terus dibahas dan dikembangkan, karena memiliki banyak terapan. Graf merupakan salah satu metode untuk menyelesaikan permasalahan diskrit dalam dunia nyata, yaitu dapat digunakan untuk merepresentasikan objek-objek diskrit dan hubungan antara objek-objek tersebut. Salah satu contoh representasi visual dari graf adalah peta. Banyak hal yang dapat digali dari reperesentasi tersebut, misalnya untuk menentukan tata letak jalur transportasi, menentukan jalur terpendek dari satu tempat ke tempat lain, dan sebagainya.
Beberapa masalah yang berkaitan dengan graf yang ditemukan manusia dalam kehidupan nyata kemudian memunculkan konsep-konsep pemecahan masalah graf. Salah satu konsep graf adalah konsep pohon (tree). Konsep ini merupakan konsep yang paling populer dan penting, karena konsep pohon mampu mendukung pemecahan masalah dalam berbagai terapan graf. Konsep pohon digunakan sejak tahun 1875 oleh seorang matematikawan yang berasal dari Inggris, Arthur Caylay untuk menghitung jumlah senyawa kimia. (Doni Arzinal, 2006)
Di dalam konsep pohon sendiri terdapat banyak jenis pohon yang digunakan misalnya pada pemeliharaan jalur rel kereta api. Dengan Spanning Tree, perusahaan kereta api dapat memodelkan alokasi dana secara optimal dengan mencari jalur pemeliharaan dengan bobot biaya yang minimum. Spanning Tree juga memainkan peranan penting dalam jaringan komputer, travelling salesman
problem , dan lain-lain. Apabila Spanning Tree diterapkan pada persoalan yang
mengandung unsur pencarian bobot yang minimum maka dinamakan Minimum
Spanning Tree (MST). Adapun algoritma yang akan digunakan untuk
menyelesaikan masalah Minimum Spanning Tree dalam penulisan ini adalah algoritma Kruskal.
Minimum Spanning Tree merupakan teori yang sangat bermanfaat untuk
membantu pekerjaan manusia dalam kehidupan sehari-hari. Sehingga teori ini sangat penting untuk dipelajari. Namun begitu, tidak banyak yang mengetahui perihal cara kerja Minimum Spanning Tree ini. Maka, untuk mempermudah dalam mempelajari dan memahami teori ini, saya akan memvisualisasikan vertek atau titik, garis penghubung, beserta bobotnya ke dalam suatu graf, dan kemudian menampilkan proses pencarian pohon rentang minimum graf tersebut secara bertahap, sehingga terbentuk pohon merentang minimum.
B. Rumusan Masalah
Bagaimana membuat sebuah sistem yang dapat memvisualisasikan masalah Minimum Spanning Tree dengan menggunakan algoritma Kruskal.
C. Batasan Masalah
1. Tidak ada batasan jumlah derajat
2. Jumlah vertek dibatasi sebanyak 12 vertek
3. Sistem ini dapat digunakan untuk mencari minimum spanning tree pada graf tidak berarah.
4. Ada biaya / bobot dari setiap edge (rusuk).
5. Input / Output
- Input dari user berupa : jumlah vertek (titik/simpul), hubungan antara vertek yang akan membentuk edge (rusuk), dan bobot setiap rusuk.
- Output berupa: pohon rentang minimum dengan biaya/bobot terkecil beserta tampilan hasil pohon rentang minimumnya.
D. Tujuan Penulisan
Mengimplementasikan dan memvisualisasikan permasalahan Minimum
Spanning Tree dengan algoritma Kruskal ke dalam sofware dengan menggunakan
bahasa pemrograman Visual Basic .Net
E. Manfaat Penulisan
Dapat memvisualisasikan masalah Minimum Spanning Tree dengan
F. Metode Penulisan
Metode yang digunakan untuk mengembangkan sistem simulasi Minimum
Spanning Tree menggunakan algoritma Kruskal ini adalah rekayasa perangkat
lunak dengan metode waterfall. Adapun langkah-langkah yang dilakukan adalah sebagai berikut :
1. Analisis Pada tahap ini, penulis mengumpulkan data – data yang diperlukan dalam pembuatan sistem ini, yang diantaranya meliputi kebutuhan pemakai, fungsi/prosedur, antarmuka, dan unjuk kerja perangkat lunak.
2. Rancangan Penulis mengubah kebutuhan pada tahap analisis menjadi sebuah representasi program yang dapat dimengerti sebelum proses implementasi. Langkah ini memusatkan kerja pada struktur data, arsitektur dan prosedur detil, dan karakteristik antarmuka.
3. Implementasi Penulis menerjemahkan rancangan dalam bentuk yang dapat dibaca oleh mesin.
4. Pengujian Penulis mencari kemungkinan - kemungkinan kesalahan dan memeriksa apakah hasil sudah sesuai dengan yang diinginkan.
G. Sistematika Penulisan
BAB I PENDAHULUAN Membahas tentang latar belakang masalah, perumusan masalah, batasan masalah, tujuan penulisan, manfaat penulisan, metode penulisan, sistematika penulisan.
BAB II LANDASAN TEORI Bab ini berisi tentang landasan teori yang digunakan sebagai dasar untuk membangun sistem simulasi minimum spanning tree menggunakan algoritma Kruskal.
BAB III ANALISIS DAN PERANCANGAN SISTEM Bab ini berisi tentang gambaran sistem dan kebutuhan sistem yang akan dibuat, meliputi flowchart sistem dan desain antarmuka pengguna sistem.
BAB IV IMPLEMENTASI Bab ini berisi tentang impementasi algoritma Kruskal, desain dan proses pada sistem simulasi Minimum Spanning Tree menggunakan algoritma Kruskal.
BAB V PENUTUP Bab ini berisi tentang kesimpulan dan saran dari pembahasan dan perancangan yang telah dilakukan dalam penulisan tugas akhir ini.
BAB II DASAR TEORI A. Graf Graf merupakan salah satu cabang ilmu dalam ilmu matematika yang
mengulas masalah titik dan garis. Teori graf dapat dimanfaatkan dalam berbagai hal, misalnya untuk merancang jaringan komputer atau sistem prasarana transportasi . Masalah yang paling sering muncul adalah bagaimana mencari lintasan dengan bobot minimum yang menghubungkan beberapa wilayah yang memiliki bobot yang berbeda-beda.
1. Sejarah Graf
Sesuai dengan catatan sejarah, masalah yang pertama kali menggunakan penerapan teori graf adalah masalah jembatan Königsberg (tahun 1736). Di sebuah kota bernama Königsberg (sebelah timur Prussia, Jerman sekarang), sekarang bernama kota Kaliningrad, terdapat sungai Pregal yang mengalir mengitari pulau Kneiphof lalu bercabang menjadi dua buah anak sungai.
Ada tujuh buah jembatan yang menghubungkan daratan yang dibelah oleh sungai tersebut. Permasalahan dari jembatan Königsberg adalah: apakah mungkin melalui ketujuh buah jembatan itu masing-masing tepat satu kali, dan kembali lagi ke tempat semula? Sebagian penduduk kota berpendapat bahwa tidak mungkin melalui setiap jembatan itu hanya sekali dan kembali lagi ke tempat asal mula keberangkatan, tetapi mereka tidak dapat menjelaskan alasan dari jawaban tersebut, kecuali dengan cara coba-coba.
Kemudian pada tahun 1736, L.Euler, seorang matematikawan Swiss, adalah orang pertama yang berhasil menemukan jawaban masalah itu dengan pembuktian yang sederhana. Ia memodelkan masalah ini ke dalam graph. Daratan (titik-titik yang dihubungkan oleh jembatan) dinyatakannya sebagai titik yang disebut titik (vertex) dan jembatan dinyatakan sebagai garis yang disebut rusuk (edge). Setiap titik diberi label huruf A, B, C, dan D. Graph yang dibuat oleh Euler diperlihatkan pada Gambar 2.1.b.
Jawaban yang dikemukakan oleh Euler adalah : orang tidak mungkin melalui ketujuh jembatan itu masing-masing satu kali dan kembali lagi ke tempat asal keberangkatan jika derajat setiap titik tidak seluruhnya genap. Yang dimaksud dengan derajat adalah banyaknya rusuk yang bersisian dengan titik.
Sebagai contoh, pada gambar 2.1.b titik C memiliki derajat 3 karena ada tiga buah rusuk yang bersisian dengannya, titik B dan D juga berderajat dua, sedangkan titik
A berderajat 5. Karena tidak semua titik berderajat genap, maka tidak mungkin
2. Teori Graf
a. Definisi Graf Secara matematis, graf didefinisikan sebagai berikut, misalnya Graf ( G) didefinisikan sebagai pasangan himpunan (V, E), yang dalam hal ini:
V = himpunan tidak-kosong dari titik-titik (vertex)
= { v
1 , v 2 , ... , v n } E = himpunan rusuk (edges) yang menghubungkan sepasang titik = {e , e , ... , e } atau dapat ditulis singkat notasi G = (V, E).
1 2 n
Definisi di atas menyatakan bahwa
V tidak boleh kosong, sedangkan E boleh
kosong. Jadi, sebuah graf dimungkinkan tidak mempunyai rusuk satu buah pun, tetapi titiknya harus ada, minimal satu. Graf yang hanya mempunyai satu buah titik tanpa sebuah rusuk pun dinamakan graf trivial.
Titik pada graf dapat dinomori dengan huruf, seperti a, b, c, …, v, w, ..., dengan bilangan asli 1, 2, 3, ..., atau gabungan keduanya. Sedangkan rusuk yang menghubungkan titik v i dengan titik v j dinyatakan dengan pasangan (v i , v j ) atau dengan lambang e
1 , e 2 , …. Dengan kata lain, jika e adalah rusuk yang
menghubungkan titik v dengan titik v , maka e dapat ditulis sebagai e = (v , v )
i j i j
Secara geometri graf digambarkan sebagai sekumpulan titik (vertex) di dalam bidang 2 dimensi yang dihubungkan dengan sekumpulan rusuk (edges).
Gambar 2.2 Graf sederhana (G1), ganda (G2), semu (G3)Gambar 2.2 memperlihatkan tiga buah graf, yaitu graf G1, graf G2, dan grafG 3.
Graf G1 adalah graf dengan himpunan titik V dan himpunan rusuk E adalah
V = { 1, 2, 3, 4 } E = { (1, 2), (1, 3), (2, 3), (2, 4), (3, 4) }
Graf G2 adalah graf dengan himpunan titik V dan himpunan rusuk E adalah:
V = { 1, 2, 3, 4 } E = { (1, 2), (2, 3), (1, 3), (1, 3), (2, 4), (3, 4), (3, 4) }
Æ himpunan ganda = { e
1 , e 2 , e 3 , e 4 , e 5 , e 6 , e 7 }
Graf G3 adalah graf dengan himpunan titik V dan himpunan rusuk E adalah:
V = { 1, 2, 3, 4 }
Pada graf G2 , rusuk e
3 = (1, 3) dan rusuk e 4 = (1, 3) dinamakan rusuk-ganda
(multiple edges atau paralel edges) karena kedua rusuk ini menghubitikungkan dua buah yang sama, yaitu titik 1 dan titik 3. Pada graf G3, rusuk e
8 = (3, 3)
dinamakan gelang atau kalang (loop) karena ia berawal dan berakhir pada titik yang sama.
b.
Jenis Graf Graf dapat dikelompokkan menjadi beberapa kategori bergantung pada sudut pandang pengelompokannya. Pengelompokan graf dapat dipandang berdasarkan ada tidaknya rusuk ganda, berdasarkan jumlah titil, atau berdasarkan orientasi arah pada rusuk.
Berdasarkan ada tidaknya gelang atau rusuk ganda pada suatu graf, maka secara umum graf dapat digolongkan menjadi dua jenis: i. Graf sederhana (simple graph).
Graf yang tidak mengandung gelang maupun rusuk-ganda dinamakan graf sederhana. Graf G1 pada Gambar 2.2 adalah contoh graf sederhana yang merepresentasikan jaringan komputer. Titik menyatakan komputer, sedangkan rusuk menyatakan saluran telepon untuk berkomunikasi.
Saluran telepon dapat beroperasi pada dua arah. ii.
Graf tak-sederhana (unsimple-graph).
Graf yang mengandung rusuk ganda atau gelang dinamakan graf tak- sederhana (unsimple graph). Ada dua macam graf tak-sederhana, yaitu graf ganda (multigraph) dan graf semu (pseudograph). Graf ganda adalah graf yang mengandung rusuk ganda. rusuk ganda yang menghubungkan sepasang titik bisa lebih dari dua buah. Graf G2 pada
Gambar 2.2 adalah graf-ganda, rusuk ganda pada graf G2 dapat diandaikan sebagai saluran telepon tambahan apabila beban komunikasidata antar komputer sangat padat. Graf semu adalah graf yang mengandung gelang. Graf G3 pada Gambar 2.2 adalah graf semu (termasuk bila memiliki rusuk ganda sekalipun).
Rusuk gelang pada graf G3 dapat dianggap sebagai saluran telepon tambahan yang menghubungkan komputer dengan dirinya sendiri. Graf semu lebih umum daripada graf ganda, karena rusuk pada graf semu dapat terhubung ke dirinya sendiri.
Jumlah titik pada graf disebut sebagai kardinalitas graf, dan dinyatakan dengan n = |V|, dan jumlah rusuk dinyatakan dengan m = |E|. Pada contoh di atas, graf G1 mempunyai n = 4, dan m = 4, sedangkan graf G2 mempunyai n = 3 dan m = 4. Berdasarkan jumlah titik pada suatu graf, maka secara umum graf dapat digolongkan menjadi dua jenis: i.
Graf berhingga (limited graph) Graf berhingga adalah graf yang jumlah titiknya, n berhingga. Graf pada Gambar 2.2 adalah contoh graf yang berhingga. ii. Graf tak-berhingga (unlimited graph)
Graf yang jumlah titiknya, n tidak berhingga banyaknya disebut graf tak- berhingga. Dua buah graf pada Gambar 2.3 di bawah adalah contoh graf yang tidak berhingga.
Gambar 2.3 Dua buah graf tak-berhinggaRusuk pada graf dapat mempunyai orientasi arah. Berdasarkan orientasi arah pada rusuk, maka secara umum graf dibedakan atas 2 jenis, yaitu sebagai berikut: i.
Graf tak-berarah (undirected graph) Graf yang rusuknya tidak mempunyai orientasi arah disebut graf tak- berarah. Pada graf tak-berarah, urutan pasangan titik yang dihubungkan oleh rusuk tidak diperhatikan. Jadi, (v j , v k ) = (v k , v j ) adalah rusuk yang sama. Tiga buah graf pada Gambar 2.2 adalah graf tak-berarah. ii. Graf berarah (directed graph atau digraph)
Graf yang setiap rusuknya diberikan orientasi arah disebut sebagai graf berarah. Rusuk berarah ini biasa disebut dengan busur (arc). Pada graf berarah, (v j , v k ) dan (v k , v j ) menyatakan dua buah busur yang berbeda, dengan kata lain (v j , v k ) k , v j ). Untuk busur (v j , v k ), titik v j dinamakan
≠ (v titik asal (initial vertex) dan titik v k dinamakan titik terminal (terminal
vertex ). Graf G4 pada Gambar 2.4 adalah contoh graf berarah. Pada graf G 4 diandaikan saluran telepon tidak dapat beroperasi pada dua arah.
Saluran hanya beroperasi pada arah yang ditunjukkan oleh anak panah. Jadi, sebagai contoh, saluran telepon (1, 2) tidak sama dengan saluran telepon (2, 1). 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 rusuk ganda tidak.
Gambar 2.4 Graf berarahDefinisi graf dapat diperluas sehingga mencakup graf-ganda berarah. Pada graf-ganda berarah, gelang dan rusuk ganda diperbolehkan ada. Graf G5 pada
Gambar 2.4 adalah contoh graf-ganda berarah. Tabel 2.1 meringkas perluasan definisi graf.Tabel 2.1 Jenis-jenis graf Rusuk ganda Rusuk gelangJenis Rusuk dibolehkan? dibolehkan? Graf sederhana Tak berarah Tidak Tidak Graf ganda Tak berarah Ya Tidak
Graf semu Tak berarah Ya Ya Graf berarah Berarah Tidak Ya Graf ganda Berarah Ya Ya berarah B.
Pohon (Tree)
1. Definisi Pohon sederhana(cycle/sirkuit). Pohon adalah bentuk khusus dari suatu graf yang banyak diterapkan untuk berbagai keperluan. Misalnya struktur organisasi suatu perusahaan, silsilah suatu keluarga, skema sistem gugur suatu pertandingan, dan ikatan kimia suatu molekul adalah jenis graf yang tergolong sebagai pohon. Pada pohon, titik-titik yang berderajat satu dinamakan daun (leave), sedangkan titik yang derajatnya lebih besar daripada satu dinamakan titik cabang (branch node) atau titik internal (internal node) dan kumpulan pohon-pohon yang terpisahkan satu sama lain disebut hutan (forest). Contoh pohon (tree) dapat dilihat pada
gambar 2.5 dan 2.6.Gambar 2.5 Ikatan Kimia2. Terminologi pada pohon berakar
a. Anak (child atau children) dan Orangtua (parent) Anak adalah titik setelah suatu titik dalam pohon. Dari gambar 2.7 diketahui b, c, dan d adalah anak-anak titik a, dan orang tua adalah titik sebelum suatu titik lain dalam satu pohon, jadi a adalah orangtua dari anak- anak tersebut.
Gambar 2.7 Pohon Berakar b.Lintasan (path) Lintasan adalah jalur yang harus ditempuh dari suatu titik ke titik lainnya. Panjang lintasan ditentukan dari titik asal. Dari gambar 2.7 diketahui lintasan dari a ke j adalah a, b, e, j dan panjang lintasan dari a ke j adalah 3. c.
Saudara kandung (sibling) Saudara kandung adalah titik yang mempunyai orangtua yang sama. Dari
gambar 2.7 diketahui f adalah saudara kandung e, tetapi g bukan saudara kandung e, karena orangtua mereka berbeda.d.
Upapohon (subtree) Upapohon atau subtree adalah pohon yang dibentuk dengan memotong pohon yang sudah ada, contoh dapat dilihat pada gambar 2.8.
Gambar 2.8 Subtree pada Pohon Berakar e.Derajat (degree) Derajat sebuah titik adalah jumlah upapohon atau jumlah anak pada titik derajat c adalah 0. Derajat sebuah pohon adalah derajat maksimum dari semua titik derajat pohon itu sendiri. Pohon pada gambar 2.8 berderajat 3.
f. Daun (leaf) Daun adalah titik paling ujung dalam sebuah pohon. Jadi daun tidak mempunyai anak dan berderajat 0. titik h, i, j, f, c, l, dan m pada gambar 2.7 adalah daun.
g. Titik Dalam (internal nodes) Titik yang mempunyai upapohon atau anak disebut titik dalam. Titik b, d, e, g, dan k pada gambar 2.7 adalah titik dalam.
h.
Aras (level) dan Tingkat ketinggian (height) atau Kedalaman (depth) Aras maksimum dari suatu pohon disebut tinggi atau kedalaman pohon tersebut. Pohon pada gambar 2.7 mempunyai tinggi 4.
3. Pohon Merentang (Spanning Tree) dan Pohon Merentang Minimum (Minimum Spanning Tree)
Pohon merentang dari graf terhubung adalah upagraf merentang yang berupa pohon. Pohon merentang diperoleh dengan memutus sirkuit di dalam graf.
Sehingga setiap graf terhubung mempunyai paling sedikit satu buah pohon merentang yang disebut hutan merentang (spanning forest). Contoh graf beserta pohon merentangnya dapat dilihat pada gambar 2.9.
Gambar 2.9 Graf G berikut empat macam pohon rentangnyaContoh aplikasi pohon merentang : a.
Jalan terminimum yang menghubungkan semua kota b. Perutean (routing) pesan pada jaringan komputer.
c.
Multicast Jika Spanning Tree diterapkan pada persoalan yang mengandung unsur pencarian bobot yang minimum maka dinamakan Minimum Spanning Tree (MST).
Masalah Minimum Spanning Tree pertama kali diformulasikan oleh seorang ilmuwan Cekoslavia, Otakar Boruvka pada tahun 1926, yang melahirkan sebuah algoritma, dikenal dengan Boruvka’s Algorithm. Algoritma ini memberikan solusi dalam menentukan susunan jaringan kabel listrik yang paling ekonomis. Sejak saat itu, formulasi Minimum Spanning Tree banyak diterapkan di berbagai masalah optimasi kombinatoris, seperti masalah transportasi, desain jaringan telekomunikasi, sistem distribusi, dan lain sebagainya. Masalah-masalah tersebut pada umumnya dapat dibawa ke bentuk masalah program linear, yang saat ini telah ditemukan banyak metode untuk menyelesaikannya, antara lain algoritma waktu polinomial yang dikembangkan oleh Kruskal dan Prim . Penulis hanya akan membahas dan menggunakan algoritma Kruskal.
C.
Algoritma Kruskal Algoritma Kruskal pertama kali dipopulerkan oleh Joseph Kruskal pada tahun 1956. Algoritma Kruskal adalah sebuah algoritma dalam teori graf yang mencari sebuah Minimum Spanning Tree untuk sebuah graf berbobot yang terhubung. Ini berarti mencari subset dari rusuk yang membentuk sebuah Tree, yang menampung setiap vertex, dimana total bobot dari semua rusuk dalam Tree
1. Cara Kerja Algoritma Kruskal
Dalam algoritma ini rusuk-rusuk pada graf dipilih satu-persatu berurutan dari rusuk dengan bobot terkecil, kemudian saling dihubungkan, dengan ketentuan saat menghubungkan titik dari setiap rusuk tidak membentuk sirkuit (cycle). Jika jumlah rusuk yang dihubungkan berjumlah n-1, dimana n adalah jumlah titik, maka rusuk-rusuk yang telah dihubungkan tadi akan membentuk sebuah tree yang mempunyai bobot terkecil atau pohon rentang minimum.
Secara formal, algoritma Kruskal dapat dinyatakan sebagai berikut : Misalkan G adalah graf mula-mula dengan n titik, T adalah pohon rentang minimum, E adalah himpunan semua rusuk G a.
Isi T dengan semua titik-titik G tanpa garis
b. m = 0 c.
Selama m < (n-1) lakukan :
- Tentukan garis e ∈ E dengan bobot minimum. Jika ada beberapa e dengan sifat tersebut, pilih salah satu secara sembarang
- Hapus e dari E - Jika e ditambahkan ke T tidak menghasilkan sirkuit, maka i.
Tambahkan e ke T ii. M = m + 1
2. Ilustrasi Cara Kerja Algoritma Kruskal
a. Misalnya, graf pada Gambar 2.11 adalah graf awal, yaitu graf ABCDEFG. Angka-angka di dekat garis penghubung / rusuk adalah bobotnya.
Gambar 2.11 Graf ABCDEFGb. Dari semua bobot yang ada, bobot paling kecil adalah 5. Yaitu AD dan CE. AD ditetapkan sebagai rusuk awal, maka diberi highlight hijau (gambar 2.12).
Gambar 2.12 Tahap pertama penerapan algoritma Kruskal c.Selain AD, rusuk yang berbobot 5 adalah CE. Oleh karena itu CE diberi highlight hijau. Maka rusuk yang sudah dipilih sebagai bagian dari jalur MST pada graf ABCDEFG adalah AD-CE (gambar 2.13).
Gambar 2.13 Tahap kedua penerapan algoritma Kruskald. Karena semua rusuk berbobot 5 sudah dipilih, bobot yang dipilih selanjutnya adalah bobot yang lebih besar dari bobot sebelumnya, yaitu 6. Rusuk yang mempunyai bobot 6 adalah DF. DF diberi
highlight hijau. Maka rusuk yang sudah dipilih sebagai bagian dari jalur MST pada graf ABCDEFG adalah AD-CE-DF (gambar 2.14). e.
Rusuk yang dipilih selanjutnya adalah rusuk yang mempunyai bobot lebih besar dari bobot sebelumnya, yaitu 7. Rusuk yang mempunyai bobot 7 adalah rusuk AB, maka AB diberi highlight hijau. Dengan dipilihnya rusuk AB ini, bisa ditentukan bahwa rusuk BD akan membentuk sebuah sirkuit. Maka BD diberi highlight merah, artinya tidak akan ditambahkan ke dalam MST. Rusuk yang sudah dipilih sebagai bagian dari jalur MST pada graf ABCDEFG adalah AD-CE- DF-AB (gambar 2.15).
Gambar 2.15 Tahap keempat penerapan algoritma Kruskalf. Selain AB, rusuk yang berbobot 7 adalah BE. Oleh karena itu BE diberi highlight hijau. Dengan dipilihnya rusuk BE ini, bisa ditentukan bahwa rusuk BC, DE dan EF dapat membentuk sirkuit. Maka rusuk BC, DE dan EF diberi highlight merah, artinya tidak akan ditambahkan ke dalam MST. Rusuk yang sudah dipilih sebagai bagian dari jalur MST pada graf ABCDEFG adalah AD-CE-DF-AB-BE (gambar 2.16).
Gambar 2.16 Tahap kelima penerapan algoritma Kruskalg. Rusuk yang dipilih selanjutnya adalah rusuk yang berbobot lebih besar dari bobot sebelumnya, yaitu 8. Rusuk yang mempunyai bobot 8 adalah BC dan EF, namun karena kedua rusuk ini dapat membentuk sirkuit (sudah diberi highlight merah) maka rusuk BC dan EF tidak akan ditambahkan pada jalur MST. Sehingga rusuk yang dipilih berikutnya adalah yang mempunyai bobot 9, yaitu EG. Maka EG diberi highlight hijau. Karena semua titik sudah terhubung, maka proses pemilihan rusuk dengan bobot terkecil selesai. Dan MST yang terbentuk dari graf ABCDEFG ini adalah AD-CE-DF-AB-BE-EG, dengan jumlah bobot 39 (Gambar 2.17). D.
Struktur Data
1. Array
MST yang merupakan terapan dari teori graph sangat berkaitan dengan
matriks dalam menyelesaikan persoalan didalamnya. Dengan program ini maka sangatlah tepat untuk menggunakan tipe data Array. Selain itu, juga karena dalam program ini dibutuhkan data yang besar.
Array adalah suatu tipe data terstruktur yang berupa sejumlah data sejenis (bertipe data sama) yang jumlahnya tetap dan diberi suatu nama tertentu. Elemen- elemen array tersusun secara sekuensial di dalam memori sehingga memiliki alamat yang berdekatan. Array dapat berupa array 1 dimensi, 2 dimensi, bahkan n- dimensi. Elemen-elemen array bertipe data sama tapi bisa bernilai sama atau berbeda-beda
Bentuk umum dari deklarasi tipe data array 1 dimensi adalah:
Dim nama_array(dimensi array) As tipe data nama_array adalah nama dari array yang akan dibuat, dimensi array
yaitu dimensi array yang akan dibuat (1 dimensi, 2 dimensi, ... n dimensi). Sedangkan tipe data adalah tipe data dari array tersebut (Double, Long, Integer, String, dll).
Contoh deklarasi tipe data array 1 dimensi:
Dim strMyFriends() As String
Dari contoh deklarasi tipe data array 1 dimensi diatas dapat kita ketahui
Contoh deklarasi tipe data array multidimensi:
Dim atmospherePressures( , , , ) As Short
Dari contoh deklarasi array multidimensi diatas dapat diketahui sebuah array multidimensi (4 dimensi) dengan nama atmospherePressure
s
bertipe data Short .
2. Class Class adalah tipe data yang didalamnya dapat berisi kumpulan berbagai tipe variabel maupun method.
Contoh deklarasi Class :
Public Class ShowMe Sub ShowFrm() Dim frmNew As Form1 frmNew = New Form1 frmNew.Show() End Sub End Class Dari contoh class diatas, dapat kita lihat nama class adalah ShowMe .
Kemudian diikuti statemen-statemen, dimana statement-statement tersebut dapat berupa variabel maupun method.
3. Method DrawLine Method DrawLine adalah method dalam VB .Net yang digunakan untuk menggambar garis untuk menghubungkan dua titik. Dim point1 As New Point(100, 100) Dim point2 As New Point(500, 100) e.Graphics.DrawLine(blackPen, point1, point2) End Sub
Pen adalah parameter yang dapat digunakan untuk menentukan warna, lebar, dan style dari garis yang akan dibuat. Sedangkan point1 dan point2 adalah letak koordinat kedua titik yang akan dihubungkan dengan garis tersebut.
BAB III ANALISIS DAN PERANCANGAN SISTEM A. Analisis Sistem Sistem yang akan dikembangkan adalah sistem pencarian minimum
spanning tree dari suatu graf tidak berarah, dengan menggunakan algoritma
Kruskal . Sistem ini disertai dengan visualisasi proses pencarian minimum
spanning tree , sehingga dapat mempermudah pengguna / user dalam memahami
proses pencarian atau pembentukan minimum spanning tree tersebut, tentunya dengan algoritma yang telah ditentukan, yaitu algoritma Kruskal.
Untuk menentukan minimum spanning tree dari suatu graf tidak berarah, sistem ini membutuhkan beberapa input data yaitu : jumlah titik / vertex, jumlah rusuk /edge, hubungan antara dua titik yang akan membentuk sebuah rusuk, beserta jumlah bobot / biayanya.
1. Kebutuhan Sistem
a. Kebutuhan software dan hardware untuk pengembangan sistem i. Kebutuhan software
− Sistem operasi : Windows XP Service Pack 2 − Program Aplikasi : Visual Basic .Net, Visual Frame Work ii. Kebutuhan hardware − Prosesor Pentium 4
− Hard disk minimal 1 GB − Alat input berupa keyboard dan mouse − Alat output berupa monitor dan printer
b. Kebutuhan software dan hardware untuk penggunaan sistem i. Kebutuhan software minimal
− Sistem operasi : Windows XP Service Pack 2 − Program Aplikasi : Visual Frame Work ii. Kebutuhan hardware minimal − Prosesor Pentium 4 − Memori minimal 128 MB − Hardisk minimal 1 GB − Alat input berupa keyboard dan mouse − Alat output berupa monitor
B. Perancangan Proses
1. Konsep Kerja Sistem Sistem bekerja dengan prinsip aplikasi desktop. Aplikasi dapat langsung diakses oleh user melalui komputer yang telah terinstal program aplikasi. Pada saat user mengakses tool untuk mencari minimum spanning tree, maka sistem akan menjalankan algoritma Kruskal untuk melakukan proses pencarian minimum
2. Struktur Data
a. Array
Array adalah tipe data terstruktur yang mempunyai komponen dalam
jumlah yang tetap dan setiap komponen dalam array dinyatakan sebagai nomor index. Bentuk umum dari deklarasi array adalah :
Dim nama_array(tipe_index) As tipe data
dengan nama_array : nama tipe data
tipe_index : tipe data untuk nomor index tipe data : tipe data komponen
Parameter tipe_index menentukan banyaknya komponen array tersebut. Sebagai contoh misalnya sebuah vektor A. Vektor tersebut mempunyai komponen Ax, Ay, dan Az. Bila A dideklarasikan bertipe integer, misalnya, maka ketiga komponen tentu juga akan bertipe integer. Kumpulan dari ketiga komponen A disebut dengan array, dan masing-masing komponen disebut elemen dari array.
Dalam sistem yang akan dibuat, array akan digunakan untuk menampung data titik, garis, bobot, garis yang telah dikunjungi selama proses perhitungan, dan data lain yang berukuran besar.
Contoh penggunaan array satu dimensi dalam program Simulasi MST:
Private Edges(1000) As tEdge
Array Edges mempunyai indeks 0 – 999, berfungsi untuk menampung garis yang terdiri dari titik awal dan titik akhir, maka secara otomatis array ini juga menampung seluruh titik yang telah diinputkan.
Aturan dalam menggunakan array adalah bahwa kita harus mendefenisikan array dengan dimensi yang cukup besar sehingga mampu menampung elemen-elemen array yang bersangkutan dari dalam program. Bila pada suatu saat program yang sama akan dipakai untuk bekerja dengan
array yang dimensinya lebih besar maka kita harus mengadakan perubahan
pada indeksnya. Dalam VB .Net kita dapat menggunakan arrayList, yaitu array satu dimensi yang dinamis, dapat menambah indeks array secara otomatis, sesuai dengan yang dibutuhkan.
Contoh penggunaan ArrayList dalam program simulasi MST :
Private visitedEdge As ArrayList
Array visitedEdge bertipe data ArrayList adalah array yang berfungsi untuk menampung data edge / garis yang telah dikunjungi selama proses perhitungan pencarian minimum spanning tree. Array ini dapat menambah indeks secara otomatis jika garis yang dikunjungi bertambah.
b. Class Class adalah tipe data yang didalamnya dapat berisi kumpulan berbagai tipe variabel maupun method.
Dalam sistem yang akan dibuat class akan digunakan untuk mengelompokkan data-data yang perlu dikelompokkan sesuai dengan yang