Skripsi
Oleh :
Rina Pertiwi Suherman
NIM : 033124043
A Final Thesis
By :
Rina Pertiwi Suherman
Student Number : 033124043
NIM : 033124(143
. 033124
I dan di
Ketua
Sekrctaris O ,
g Cahyanta, S.T..M.T.
ABSTRAK
iv
ABSTRACT
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.
v
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.
Penulis,
vii
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
Yogyakarta.
Algoritma Kruskal” diharapkan dapat bermanfaat bagi Program Studi Ilmu Komputer
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.
3. Ibu P.H. Prima Rosa, S.Si.,M.Sc. selaku Ketua Jurusan Matematika dan Ketua
viii
4. Bapak Y. Joko Nugroho,S.Si. selaku dosen pembimbing yang telah
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
7. Semua pihak yang telah memberikan dukungan secara langsung dan tidak
langsung.
Tentunya tugas akhir ini belum sempurna, maka kritik dan saran yang.
Penulis,
ix
DAFTAR ISI
HALAMAN JUDUL.........................................................................................i
HALAMAN PERSETUJUAN..........................................................................ii
HALAMAN PENGESAHAN...........................................................................iii
ABSTRAK.........................................................................................................iv
ABSTRACT......................................................................................................v
KATA PENGANTAR.......................................................................................viii
DAFTAR ISI.....................................................................................................x
DFTAR TABEL................................................................................................xiv
DAFTAR GAMBAR.........................................................................................xv
BAB I PENDAHULUAN
B. Rumusan Masalah...................................................................2
C. Batasan Masalah.....................................................................3
D. Tujuan Penulisan....................................................................3
E. Manfaat Penulisan..................................................................3
F. Metode Penulisan....................................................................4
G. Sistematika Penulisan.............................................................5
A. Graf.........................................................................................6
x
1. Sejarah Graf.....................................................................................6
2. Teori Graf
a. Defenisi Graf.............................................................................8
b. Jenis Graf...................................................................................10
B. Pohon (Tree)
1. Defenisi Pohon.................................................................................14
C. Algoritma Kruskal....................................................................20
D. Struktur Data
1. Array................................................................................................26
2. Class................................................................................................27
3. Method Drawline.............................................................................27
A. Analisis Sistem.........................................................................29
B. Perancangan Sistem
2. Struktur Data....................................................................................31
xi
b. Flowchart Algoritma Sistem.....................................................35
C. Perancangan Antarmuka...........................................................36
1. Tampilan Awal..................................................................................37
2. Tampilan Utama................................................................................38
4. Perancangan Penyimpanan...............................................................40
A. Implementasi Program
1. Algoritma Kruskal.............................................................................41
B. Implementasi Antarmuka
1. Tampilan Awal..................................................................................48
2. Tampilan Utama................................................................................48
4. Tampilan Open..................................................................................52
5. Tampilan Save...................................................................................52
C. Pembahasan..............................................................................53
D. Analisa
1. Kelebihan Program...........................................................................57
2. Kekurangan Program........................................................................58
xii
BAB V PENUTUP
A. Kesimpulan...............................................................................59
B. Saran.........................................................................................59
xiii
DAFTAR
xiv
DAFTAR
xv
pada graf ABCDEFG....................................................................25
algoritma Kruskal..........................................................................35
xvi
BAB I
PENDAHULUAN
Teori Graf adalah salah satu teori yang sudah tua usianya, namun masih
dan hubungan antara objek-objek tersebut. Salah satu contoh representasi visual
dari graf adalah peta. Banyak hal yang dapat digali dari reperesentasi tersebut,
masalah graf. Salah satu konsep graf adalah konsep pohon (tree). Konsep ini
merupakan konsep yang paling populer dan penting, karena konsep pohon mampu
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
untuk menyelesaikan masalah dalam dunia terapan graf, salah satunya adalah
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
problem, dan lain-lain. Apabila Spanning Tree diterapkan pada persoalan yang
algoritma Kruskal.
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
B. Rumusan Masalah
C. Batasan Masalah
3. Sistem ini dapat digunakan untuk mencari minimum spanning tree pada
5. Input / Output
- Output berupa:
D. Tujuan Penulisan
E. Manfaat Penulisan
F. Metode Penulisan
sebagai berikut :
1. Analisis
2. Rancangan
3. Implementasi
oleh mesin.
4. Pengujian
G. Sistematika Penulisan
BAB I PENDAHULUAN
Bab ini berisi tentang landasan teori yang digunakan sebagai dasar
Bab ini berisi tentang gambaran sistem dan kebutuhan sistem yang
pengguna sistem.
BAB IV IMPLEMENTASI
BAB V PENUTUP
Bab ini berisi tentang kesimpulan dan saran dari pembahasan dan
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
1. Sejarah Graf
mengitari pulau Kneiphof lalu bercabang menjadi dua buah anak sungai.
Gambar 2.1 (a) Jembatan Konigsberg dan (b) representasinya dalam graf
Ada tujuh buah jembatan yang menghubungkan daratan yang dibelah oleh
melalui ketujuh buah jembatan itu masing-masing tepat satu kali, dan kembali lagi
melalui setiap jembatan itu hanya sekali dan kembali lagi ke tempat asal mula
orang pertama yang berhasil menemukan jawaban masalah itu dengan pembuktian
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
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
didefinisikan sebagai pasangan himpunan (V, E), yang dalam hal ini:
= { v1 , v2 , ... , vn }
kosong. Jadi, sebuah graf dimungkinkan tidak mempunyai rusuk satu buah pun,
tetapi titiknya harus ada, minimal satu. Graf yang hanya mempunyai satu buah
dengan bilangan asli 1, 2, 3, ..., atau gabungan keduanya. Sedangkan rusuk yang
menghubungkan titik vi dengan titik vj dinyatakan dengan pasangan (vi, vj) atau
dengan lambang e1, e2, …. Dengan kata lain, jika e adalah rusuk yang
menghubungkan titik vi dengan titik vj , maka e dapat ditulis sebagai e = (vi , vj)
Gambar 2.2 memperlihatkan tiga buah graf, yaitu graf G1, graf G2, dan graf
G3.
Graf G1 adalah graf dengan himpunan titik V dan himpunan rusuk E adalah
V = { 1, 2, 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
Graf G3 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), (3, 3) }
€ himpunan 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 e8 = (3, 3)
dinamakan gelang atau kalang (loop) karena ia berawal dan berakhir pada titik
yang sama.
b. Jenis Graf
berdasarkan ada tidaknya rusuk ganda, berdasarkan jumlah titil, atau berdasarkan
Berdasarkan ada tidaknya gelang atau rusuk ganda pada suatu graf, maka
graf sederhana. Graf G1 pada Gambar 2.2 adalah contoh graf sederhana
Graf yang mengandung rusuk ganda atau gelang dinamakan graf tak-
menghubungkan sepasang titik bisa lebih dari dua buah. Graf G2 pada
Graf semu adalah graf yang mengandung gelang. Graf G3 pada Gambar
2.2 adalah graf semu (termasuk bila memiliki rusuk ganda sekalipun).
semu lebih umum daripada graf ganda, karena rusuk pada graf semu
Jumlah titik pada graf disebut sebagai kardinalitas graf, dan dinyatakan
mempunyai n = 3 dan m = 4.
1
Berdasarkan jumlah titik pada suatu graf, maka secara umum graf dapat
Graf berhingga adalah graf yang jumlah titiknya, n berhingga. Graf pada
Graf yang jumlah titiknya, n tidak berhingga banyaknya disebut graf tak-
berhingga. Dua buah graf pada Gambar 2.3 di bawah adalah contoh graf
Rusuk pada graf dapat mempunyai orientasi arah. Berdasarkan orientasi arah
pada rusuk, maka secara umum graf dibedakan atas 2 jenis, yaitu sebagai berikut:
1
Graf yang rusuknya tidak mempunyai orientasi arah disebut graf tak-
oleh rusuk tidak diperhatikan. Jadi, (vj , vk) = (vk , vj) adalah rusuk yang
sama. Tiga buah graf pada Gambar 2.2 adalah graf tak-berarah.
Graf yang setiap rusuknya diberikan orientasi arah disebut sebagai graf
berarah. Rusuk berarah ini biasa disebut dengan busur (arc). Pada graf
berarah, (vj, vk) dan (vk, vj) menyatakan dua buah busur yang berbeda,
dengan kata lain (vj, vk) ≠ (vk , vj). Untuk busur (vj, vk), titik vj dinamakan
titik asal (initial vertex) dan titik vk dinamakan titik terminal (terminal
vertex). Graf G4 pada Gambar 2.4 adalah contoh graf berarah. Pada graf
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
tidak.
1
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.
Graf ganda
Berarah Ya Ya
berarah
B. Pohon (Tree)
1. Definisi Pohon
sederhana(cycle/sirkuit). Pohon adalah bentuk khusus dari suatu graf yang banyak
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
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.
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
Saudara kandung adalah titik yang mempunyai orangtua yang sama. Dari
d. Upapohon (subtree)
pohon yang sudah ada, contoh dapat dilihat pada gambar 2.8.
e. Derajat (degree)
Derajat sebuah titik adalah jumlah upapohon atau jumlah anak pada titik
tersebut, yang dimaksudkan di sini adalah derajat ke bawah atau keluar. Pada
gambar 2.8 derajat a adalah 3, derajat b adalah 2, derajat d adalah satu dan
1
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
adalah daun.
Titik yang mempunyai upapohon atau anak disebut titik dalam. Titik b,
Aras maksimum dari suatu pohon disebut tinggi atau kedalaman pohon
Pohon merentang dari graf terhubung adalah upagraf merentang yang berupa
Sehingga setiap graf terhubung mempunyai paling sedikit satu buah pohon
merentang yang disebut hutan merentang (spanning forest). Contoh graf beserta
c. Multicast
Gambar 2.10 Aplikasi pohon merentang (b) pada jaringan komputer (a)
pencarian bobot yang minimum maka dinamakan Minimum Spanning Tree (MST).
ilmuwan Cekoslavia, Otakar Boruvka pada tahun 1926, yang melahirkan sebuah
dalam menentukan susunan jaringan kabel listrik yang paling ekonomis. Sejak
pada umumnya dapat dibawa ke bentuk masalah program linear, yang saat ini
waktu polinomial yang dikembangkan oleh Kruskal dan Prim. Penulis hanya akan
C. Algoritma Kruskal
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
adalah minimum. Algoritma Kruskal merupakan salah satu contoh dari Algoritma
Greedy
2
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
b. m = 0
- Hapus e dari E
i. Tambahkan e ke T
ii. M = m + 1
2
a. Misalnya, graf pada Gambar 2.11 adalah graf awal, yaitu graf
bobotnya.
b. Dari semua bobot yang ada, bobot paling kecil adalah 5. Yaitu AD dan
(gambar 2.12).
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).
highlight hijau. Maka rusuk yang sudah dipilih sebagai bagian dari
sebagai bagian dari jalur MST pada graf ABCDEFG adalah AD-CE-
f. Selain AB, rusuk yang berbobot 7 adalah BE. Oleh karena itu BE
ke dalam MST. Rusuk yang sudah dipilih sebagai bagian dari jalur
g. Rusuk yang dipilih selanjutnya adalah rusuk yang berbobot lebih besar
adalah BC dan EF, namun karena kedua rusuk ini dapat membentuk
proses pemilihan rusuk dengan bobot terkecil selesai. Dan MST yang
D. Struktur Data
1. Array
MST yang merupakan terapan dari teori graph sangat berkaitan dengan
sangatlah tepat untuk menggunakan tipe data Array. Selain itu, juga karena dalam
Array adalah suatu tipe data terstruktur yang berupa sejumlah data sejenis
(bertipe data sama) yang jumlahnya tetap dan diberi suatu nama tertentu. Elemen-
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
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,
Dari contoh deklarasi tipe data array 1 dimensi diatas dapat kita ketahui
Dari contoh deklarasi array multidimensi diatas dapat diketahui sebuah array
Short.
2. Class
Class adalah tipe data yang didalamnya dapat berisi kumpulan berbagai tipe
Dari contoh class diatas, dapat kita lihat nama class adalah ShowMe.
3. Method DrawLine
Pen adalah parameter yang dapat digunakan untuk menentukan warna, lebar,
dan style dari garis yang akan dibuat. Sedangkan point1 dan point2 adalah letak
A. Analisis Sistem
spanning tree dari suatu graf tidak berarah, dengan menggunakan algoritma
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,
1. Kebutuhan Sistem
i. Kebutuhan software
Prosesor Pentium 4
Prosesor Pentium 4
Hardisk minimal 1 GB
B. Perancangan Proses
diakses oleh user melalui komputer yang telah terinstal program aplikasi. Pada
saat user mengakses tool untuk mencari minimum spanning tree, maka sistem
2. Struktur Data
a. Array
jumlah yang tetap dan setiap komponen dalam array dinyatakan sebagai
komponen Ax, Ay, dan Az. Bila A dideklarasikan bertipe integer, misalnya,
maka ketiga komponen tentu juga akan bertipe integer. Kumpulan dari ketiga
menampung data titik, garis, bobot, garis yang telah dikunjungi selama proses
data edge / garis. Array Edges ini bertipe data tEdge, yaitu class yang
mencakup properti edge / garis. Properti garis meliputi titik awal dan titik
akhir dari sebuah garis, dan bobotnya. Karena dalam array ini menampung
3
garis yang terdiri dari titik awal dan titik akhir, maka secara otomatis array ini
Bila pada suatu saat program yang sama akan dipakai untuk bekerja dengan
array yang dimensinya lebih besar maka kita harus mengadakan perubahan
array satu dimensi yang dinamis, dapat menambah indeks array secara
berfungsi untuk menampung data edge / garis yang telah dikunjungi selama
b. Class
Class adalah tipe data yang didalamnya dapat berisi kumpulan berbagai
berikut :
End Sub
End Class
Class tEdge diatas adalah class garis yang berisi data-data (property)
yang dimiliki garis. Garis terbentuk dari dua titik yaitu titik asal dan titik
terminal, maka class ini menyimpan data Vertex1 sebagai titik asal dan
Vertex2 sebagai titik terminal, dimana Vertex1 dan Vertex2 bertipe data
c. Method DrawLine
g.DrawLine(p1,edge.Vertex1.X,edge.Vertex1.Y,edge.Vertex2.X
, edge.Vertex2.Y)
edge.Vertex1.X,edge.Vertex1.Y,edge.Vertex2.X,
menghubungkan titik1 dan titik 2 akan digambar dengan style SolidBrush dan
C. Perancangan Antarmuka
gambaran tentang sistem yang akan dibuat sehingga pengguna mudah berinteraksi
dengan sistem. Antarmuka ini yang nantinya akan berinteraksi secara langsung
dengan pengguna. Oleh karena itu, menu-menu dan antarmuka dirancang agar
diinputkan.
Menu Open, digunakan untuk membuka data yang sudah ada atau
ii. Menu About, merupakan menu yang berisi informasi release program
1. Tampilan Awal
Tampilan awal berupa form start up untuk masuk ke menu utama. Form
start up merupakan form yang akan muncul hanya beberapa waktu saja dan secara
otomatis menutup sesuai dengan kontrol waktu yang telah ditentukan. Atau biasa
2. Tampilan Utama
pengguna akan berinteraksi dengan program pada tampilan utama ini. Pada
File About
New About
Open
Save
Exit
Untuk membuat lembar kerja baru, dapat dilakukan dengan memilih menu
New, maka akan tampil form input seperti pada gambar 3.6.
3
Setelah jumlah titik dan rusuk diinputkan, maka akan ditampilkan sebuah
tabel atau grid, yang akan digunakan untuk menginputkan dua titik yang saling
jumlah baris yang ditampilkan pada tabel ini sesuai dengan jumlah rusuk yang
Jika seluruh kolom dan baris yang mewakili rusuk dan bobot pada form ini
telah diisi, maka program dapat dieksekusi dengan memilih tombol Ok. Dan
informasi. Yaitu tabel hasil sorting secara ascending, tabel MST yang berisi data
hasil pencarian MST, dan gambar graf. Program juga dapat menampilkan proses
4. Perancangan Penyimpanan
dapat digunakan lagi (menu open). Data yang akan disimpan adalah data tentang
jumlah titik, rusuk, dan bobot. Data ini akan disimpan pada file berekstensi .ina.
BAB IV
A. Implementasi Program
1. Algoritma Kruskal
terpendek antar titik. Selama proses pencarian MST, titik, rusuk, dan bobot yang
menjadi bagian dari MST ditampung dalam array GrafMST. Berikut adalah
penggalan programnya :
mengecek apakah rusuk yang sedang di hitung menimbulkan cycle pada array
graphMst atau tidak. Jika rusuk tidak menimbulkan cycle, maka rusuk akan
adalah tipe data yang berisikan kumpulan titik dan garis, yang membentuk
sebuah graf.
4
Public Class tGraf
Private Edges(1000) As tEdge
End Class
StartPoint dan EndPoint pada awal proses penghitungan MST. StartPoint dan
rusuk yang dihitung menimbulkan cycle pada graf MST atau tidak. Fungsi
endPoint = e.Vertex2.Name
StartPoint dan EndPoint selama proses penghitungan MST. Jadi dalam proses
pencarian MST, pada setiap rusuk dengan bobot terkecil yang telah dipilih,
program melakukan looping sebanyak jumlah rusuk untuk melakukan cek cycle.
StartPoint = End Point maka rusuk tersebut menimbulkan cycle, dan berlaku
sebaliknya.
sebagai berikut :
4
a. GrafAwal = array untuk menyimpan rusuk dan bobot graf awal
pencarian MST
Titik2 = EndPoint.
c. Melakukan cek, apakah ada vtitik lain pada graf MST yang
If Edges(i).Vertex1.Name = StartPoint Or
Edges(i).Vertex2.Name = StartPoint Then
visitedEdge.Add(Edges(i))
4
If Edges(i).Vertex1.Name = endPoint Or
Edges(i).Vertex2.Name = endPoint Then
Return True
End If
Dim SP As Char
If Edges(i).Vertex1.Name = StartPoint Then
SP = Edges(i).Vertex2.Name
ElseIf Edges(i).Vertex2.Name = StartPoint Then
SP = Edges(i).Vertex1.Name
End If
dalam file berekstensi .ina . File ini akan menyimpan data-data berupa :
b. Titk 2 (titik akhir), titik 1 dan titik 2 akan membentuk sebuah rusuk.
c. Bobot
Pada prosedur sub SaveMenu_Click, semua data pada tabel input akan
diubah terlebih dahulu ke variabel bertipe data string. Antara data Titik1, Titik2,
If File.Exists(dlg.FileName) Then
File.Delete(dlg.FileName)
grid.EndEdit()
Untuk membuka data verteks yang telah disimpan oleh pengguna, data-
data yang telah diubah ke dalam variabel bertipe data string harus dipilah-pilah
dahulu. Salah satu fungsi yang dapat digunakan untuk memilah data adalah
fungsi split. Fungsi ini mengembalikan data berupa array berdasarkan karakter
pembatas.
Untuk menggambar graf awal, nama titik, relasi antar titik, dan bobot
yang digunakan diambil dari array graph, yaitu array yang berisi kumpulan titik,
class yang dapat digunakan untuk menggambar objek. Untuk menggambar garis
atau rusuk menggunakan class DrawLine, dan untuk melampirkan nama titik
buatKoordinat(Graph)
'
Dim myfont As New Font("Arial", 12)
Dim kuas As SolidBrush = New SolidBrush(Color.Black)
Next
End Sub
Untuk menggambar graf hasil pencarian MST, nama titik, relasi antar
titik, dan bobot yang digunakan diambil dari array graphMst, yaitu array yang
berisi kumpulan titik, rusuk, dan bobot graf MST yang telah terbentuk.
g = Panel1.CreateGraphics()
titik = GraphAwal.getTitik
itr += 1
End Sub
B. Implementasi Antarmuka
1. Tampilan Awal
Tampilan awal berupa form start up untuk masuk ke menu utama. Form
start up merupakan form yang akan muncul hanya beberapa waktu saja dan
secara otomatis menutup sesuai dengan kontrol waktu yang telah ditentukan.
2. Tampilan Utama
untuk menuju ke menu yang lain. Secara umum menu utama program Simulasi
▪ Menu New
▪ Menu Open
Menu ini berfungsi untuk membuka data yang sudah ada atau
disimpan sebelumnya.
▪ Menu Save
▪ Menu Exit
b. Menu About
penyusun program.
5
pengguna diminta memasukkan jumlah titik dan jumlah rusuk, kemudian akan
5
ditampilkan grid atau tabel, dimana jumlah baris atau row dari tabel ini sesuai
dengan jumlah rusuk yang dimasukkan oleh pengguna. Melalui tabel ini
pengguna dapat memasukkan data titik dan bobot dari graf yang akan dicari
MST nya.
memilih tombol Ok. Maka program akan menampilkan tabel hasil sorting
(ascending), tabel hasil pencarian MST, gambar graf, dan jumlah bobot
minimum MST.
Tabel hasil sorting menampilkan data titik dan bobot yang telah
diurutkan secara ascending, yaitu beruruan dari bobot yang paling kecil ke
meliputi data titik, rusuk dan bobot. Data ditampilkan secara berurutan sesuai
dengan proses pembentukan MST, yaitu rusuk yang mempunyai bobot paling
kecil ke bobot yang paling besar, dengan ketentuan rusuk tersebut tidak
menimbulkan cycle.
pembentukan MST, gambar graf harus direset terlebih dahulu dengan memilih
tombol Reset, setelah itu pilih tombol Berikutnya, maka akan ditampilkan proses
4. Tampilan Open
5. Tampilan Save
Pengguna dapat menyimpan data titik, rusuk, dan bobot yang telah
diinputkan dengan memilih menu Save. Data akan disimpan dengan ekstensi
.ina.
5
C. Pembahasan
kruskal. Jumlah titik maksimal yang dapat diinputkan adalah sebanyak 12 titik.
Kruskal ini, program akan diujicobakan pada data 7 titik dan 11 rusuk, dengan
bobot yang terkecil ke bobot yang terbesar. Data diurutkan berdasarkan bobot
mengambil bobot yang terkecil terlebih dahulu, selama rusuk dengan bobot
terkecil tersebut tidak menimbulkan cycle dalam graf. Data yang telah diurutkan
No Rusuk Bobot
1 AB 7
2 AD 5
3 BD 9
4 BC 8
5 BE 7
6 DE 15
7 DF 6
8 EF 8
9 EG 9
10 FG 11
11 CE 5
Total Bobot 90
No Rusuk Bobot
1 AD 5
2 CD 5
3 DF 6
4 AB 7
5 BE 7
6 BC 8
7 EF 8
8 BD 9
9 EG 9
10 FG 11
11 DE 15
Total Bobot 90
5
Setelah data diurutkan berdasarkan bobot terkecil, kemudian program
melakukan pencarian MST, dimulai dengan bobot terkecil. Pada data diatas,
bobot terkecil adalah lima, dan ada dua rusuk yang mempunyai bobot lima. Jika
terdapat lebih dari satu rusuk yang mempunyai bobot terkecil sama, maka
program akan memilih secara acak rusuk yang akan dihitung terlebih dahulu.
Setelah itu program akan melakukan cek cycle, apakah rusuk tersebut
menimbulkan cycle pada graf MST atau tidak. Jika rusuk menimbulkan cycle,
maka rusuk beserta bobot tidak ditambahkan pada graf MST. Program akan
rusuk dan bobot ke dalam graf MST, begitu seterusnya hingga jumlah rusuk graf
Berikut adalah gambar graf selama proses pencarian MST. Garis yang
No Rusuk Bobot
1 AD 5
2 CE 5
3 DF 6
4 AB 7
5 BE 7
6 EG 9
Total Bobot 39
Rusuk yang yang membentuk MST adalah AD – CE – DF – AB – BE –
D. Analisa
karena algoritma ini tidak menghitung atau memperdulikan arah antar titik dan
1. Kelebihan Program
didapat adalah :
2. Kekurangan Program
PENUTUP
Bagian akhir dari penulisan skripsi ini ditulis beberapa kesimpulan dan
saran sehubungan dengan hal-hal yang terkait dengan pencarian jalur terpendek
A. Kesimpulan
B. Saran
sebagai berikut :
MST, maka visualisasi graf berperan penting dalam program ini. Akan
tetapi algoritma untuk menampilkan gambar graf yang telah dibuat dalam
program ini belum fleksibel. Penulis menyarankan jika ada yang ingin
60
DAFTAR PUSTAKA
Arzinal, D., 2006, Membangun Pohon Merentang Minimum Dari Algoritma Prim
Eep, S S., 1990, Discrete Mathematics with Applications, Wadsworth Publishing Co,
California.
Lovasz, L., Pelikan, J., Vesztergombi, K., 2003, Discrete Mathematics Elementary
Muntaha, A., 2006, Graf Pohon dan Implementasinya Dalam Beberapa Persoalan,
Bandung.
Siang, J J., 2004, Matematika Diskrit dan Aplikasinya pada Ilmu Komputer, Andi,
Yogyakarta.