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 ........................................ 57

  DAFTAR 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 Kruskal

  pada 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 ..................................... 56

BAB 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 graf

  G 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 komunikasi

  data 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-berhingga

  Rusuk 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 berarah

  Definisi 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 gelang

  Jenis 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 Kimia

2. 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 rentangnya

  Contoh 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 ABCDEFG

  b. 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 Kruskal

  d. 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 Kruskal

  f. 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 Kruskal

  g. 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