• Tidak ada hasil yang ditemukan

III. METODE PENELITIAN

3.3. Alur Penelitian

Langkah-langkah yang digunakan dalam penelitian ini adalah : a) Mengumpulkan bahan literatur serta studi kepustakaan. b) Membuat program untuk memanggil data.

Data diperoleh dari penelitian yang telah dilakukan oleh Wamiliana dkk. (2005). Data tersebut merupakan data yang di-generate secara acak dengan distribusi uniform.

Data terbagi menjadi 10 folder dengan masing-masing folder berisi 30 file berekstensi .dat. Berikut data yang telah dimasukan kedalam GNU Octave :

Gambar 11. Tampilan data folder 10-vertex file 1.dat di Octave

Program pada editor GNU Octave

29

c) Membuat program GNU Octave yang dapat menghitung banyaknya titik yang dihasilkan oleh suatu data sisi yang diperoleh

Graf yang akan diteliti merupakan graf terhubung sederhana, yang mana setiap titik terhubung dengan titik lainnya oleh satu buah sisi. Berikut tabel hubungan antara banyak titik dan sisi pada suatu graf terhubung sederhana.

Tabel 3. Tabel banyak titik dan banyak sisi pada graf terhubung sederhana

Banyak titik

Banyak sisi Banyak

titik Banyak sisi 1 0 8 28 2 1 9 36 3 3 10 45 4 6 20 190 5 10 30 435 6 15 40 780 7 21 50 1125

Jika diperhatikan banyak sisi yang terbentuk pada tabel 3 membentuk suatu pola barisan. Sehingga dapat diperoleh rumus suku ke-Un dari pola tersebut adalah sebagai berikut:

𝑈𝑛 = 𝑛(𝑛−1)

2 (3.1)

2𝑈𝑛 = 𝑛2− 𝑛 (3.2)

Dengan menggunakan Persamaan 2.3 bisa ditemukan banyak titik dengan mensubstitusikan Persamaan 3.2. sehingga diperoleh persamaan baru yaitu :

𝑛 =1+√1+8𝑈𝑛

30

Dari Persamaan 3.3 dapat diperoleh banyak titik (banyak titik selalu bernilai positif).

Misal banyak data pada data 1 dalam folder 10-vertex adalah 45, maka program ini akan menghitung bahwa banyak titiknya adalah 10.

Program pada GNU Octave

function titik = cek_titik(matriks) bykisi=length(matriks); %bykisi=Un c=2*bykisi;

n=(1+sqrt(1+(4*c)))/2; titik=n;

end

d) Membuat program yang dapat memberikan nilai X dan Y secara otomatis pada setiap data. Dengan X adalah titik awal dan Y adalah titik yang dituju. Misal pada data 1, folder 10 vertek, terdapat 10 titik, maka program ini akan memunculkan secara otomatis sebagai berikut

X = 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 4 4 4 4 4 4 5 5 5 5 5 6 6 6 6 7 7 7 8 8 9 Y = 2 3 4 5 6 7 8 9 10 3 4 5 6 7 8 9 10 4 5 6 7 8 9 10 5 6 7 8 9 10 6 7 8 9 10 7 8 9 10 8 9 10 9 10 10

Program pada GNU Octave

function [X Y]=inputanya(n) j=1;

31

while j <= n && n > 2 %perulangan akan berjalan jika n lebih dari 2 r=n-j; k=j*ones(1,r); j=j+1; cr=length(X); rk=cr+1; dk=length(k); X(1,rk:cr+dk)=k; if j==n break end end Y=[]; p=1; while p <= n && n > 2 yh=p+1; if yh > n break end h=yh:n; p=p+1; iu=length(Y); yu=iu+1; tu=length(h); Y(1,yu:iu+tu)=h; end

e) Membuat program untuk memasukan bobot pada setiap titik X dan Y. Sehingga di hasilkan matrik sebagai berikut.

Data =

Gambar 12. Hasil menggabungkan titik X dan Y dengan bobotnya

Program pada GNU Octave

32

f) Membuat matriks data menjadi matriks persegi dan segitiga atas RO =

Gambar 13. Bentuk matriks persegi dari data folder 10-vertex file 1.dat

Program pada GNU Octave

function stgb = sgitiga(disatukan) [M, N]=size(disatukan); while M < N disatukan(N,:)=0; M=M+1; end while M > N disatukan(:,M)=0; N=N+1; end stgb=tril(disatukan + disatukan'); end

g) Membuat program untuk merubah matriks RO menjadi matriks tetangga Perubahan ini dilakukan agar entri entri pada matriks 𝑅𝑂𝑖𝑗 = 𝑅𝑂𝑗𝑖 dengan

33

Gambar 14. Matriks Tetangga data 1 pada folder 10-vertex Program pada GNU Octave

function Y =matrikstetangga(RO) [M N]=size(RO); Y=full(RO); for r=1:M for j=1:N Y(r,j)=Y(j,r); end end end

h) Membuat program Algoritma Prim.

Program ini berjalan dengan membuat matriks kosong (T) berukuran M x N sesuai dengan ukuran yang dibentuk dari matriks tetangga dan v1 sebagai v pada Algoritma Prim. Matriks T berfungsi sebagai matrik yang menerima entri-entri yang telah diproses, yang nantinya akan menjadi matriks MST. v1 menginisialkan setiap kolom pada matriks, jika v1 atau titik awal tidak diberi nilai maka akan otomatis bernilai 1. Artinya Algoritma Prim yang di jalankan dimulai dari kolom 1 sebagai titik awalnya.

34

Gambar 15. Hasil nilai T dan V Algoritma Prim

Program pada GNU Octave

function [T V1]=MSTjadi(DG) V1 = [1]; V2 = 2:length(DG); T = zeros(size(DG)); od = max(max(DG)) ; while (~isempty(V2)) min = od; for i=1:length(V1) for j=1:length(V2) if (DG(V2(j),V1(i))>0 && DG(V2(j),V1(i))<min) min = DG(V2(j),V1(i)); u = V1(i); v = V2(j); end end end T(v,u) = min; V1 = [V1 v]; V2(V2==v)=[]; end end

i) Membuat program DCMST(Degree Constrained Minimum Spanning Tree) dengan algoritma Modified Prim.

Pada tahap ini sama saja dengan program MST. Namun penulis memasukkan perlakuan atau kendala bahwa setiap titik hanya boleh terhubung paling banyak 3 titik (degree ≤ 3).

35

j) Membuat program MPDCMST (Multi Period Degree Constrained Minimum Spanning Tree) dengan Algoritma Modified Prim

Pada Tahap ini, penyelesaian MST dilakukan dengan memberikan kendala batasan degree ≤ 3 dan membagi proses instalasi menjadi 3 tahap. Contoh :

Gambar 16. Contoh graf dengan 10 titik

Pada permasalahan MPDCMST tersebut diberikan degree ≤ 3 dan tahap sebanyak 3 kali. v1 dianggap sebagai titik sumber. |HVTk| adalah himpunan titik-titik yang harus di-install pada tahap ke k atau sebelumnya. |HVTk| diinisiasi sebagai berikut :

 Tahap 1 : titik v2 dan v4.  Tahap 2 : titik v5.  Tahap 3 : titik v10.

Tahap 1

Pada tahap ini titik yang wajib di instal adalah v2 dan v4. Sesuai dengan Algoritma Prim dengan DCMST, diperoleh titik terdekat dari sumber yaitu v2, v3 dan v5. Diperiksa ternyata pada tahap 1, |HVTk| = v2 dan v4 ini berarti

36

titik v4 belum diinstall, maka v5 diganti dengan v4. Sehingga diperoleh graf sebagai berikut :

Gambar 17. Graf hasil MPDCMST tahap 1

Tahap 2

Pada tahap ini |HVTk| = v5. Dilakukan pengecekan kembali dengan menggunakan Algoritma Prim dan DCMST. Diperoleh titik yang diinstall adalah v2, v3, v4, v6, v5, dan v7. Dapat dilihat bahwa v5 telah diinstall pada tahap ini, maka tahap ini selesai dan di peroleh graf sebagai berikut :

37

Tahap 3

Pada tahap ini |HVTk| = v10. Dilakukan pemilihan sisi terdekat menggunakan Algoritma Prim dan DCMST sehingga di peroleh titik yang telah diinstall yaitu v2, v3, v4, v6, v5, v7, v10, v8, v9. Dapat dilihat bahwa vertex v10 telah diinstall pada tahap ini. Maka tahap ini selesai dan diperoleh graf sebagai berikut :

Gambar 19. Graf hasil tahap 3

Karena seluruh vertex telah terinstall maka proses ini selesai.

k) Mengimplementasi dengan data yang telah dibangkitkan

V. KESIMPULAN

Berdasarkan penelitian yang telah dilakukan didapat kesimpulan sebagai berikut: 1. Nilai optimal MST merupakan lower bound dari DCMST dan nilai optimal

DCMST merupakan lower bound untuk MDCMST.

2. Hasil rata-rata bobot disetiap vertex yang diuji dengan Algoritma Modified Prim lebih tinggi dari hasil Algoritma Prim. Hal ini terjadi karena pada Algoritma Modified Prim terdapat kendala yang mempengaruhi besar bobot.

3. Pada permasalahan MPDCMST, waktu penyelesaian Algoritma Modified Prim terbaik diperoleh menggunakan Algoritma MPDCMST_awal.

4. Pada permasalahan MPDCMST, solusi Algoritma Modified Prim terbaik diperoleh menggunakan Algoritma MPDCMST_kick.

5. Dalam penyelesaian permasalahan MPDCMST dengan GNU Octave, solusi hasil dan waktu penyelesaian Algoritma Modified Prim yang terbaik diperoleh menggunakan Algoritma MPDCMST_akhir.

1

Dokumen terkait