PENGGUNAAN ALGORITMA SOLLIN YANG DIMODIFIKASI UNTUK MENYELESAIKAN MASALAH DEGREE CONSTRAINED
MINIMUM SPANNING TREE
(Skripsi)
Oleh
FEBI MUDIYANTO
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS LAMPUNG
ABSTRACT
USING THE MODIFIED SOLLIN ALGORITHM TO SOLVE THE DEGREE CONSTRAINED
MINIMUM SPANNING TREE
Febi Mudiyanto
Given a connected weighted graph G(V,E), The Degree Constrained Minimum Spanning Tree (DCMST) is a problem of finding a spanning tree T of G with the minimum weight while also maintaining the degree requirement on every vertex. In this research, the algorithm for solving the DCMST is made based on Sollin’s algorithm. The algorithm is implemented using 300 random table problems and the result show that the performance of the algorithm against its lower bound is 8,33%.
ABSTRAK
PENGGUNAAN ALGORITMA SOLLIN YANG DIMODIFIKASI UNTUK MENYELESAIKAN MASALAH DEGREE CONSTRAINED
MINIMUM SPANNING TREE
Oleh
Febi Mudiyanto
Diberikan graf terhubung berbobot G (V, E), Degree Constrained Minimum
Spanning Tree (DCMST) adalah masalah untuk menentukan spanning tree T dari G dengan bobot minimum dan juga tetap mempertahankan persyaratan derajat pada tiap titik. Dalam penelitian ini, algoritma untuk menyelesaikan DCMST dibuat berdasarkan modifikasi Algoritma Sollin. Algoritma ini diimplementasikan menggunakan 300 masalah. Hasil penelitian menunjukkan bahwa kinerja algoritma adalah 8.33% bedanya dari batas bawah DCMST.
PENGGUNAAN ALGORITMA SOLLIN YANG DIMODIFIKASI UNTUK MENYELESAIKAN MASALAH DEGREE CONSTRAINED
MINIMUM SPANNING TREE
Oleh
FEBI MUDIYANTO
Skripsi
Sebagai Salah Satu Syarat untuk Memperoleh Gelar SARJANA MATEMATIKA
Pada
Jurusan Matematika
Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Lampung
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS LAMPUNG
RIWAYAT HIDUP
Penulis bernama lengkap Febi Mudiyanto, anak pertama dari dua bersaudara yang
dilahirkan di Gedung Ratu pada tanggal 18 Februari 1999 oleh pasangan Bapak
Radiyanto dan Ibu Murniati.
Penulis telah menempuh pendidikan di SD Negeri 02 Gedung Ratu pada tahun
2004-2010, setelah itu melanjutkan sekolah di SMP N 01 Anak Ratu Aji pada tahun
2010-2013, dan bersekolah di SMA N 01 Terbanggi Besar pada tahun 2013-2016.
Pada tahun 2016 penulis terdaftar sebagai mahasiswa S1 Matematika Fakultas
Matematika dan Ilmu Pengetahuan Alam Universitas Lampung melalui Jalur
SBMPTN.
Pada Januari 2019 penulis melaksanakan Kerja Praktik (KP) di PT. Bimandiri Agro
Sedaya, Lembang, Bandung. Pada September tahun 2019 melakukan Kuliah Kerja
KATA INSPIRASI
“Janganlah engkau bersedih, sesungguhnya Allah Bersama kita” (QS: At-Taubah, 40)
“Nothing is impossible”
Karya ini aku persembahkan untuk keluargaku tersayang,
Bapak, Mamak dan adek, serta Almamater tercinta
SANWACANA
Alhamdulillah puji syukur kepada Allah SWT yang telah melimpahkan segala
rahmat dan hidayah-Nya sehingga skripsi ini dapat diselesaikan. Shalawat serta
salam semoga tetap tercurah kepada junjungan besar Nabi Muhammad SAW,
penuntun jalan bagi seluruh umat manusia. Skripsi ini berjudul “Penggunaan
Algoritma Sollin yang Dimodifikasi untuk Menyelesaikan Masalah Degree
Constrained Minimum Spanning Tree”, disusun sebagai salah satu syarat untuk
memperoleh gelar Sarjana Matematika (S.Mat.) di Jurusan Matematika Fakultas
Matematika dan Ilmu Pengetahuan Alam Universitas Lampung.
Dengan ketulusan hati penulis ingin mengucapkan terima kasih kepada :
1. Ibu Prof. Dra. Wamiliana, MA., Ph.D., selaku Dosen Pembimbing I, dan Ketua
Jurusan Matematika yang telah memberikan masukan, ide, kritik, dan saran
kepada penulis selama penyusunan skripsi ini.
2. Bapak Dr. rer. nat. Akmal Junaidi, M.Sc., selaku Dosen Pembimbing II yang
telah memberikan arahan dan masukannya selama penyusunan skripsi ini.
3. Bapak Amanto, S.Si., M.Si., selaku Dosen Penguji, terima kasih atas
kesediaannya untuk menguji dan memberi saran yang baik dalam skripsi ini.
4. Bapak Drs. Nusyirwan, M.Si., selaku Dosen Pembimbing Akademik yang
5. Bapak Drs. Suratman, M.Sc., selaku Dekan FMIPA Universitas Lampung.
Seluruh Dosen dan Karyawan Jurusan Matematika Fakultas Matematika dan
Ilmu Pengetahuan Alam Universitas Lampung.
6. Bapak Radiyanto dan Ibu Murniati, orang tuaku tercinta serta Dwi Novitasari,
adikku tersayang yang tak pernah berhenti memberi semangat, doa, dorongan,
nasehat dan kasih sayang serta pengorbanan yang tak tergantikan hingga
penulis selalu kuat menjalani setiap rintangan yang ada di setiap perjalanan
hidup penulis.
7. Rita Anggraini, yang selalu menemani masa-masa akhir perkuliahan dan
mendampingi penulis dalam penyelesaian skripsi ini.
8. Kawan-kawan angkatan 2016, serta abang dan yunda jurusan matematika yang
memberikan bantuan, nasihat serta dukungannya.
9. Teman-teman UKM Universitas yang mewarnai kisah-kisah di dunia
perkuliahan.
10. Almamater tercinta Universitas Lampung.
Penulis
DAFTAR ISI
Halaman
DAFTAR GAMBAR ... xiv
DAFTAR TABEL ... xv
I. PENDAHULUAN 1.1 Latar Belakang dan Masalah ... 1
1.2 Batasan Masalah ... 3
1.3 Tujuan Penelitian ... 4
1.4 Manfaat Penelitian ... 4
II. TINJAUAN PUSTAKA 2.1 Konsep Dasar Teori Graf ... 5
2.2 Minimum Spanning Tree dan Turunannya ... 9
2.3 Algoritma Sollin... 10
2.4 Python ... 11
III. METODE PENELITIAN 3.1 Waktu dan Tempat Penelitian ... 13
3.2 Bahan dan Alat ... 13
IV. PEMBAHASAN
4.1 Data yang Digunakan ... 20 4.2 Algoritma Penentuan DCMST ... 20 4.3 Source Code untuk Load Data dan Representasi Graf dalam Bentuk
Matriks Adjacent ... 21 4.4 Source Code untuk Menentukan DCMST Menggunakan Algoritma
Modified Sollin... 22 4.5 Pengujian dan Hasil ... 26
V. KESIMPULAN
3.1 Kesimpulan ... 37 3.2 Saran ... 37
DAFTAR GAMBAR
Gambar Halaman
1. Contoh graf berbobot ... 7
2. Contoh Tree ... 7
3. Tampilan data folder orde 10 file 1.dat di Python ... 14
4. Visualisasi label X dan Y dari data folder orde 10 file ‘1.dat’ ... 15
5. Tampilan matriks adjacent dari data folder orde 10 file ‘1.dat’ ... 16
6. Isi file orde 10 file “1.dat” ... 18
7. Representasi graf lengkap untuk file orde 10 ... 18
DAFTAR TABEL
Tabel Halaman
1. Hasil penyelesaian MST dan DCMST pada orde 10 ... 26
2. Hasil penyelesaian MST dan DCMST pada orde 20 ... 27
3. Hasil penyelesaian MST dan DCMST pada orde 30 ... 28
4. Hasil penyelesaian MST dan DCMST pada orde 40 ... 29
5. Hasil penyelesaian MST dan DCMST pada orde 50 ... 30
6. Hasil penyelesaian MST dan DCMST pada orde 60 ... 31
7. Hasil penyelesaian MST dan DCMST pada orde 70 ... 31
8. Hasil penyelesaian MST dan DCMST pada orde 80 ... 32
9. Hasil penyelesaian MST dan DCMST pada orde 90 ... 33
10. Hasil penyelesaian MST dan DCMST pada orde 100 ... 34
1
I. PENDAHULUAN
1.1 Latar Belakang dan Masalah
Ilmu matematika memberikan dampak yang sangat besar dalam perkembangan
teknologi saat ini. Matematika sebagai The Mother of Science telah
menyumbangkan teori-teorinya dalam menyelesaikan permasalahan kehidupan
sehari-hari. Salah satu cabang ilmu matematika yang memiliki peran terhadap
pemecahan masalah adalah Teori Graf.
Menurut Deo (1989), Teori Graf memiliki penerapan yang luas pada
penerapan-penerapan di bidang teknik, fisika, sosial, ilmu biologi, ilmu bahasa serta banyak
bidang lainnya. Teori Graf digunakan untuk merepresentasikan suatu komponen
dan hubungan antar komponen.
Optimisasi biasa dilakukan untuk mendapatkan suatu nilai optimum (maksimum
atau minimum) dari suatu variabel keputusan dengan batasan-batasan tertentu
(Winston, 2003). Misalkan pemerintah suatu kota akan membangun jaringan pipa
air. Jaringan pipa ini menghubungkan setiap kelurahan yang direpresentasikan
dengan graf, dimana himpunan titik (vertex) mewakili kelurahan-kelurahan yang
2
setiap kelurahan serta bobot mewakili panjang pipa atau biaya yang diperlukan.
Permasalahan yang terjadi yaitu pemerintah ingin setiap kelurahan terhubung,
namun dengan total bobot minimum. Masalah tersebut dalam teori graf dan
optimisasi, disebut dengan istilah Minimum Spanning Tree (MST) yaitu penentuan
spanning tree yang memiliki bobot minimum dari suatu graf. Terdapat dua
algoritma yang umum digunakan dalam penyelesaian MST yaitu Algoritma Prim
dan Algoritma Kruskal. Walaupun demikian, Algoritma yang pertama kali
dikembangkan untuk menyelesaikan masalah MST adalah algoritma yang
dikembangkan oleh Bӧruvka yang kemudian lebih dikenal sebagai Algoritma
Sollin.
Permasalahan jaringan pipa air dapat berkembang menjadi suatu masalah baru jika
terdapat batasan-batasan lainnya. Misalnya dalam jaringan pipa-pipa tersebut
memiliki batasan maksimal jumlah pipa yang dapat terhubung di setiap kelurahan.
Batasan tersebut merupakan batasan derajat disetiap titiknya yang disebut dengan
Degree Constrained, sehingga MST tersebut menjadi DCMST (Degree
Constrained Minimum Spanning Tree). Garey dan Jhonson (1979) menunjukkan
bahwa permasalahan DCMST ini termasuk dalam kelas sulit diselesaikan secara
komputasi (NP-Complete). Wamiliana dan Caccetta (2013) menyelesaikan
masalah DCMST menggunakan algoritma Modified CW1 sampai pada 500 titik.
Wamiliana dkk (2014) membuktikan perbandingan kompleksitas dari Algoritma
3
pada sebuah jaringan pipa air, namun hanya diimplementasikan Algoritma Sollin
untuk menyelesaikan masalah Minimum Spanning Tree (MST), bukan DCMST.
DCMST dapat diselesaikan dengan menggunakan MST yang telah dimodifikasi.
Oleh karena itu, untuk mendapatkan DCMST, dapat digunakan Algoritma Prim,
Kruskal maupun Sollin yang dimodifikasi. Pada penelitian ini akan digunakan
Algoritma Sollin yang dimodifikasi untuk menentukan DCMST.
Persoalan dalam penelitian ini akan diselesaikan dengan bantuan program komputer
yang ditulis dalam bahasa pemprograman Python. Python merupakan sebuah
bahasa pemprograman berbasis object-oriented. Guido von Rossum, merancang
dan mengembangkan bahasa pemprograman Python sebagai bahasa yang mudah
dipelajari. Prinsip-prinsip yang diterapkan oleh Guido adalah menggabungkan
kemampuan dan kapabilitas dengan disertai sintaksis kode yang sangat jelas, serta
dilengkapi dengan fungsionalitas pustaka yang komprehensif. Python dapat
digunakan untuk berbagai komputasi matematika, operasi matriks serta dapat
berjalan diberbagai platform sistem operasi. Bahasa pemprograman Python dapat
dengan mudah didapatkan dan dipergunakan secara bebas dan bersifat open source.
Python akan sangat membantu dalam proses komputasi Algoritma Modified Sollin,
sehingga penulis tertarik untuk menyelesaikan DCMST dengan Algoritma
Modified Sollin menggunakan bahasa pemprograman Python.
1.2 Batasan Masalah
Pada penelitian ini masalah dibatasi hanya pada penentuan DCMST dengan
4
1.3 Tujuan Penelitian
Tujuan dari penelitian yang dilakukan adalah sebagai berikut:
1. Mengembangkan Algoritma Modified Sollin untuk penyelesaian DCMST.
2. Mengembangkan source code untuk poin 1.
3. Mengimplementasikan source code pada poin 2 menggunakan data yang telah
dibangkitkan.
1.4 Manfaat Penelitian
Manfaat dari penelitian ini adalah sebagai salah satu gambaran untuk penyelesaian
suatu masalah optimisasi jaringan dalam kehidupan sehari-hari. Masalah
dikehidupan sehari-hari dapat berupa seperti yang telah diuraikan sebelumnya,
ketika pemerintah menginginkan untuk membangun jaringan pipa air yang
terhubung pada setiap kelurahan, tetapi, terdapat beberapa kendala seperti berikut:
1. Keterbatasan penghubung antar bangunan, yaitu berupa batas maksimal jumlah
pipa yang dapat terhubung disetiap kelurahan (degree constrained)
2. Setiap kelurahan harus terhubung dengan biaya yang minimum (minimum
spanning tree).
Pada proses instalasi jaringan pipa air yang sebenarnya, permasalahan topologi
5
II. TINJAUAN PUSTAKA
Bab ini menjelaskan tentang istilah-istilah yang digunakan pada penelitian ini.
2.1 Konsep Dasar Teori Graf
Pada Subbab ini istilah-istilah diambil dari Deo (1989).
Graf
Graf G(V,E) adalah pasangan terurut (V,E) dengan V adalah himpunan berhingga
dari elemen yang disebut vertex atau titik, V ≠
ø
, dan E adalah himpunangaris-garis atau edge yang menghubungkan titik-titik di V. Loop adalah garis yang titik
awal dan akhirnya adalah titik yang sama.
Degree (Derajat)
Pada graf G, misalkan v adalah titik yang terdapat dalam V, maka banyaknya garis
yang menempel pada titik v dan garis suatu loop dihitung dua kali merupakan
6
Walk (Perjalanan), Path (Lintasan) dan Circuit (Sirkuit)
Barisan titik-titik yang terhubung dan garis berselang seling, diawali dari titik v dan
berakhir pada w dengan syarat disetiap garis menempel pada titik sebelum dan
sesudahnya, merupakan suatu walk dari v ke w. Walk dengan panjang n dan dari v
ke w dapat ditulis sebagai berikut: v0 e1 v1 e2 v2 e3…vn-1 en vn dengan v0 = v; vn =w;
vi-1 dan vi merupakan titik-titik diujung garis ei.
Path yang memiliki panjang n dari v ke w merupakan walk dari v ke w dengan garis
yang berbeda. Path dari v ke w dapat ditulis sebagai v = v0 e1 v1 e2 v2 e3 … vn-1 en
vn = w dengan ei ≠ ej.untuk i≠ j.
Path yang dimulai serta diakhiri pada titik yang sama adalah sirkuit dengan panjang
n. Sirkuit merupakan path yang memiliki bentuk v0 e1 v1 e2 v2 e3 …
vn-1 en vn dengan v0 = vn .
Graf Terhubung
Sebuah graf G disebut terhubung jika ada sekurang-kurangnya satu path untuk
setiap pasangan titik di G.
Graf Berbobot
Graf berbobot merupakan graf yang memiliki nilai atau bobot pada setiap
7
Gambar 1. Contoh graf berbobot
Tree (Pohon)
Tree (Pohon) didefinisikan sebagai graf terhubung yang tidak mengandung sirkuit,
sedangkan forest (hutan) merupakan himpunan dari beberapa tree yang tidak saling
terhubung. Kelima pernyataan tentang tree ini adalah ekuivalen :
1. G terhubung dan tidak mengandung sirkuit, atau
2. G tidak mengandung sirkuit dan mempunyai n-1 garis, atau
3. G mempunyai n-1 garis dan terhubung.
4. Ada tepat satu path diantara setiap pasangan titik di G, atau
5. G adalah suatu graf yang terhubung minimal.
Gambar 2. Contoh Tree
a b c d e 4 6 3 4 2 3 a
b e
[image:23.595.247.376.573.689.2]8
Gambar 2, merupakan salah satu contoh dari Tree. Gambar tersebut adalah graf
yang terhubung dan tidak memiliki sirkuit, serta memiliki n-1 garis.
Subgraf
Graf g dikatakan sebuah Subgraf dari graf G jika setiap titik dan setiap garis dari g
ada dalam G, dan setiap garis dari g memiliki titik-titik ujung yang sama dalam g
seperti pada G.
Spanning Tree (Pohon Rentangan)
Suatu Tree T dapat dikatakan suatu spanning tree dari sebuah graf terhubung G,
jika T merupakan subgraf dari G dan T mengandung setiap titik dari G
Adjacent (Bertetangga) dan Incidence (Menempel)
Jika titik vi merupakan titik ujung dari garis ej maka vi dan ej dapat dikatakan incident satu sama lain. Dua titik dapat dikatakan adjacent jika kedua titiktersebut
merupakan titik akhir dari garis yang sama, dan dua garis yang tidak paralel
dikatakan adjacent jika kedua garis tersebut incident pada satu titik.
Matriks Adjacent
Matriks adjacent dari sebuah graf G dengan n titik dan tanpa garis paralel adalah
9
xij = 1, jika ada sebuah garis diantara titik i dan titik j, dan
xij = 0, jika tidak ada garis diantara titik i dan titik j.
Matriks adjacent pada graf berbobot, maka nilai xij adalah nilai bobot garis diantara
titik i dan titik j, dan xij = 0 jika tidak terdapat garis diantara titik i dan titik j. Misal
graf pada Gambar 1 memiliki matriks adjacent sebagai berikut:
𝑎 𝑏 𝑐 𝑑 𝑒
𝑎 𝑏 𝑐 𝑑 𝑒 [ 0 3 0 0 4
3 0 0 4
0 4 0 6
4 0 6 0 2 0 2 0 0 3 3 0]
2.2 Minimum Spanning Tree dan Turunannya
Tree (pohon) merupakan suatu graf terhubung yang tidak mengandung sirkuit.
Contoh tree dapat dilihat pada Gambar 2. Himpunan tree yang terpisah satu sama
lain disebut dengan forest (hutan). Titik (vertex) berderajat 1 dinamakan daun (leaf)
atau disebut juga titik pendant atau titik terminal, sedangkan titik yang memiliki
derajat lebih dari 1 dinamakan titik cabang (branch node) atau titik internal
(internal node). Misal pada Gambar 2 , titik a, e, g, j, h, dan k merupakan daun dan
titik b, c, d, f, i adalah titik cabang.
Menurut Deo (1989), di dalam tree memiliki sifat-sifat sebagai berikut:
1. Garis antara dua titik bersifat tunggal.
2. Jumlah titik lebih banyak daripada jumlahgaris.
10
Minimum Spanning Tree (MST)
Menurut Munir (2009), jika terdapat G, suatu graf berbobot, maka bobot spanning
tree T dari G didefinisikan sebagai jumlah bobot setiap garis di T. Spanning tree
yang berbeda dapat memiliki jumlah bobot yang berbeda pula. Diantara semua
spanning tree pada graf G, spanning tree yang memiliki bobot terkecil atau
minimum didefinisikan sebagai Minimum Spanning Tree (MST). MST ini memiliki
terapan yang luas dalam permasalahan riil, misalnya masalah jaringan listrik dan
jaringan PDAM.
Degree Constrained Minimum Spanning Tree (DCMST)
DCMST adalah permasalahan yang dikembangkan dari masalah MST, yaitu dengan
menambahkan kendala degree (derajat) pada MST. Kondisi pembatasan jumlah
degree yang dimiliki oleh suatu titik disebut dengan Degree Constrained. DCMST
merupakan permasalahan untuk menemukan MST dari graf G dengan degree pada
setiap titiknya dibatasi persamaan, di≤bi (Caccetta dan Hill, 2001).
2.3 Algoritma Sollin
Konsep awal dari Algoritma Sollin adalah menghubungkan setiap titik dengan edge
atau garis dengan nilai terendah di graf G. Fase awal dari Algoritma Sollin adalah
menghubungkan tiap titik dengan garis terendah yang menempel dengannya,
kemudian menggabungkan garis yang telah terpilih. Algoritma Sollin
11
Inisialisasi: Graf G dengan n titik dan m garis.
Langkah-langkah:
1. Daftarkan semua titik yang ada di graf G
2. Pilih garis dengan bobot terkecil yang menempel pada setiap titik. Jika terdapat
dua garis dengan bobot terkecil yang sama, pilih satu. (proses ini akan
menghasilkan forest yang merupakan gabungan dari k komponen dari graf G)
3. Simpan garis yang terpilih dalam suatu himpunan (set), dengan ketentuan bahwa
titik yang terhubung di dalam himpunan yang sama. Banyaknya himpunan
menunjukkan banyaknya k komponen yang terbentuk.
4. Tentukan garis dengan bobot terkecil yang berada di luar masing-masing
komponen, yang menghubungkan dua komponen. Gabungkan dua komponen
yang baru terhubung tersebut, menjadi satu komponen, sehingga jumlah
komponen menjadi k-1.
5. Ulangi langkah 4 sampai k=1.
6. Hapus garis yang tidak terpakai.
7. Selesai, MST didapat.
2.4 Python
Python merupakan bahasa pemrograman yang bersifat gratis dan open source.
Python memiliki sintaksis kode yang jelas, mudah dipahami, memiliki struktur data
yang kuat, dan merupakan bahasa pemrograman yang dinamis serta biasa
digunakan untuk software quality, developer productivity, program portability, dan
component integration (Lutz, 2010). Python adalah bahasa pemrograman yang
12
ada. Bahasa pemrograman Python telah digunakan untuk mengembangkan
berbagai perangkat lunak, seperti internet scripting, system programming, user
interfaces, product customization, dan numberic programming (Harismawan dkk,
2018).
Menurut Lutz (2010), Bahasa pemrograman Python memiliki beberapa fitur yang
dapat digunakan dalam pengembangan perangkat lunak. Berikut adalah fitur yang
dimiliki oleh bahasa pemrograman Python:
1. Multi Paradigm Design
2. Open Source
3. Simplicity
4. Library Support
5. Portability
6. Extendable
13
III. METODE PENELITIAN
3.1 Waktu dan Tempat Penelitian
Penelitian ini dilakukan di Jurusan Matematika, Fakultas Matematika dan Ilmu
Pengetahuan Alam, Universitas Lampung tahun 2019.
3.2 Bahan dan Alat
Bahan yang dibutuhkan untuk mendukung penelitian ini adalah data masalah dari
berbagai literatur mengenai Matriks, Algoritma Sollin serta implementasinya.
Alat yang digunakan dalam penyelesaian penelitian ini adalah:
1. Perangkat keras Notebook Lenovo Ideapad 110, dengan spesifikasi:
a. Processor Intel Core i5-6200U CPU 2.3 GHz
b. SSD 120 GB
c. RAM 4 GB
2. Perangkat lunak (Software)
a. Windows 10 Pro 64-bit
14
3.3 Alur Penelitian
Langkah-langkah yang ditempuh dalam penelitian ini adalah:
1. Mengumpulkan bahan literatur serta studi kepustakaan.
2. Membuat program untuk load data.
Data penelitian perlu dimasukkan ke Python, sehingga dapat dilakukan
proses selanjutnya. Berikut adalah source code untuk load data pada editor
Python :
import numpy as np
data=np.loadtxt('F:\\Penelitian
Skripsi\\data\\10\\1.dat')
data=data.astype(int)
data=data.reshape(len(data),1)
Tampilan data yang telah dimasukkan ke Python terlihat pada Gambar 3
berikut:
Gambar 3. Tampilan data folder orde 10 file 1.dat di Python.
3. Membuat program untuk menghitung banyaknya titik (vertex) yang
digunakan.
Informasi yang didapat dari data penelitian adalah bobot setiap garis, maka
perlu dihitung banyaknya titik yang digunakan. Sedangkan penelitian ini
menggunakan graf lengkap, sehingga setiap titik dihubungkan dengan satu
garis ke setiap titik lainnya dan misalkan 𝑥 adalah banyaknya garis,
banyaknya titik dapat dihitung dengan Persamaan 3.1 berikut:
𝑛 =1+ √1+4(2𝑥)
15
import math
#function untuk menghitung jumlah titik graf
def jumlahtitik(data):
jumlah_garis=len(data)
n=(1+math.sqrt(1+(8*jumlah_garis)))/2
return int(n)
n=jumlahtitik(data)
4. Membuat program untuk memberikan label pada setiap titik yaitu X dan Y
sebagai ‘sumber’ dan ‘tujuan’.
Data yang telah dimasukkan dalam Python perlu didefinisikan sebagai
bobot dari titik X dan Y, sebagai label ‘sumber’ dan ‘tujuan’. Gambar 4
[image:31.595.307.345.327.719.2]merupakan visualisasi label X dan Y dari data folder orde 10 file ‘1.dat’.
16
Source code program Python,
def label(n):
c=list(range(n,0,-1)) d=list(range(1,n+1)) x_y=[[],[]]
for t in d:
i=1 a=t+1
while (i < c[t-1]):
x_y[0].append(t) x_y[1].append(a) i += 1
a += 1
return np.asarray(x_y).T
x_y=label(n)
5. Membuat program untuk memasukkan bobot untuk setiap X dan Y,
sehingga akan diperoleh tabel yang mengandung nilai sumber, tujuan, dan
bobot.
Bobot yang telah dimasukkan diawal, kemudian digabungkan dengan label
yang dibuat pada langkah 4. Hasilnya adalah tabel dengan 3 kolom yaitu
sumber, tujuan, dan bobot. Berikut adalah source code program Python:
tab=np.concatenate((x_y,data),axis=1)
6. Membuat program untuk merubah tabel menjadi bentuk matriks adjacent.
[image:32.595.147.335.105.271.2]Matriks adjacent memiliki entri bernilai mij=mji seperti yang terlihat pada
[image:32.595.225.422.615.711.2]17
Source code pada Python,
def matriks_adjacent(tab,n):
m=np.zeros((n,n))
for i in range(len(tab)):
a=int(tab[i][0]) b=int(tab[i][1]) m[a-1,b-1]=tab[i][2] m += m.T
return m
m=matriks_adjacent(tab,n)
7. Membuat program Algoritma Sollin fase 1, untuk mendapatkan beberapa
komponen graf.
Algorima Sollin pada awalnya mencari garis terpendek dari setiap titiknya,
kemudian dihubungkan menjadi k komponen graf. Modifikasi yang
dilakukan pada penelitian ini adalah derajat setiap titiknya dibatasi dengan
persamaan 1 ≤ d(v) ≤ 3, dan jika pada fase 1 ini derajat titik pada komponen
tersebut atau d(v) > 3, maka reduksi garis dengan jarak terpanjangnya.
8. Membuat program Algoritma Sollin untuk DCMST serta menghubungkan
setiap komponen.
Beberapa komponen yang dihasilkan pada langkah 7 dihubungkan setiap
komponennya, namun dengan tetap membatasi pada 1 ≤ d(v) ≤ 3.
9. Mengimplementasikan dengan data yang telah dibangkitkan.
Data yang digunakan merupakan data dari penelitian yang telah dilakukan
oleh Wamiliana dkk. (2015). Data tersebut adalah data yang dibangkitkan
secara acak menggunakan distribusi uniform dan terbagi menjadi 10 folder
dengan masing-masing memiliki 30 file dengan ekstensi “.dat”. Salah satu
18
data tersebut direpresentasikan dalam bentuk graf lengkap, seperti yang
[image:34.595.239.424.519.697.2]terlihat pada gambar 7.
Gambar 6. Isi file orde 10 file “1.dat”
19
[image:35.595.229.392.128.726.2]Flowchart (diagram alur) penelitian, dapat dilihat pada Gambar 8 berikut ini:
Gambar 8. Flowchart Penelitian
Mulai
Studi Kepustakaan
Membuat algoritma menentukan DCMST
Membuat source code untuk
load data dan representasi graf dalam bentuk matriks
adjacent
Membuat source code untuk
menentukan DCMST
Mengimplementasikan source code dengan data yang telah dibangkitkan
37
V. KESIMPULAN
Penelitian pengembangan Algoritma Modified Sollin dalam menyelesaikan
masalah Degree Constrained Minimum Spanning Tree (DCMST) telah selesai
dilakukan. Berikut ini merupakan kesimpulan dan saran yang dapat digunakan
sebagai rujukan untuk penelitian selanjutnya
5.1 Kesimpulan
Algoritma Sollin yang dimodifikasi (Algoritma Modified Sollin) dapat digunakan
dalam penyelesaian masalah DCMST dan setelah dilakukan implementasi
mendapatkan hasil yang tidak jauh berbeda dari solusi penyelesaian MST dengan
Algoritma Sollin. Solusi MST dan solusi DCMST menghasilkan rasio
rata-rata |DCMST−MST
MST | 𝑥 100% adalah 8.335%. Rasio terendah yaitu 4.879% pada orde
10 dan rasio tertinggi yaitu 9.801% pada orde 70.
5.2 Saran
38
1. Menambahkan fitur menampilkan graf menggunakan libraryNetworkx dalam
Python untuk memudahkan melihat bentuk graf solusi.
2. Membuat modifikasi lain dengan mengubah algoritma pengabungan
39
DAFTAR PUSTAKA
Caccetta, L. and S. P. Hill. 2001. A Branch and Cut Method for the Degree
Constrained Minimum Sapnning Tree Problem. Networks. 37(2):74-83.
Deo, N. 1989. Graph Theory with Applications to Engineering and Computer
Science. Prentice Hall Inc., New York.
Garey, M.R. dan D.S. Johnson. 1979. Computer and Intractability, A Guide to
The Theory of NP-Completeness. Freemann, San Fransisco.
Lubis, A. S. 2017. Implementasi Algoritma Sollin dalam Menentukan Minimum
Spanning Tree pada Pembuatan Jalur Pipa Air di Universitas Sumatera Utara [Skripsi]. Medan, Universitas Sumatera Utara.
Harismawan, A. F, Kharisma, A. P., dan Afirianto, T. 2018. Analisis
Perbandingan Performa Web Service Menggunakan Bahasa Pemrograman
Python, PHP, dan Perl pada Client Berbasis Android. Jurnal
Pengembangan Teknologi Informasi dan Ilmu Komputer. 2(1): 237-245
Lutz, Mark. 2010. Programming Python. Edisi keempat. O’Reilly Media Inc.,
Sebastopol.
Munir, Rinaldi. 2009. Matematika Diskrit. Edisi Ketiga. Informatika, Bandung.
Wamiliana, dan L. Caccetta. 2013. The Modified CW1 Algorithm For The
Degree Restricted Minimum Spanning Tree Problem. International Jurnal
40
Wamiliana, Kurniawan D., dan Shavitri N.F.C. 2014. Perbandingan
Kompleksitas Algoritma Prim, Algoritma Kruskal, Dan Algoritma Sollin
Untuk Menyelesaikan Masalah Minimum Spanning Tree. Jurnal
Komputasi. 2(1): 60-67.
Wamiliana, Faiz A. M. Elfaki, Mustofa Usman, and M. Azram, 2015. Some Greedy Based Algorithms for Multi Periods Degree Constrained Minimum
Spanning Tree Problem. ARPN Journal of Engineering and Applied
Science. Vol. 10 (21): 10147-10152.
Winston, Wayne L. 2003. Operations Research Applications and Algorithms.