di kelas BarChart
4.5.6.5 Detail Algoritma Pada
Method
di Kelas Graph
Tabel 4.6 Tabel Kelas Graph Nama
method
Fungsi
method
Algoritma
method
insertVertex String,
ListDouble Membuat vertex
1. Membaca input method
berupa label dan list nilai
2. Menambah size vertex,
vertex[size++] lalu membuat vertex baru
dengan label dan nilai yang diinputkan lewat
parameter
insertBlock int, ListInteger
Membuat blok 1.
Membaca input method berupa no_urut dan list
daftar_vertex
2. Membuat blok baru
pada index ke- no_urut dan berisi vertex dalam
daftar_vertex yang diinputkan lewat
parameter
insertEdge int, int, double
Mengisi nilai
edge
1. Membaca nilai input
parameter yaitu i, j dan nilai
2. Mengisi edge[i][j] dan
edge[j][i] dengan nilai euclidean int, int
Menghitung nilai
euclidean distance
antara dua data 1.
Membaca nilai input parameter yaitu a dan b
2. Membuat list data1 dan
data2 3.
data1 diisi dengan vertex[a].getNilai, data2
diisi dengan vertex[b].getNilai
4. total = 0, i = 0
5. Selama i data1.size,
hitung total = total + Math.powdata1.geti -
data2.geti, 2.0
6. Method ini lalu
mengembalikan nilai NestedLoop
JTable, double, double
Melakukan proses deteksi
outlier
dengan nilai parameter M dan
D yang diinputkan pengguna
1. Menerima input tabel, m
dan d 2.
Membuat list nilaiAtribut untuk
menampung data nilai setiap
vertex
dan variabel label bertipe
String untuk menyimpan nama label dari setiap
vertex
3. Inisialisasi i = 0
4. Selama i jumbaris,
buat listAtribut baru lalu inisialisasi j = 0
5. Selama j jumKolom,
Jika j=0 maka label = model.getValueAti,
j.toString. Jika j= 0 maka
nilaiAtribut.addDouble. parseDoublemodel.get
ValueAti, j.toString
6. Menambahkan
vertex
baru dengan memanggil
method
insertVertexlabel, nilaiAtribut
7. Hitung jumlah blok
dengan perhitungan int hitung_blok = int
jumBaris jumKolom byte_element 2
availableMemory_JVM
8. Jika hitung_blok =1
maka jumlah_blok = 1, data_per_blok =
jumBaris, sisa = 0 Jika
jumBarishitung_blok = 0 maka jumlah_blok
= hitung_blok, data_per_blok =
jumBarisjumlah_blok, sisa =
jumBarisjumlah_blok Jika
jumBarishitung_blok == 0 maka jumlah_blok
= hitung_blok, data_per_blok =
jumBarisjumlah_blok, sisa = 0
9. Membuat list
daftar_vertex dan inisialisasi counter = 0
10. Inisialisasi i = 0
11. Selama i jumlah_blok
Jika i = jumlah_blok -1 sisa = 0 maka
data_per_blok = data_per_blok + sisa
Membuat daftar_vertex baru
Inisialisasi j = 0 Selama j
data_per_blok, tambahkan counter ke
list daftar_vertex kemudian counter++
Membuat blok baru dengan memanggil
method insertBlocki, daftar_vertex
12. Inisialisasi list
first_array = null dan list second_array = null
13. Inisialisasi i = 0
14. Selama i jumlah_blok
Jika block[selected_fristArra
y] belum pernah menjadi first_array
maka isi blok tersebut ditampung dalam
first_array Inisialisasi j = 0
15. Selama j jumlah_blok
Jika j = 0, maka size1 dan size2 = first_array
Jika j= 0, maka isi blok dari
block[selected_secondA rray] ditampung dalam
second_array, size1 = first_array.size dan
size2 = second_array.size
Inisialisasi counter_load_firstArray
= 0, k = counter_load_firstArray
16. Selama k size1, saat k
= size1, ke langkah 19 Jika
vertex[first_array.getk] .isUnmarked =
true
maka index1 = first_array.getk
Inisialisasi counter_load_secondArr
ay = 0, l = counter_load_secondArr
ay Selama l size2, saat l
= size2, ke langkah 18 Jika k = l || k == l
j 0, cek jika pertama =
true
maka index2 =
first_array.getl, jika pertama =
false
maka index2 =
second_array.getl Jika
edge[index1][index2] == -1 maka isi nilai
edge
dengan memanggil method
insertEdgeindex1, index2,
euclideanindex1, index2
17. Jika
edge[index1][index2] edge[index1][index2]
= d k = l || k == l j 0
Maka tambahkan jumlah
tetangga dari vertex[index1] dengan
cara vertex[index1].setJumla
h_tetanggavertex[index 1].getJumlah_tetangga
+ 1 Setelah menambahkan
cek apakah tetangga dari vertex[index1] tersebut
telah mencapai M+1, jika ya maka
vertex[index1].setNon_
o utlier
true dan vertex[index1].setUnma
rkedfalse, jika tidak maka
vertex[index1].setUnma rkedtrue
Kembali ke langkah 17
18. Jika k == size1 - 1,
artinya sebuah blok telah dicek seluruh
anggotanya maka pertama diberi nilai
false
sehingga blok tersebut tidak boleh dimasukkan
lagi ke dalam first_array.
Kembali ke langkah 16
19. Jika i == 0 j
jumlah_blok – 1 maka
selected_secondArray++ Jika i = 0 j 1
j = jumlah_blok – 1
Cek apakah selected_secondArray
== block.length - 1 j jumlah_blok
– 1, jika ya maka
selected_secondArray = 0, jika
selected_secondArray block.length
– 1 maka selected_secondArray++
Jika i = 0 j == 1 Cek apakah
selected_secondArray block.length - 1 j
jumlah_blok
– 1, jika ya maka
selected_secondArray++ , jika
selected_secondArray == block.length - 1
j jumlah_blok
– 1 maka
selected_secondArray = Kembali ke langkah 15
20. Pada tahap ini dilakukan
pergantian tempat antara first_array dan
second_array dengan cara :
block[selected_firstArra y].setFirstArraytrue
tukar = selected_firstArray
selected_firstArray = selected_secondArray
selected_secondArray = tukar
Kembali ke langkah 14
display
Outlier
Jtable, double, double,
String, String Menampilkan hasil
deteksi
outlier
1. t1 = System.nanoTime
2. Memanggil method
NestedLoopt,m,d 3.
t2 = System.nanoTime
4. Inisialisasi i = 0
5. Selama i
vertex.length, jika vertex[i].isNon
Outlier
= false maka tambahkan
jumlah
outlier
dengan 1 lalu tampilkan
vertex[i].getLabel 6.
Inisialisasi j = 0 7.
Selama j t.getColumnCount
8. Inisialisasi k = 0
9. Selama k
t.getRowCount 10.
Jika vertex[i].getLabel==t.
getValueAtk, 0 maka data pada baris-k
tersebut akan ditampilkan
11. Menampilkan jumlah
data, jumlah
outlier
, dan lama deteksi
outlier
= t2 - t1
java.lang.Math.pow10, -9
4.5.6.6 Detail Algoritma Pada