5.2.2 Implementasi Kelas Graph
Dalam sistem ini, seluruh data yang diolah akan dibentuk menjadi sebuah
graph
. Setiap
graph
memiliki atribut berupa double[ ][ ] edge, int size = 0, Vertex[ ] vertex dan Block[ ] block. Implementasi struktur data
graph
dapat dilihat pada listing program di bawah ini.
Gambar 5.26 Listing Programlas Gra
public Graphint a { edge = new double[a][a];
vertex = new Vertex[a]; size = 0;
for int i = 0; i a; i++ { for int j = 0; j a; j++ {
edge[i][j] = -1; edge[j][i] = -1;
} edge[i][i] = 0;
} }
public int getJumlah_tetangga { return jumlah_tetangga;
} public void setJumlah_tetanggaint jumlah_tetangga {
this.jumlah_tetangga = jumlah_tetangga; }
public boolean isUnmarked { return unmarked;
} public void setUnmarkedboolean unmarked {
this.unmarked = unmarked; }
public boolean isNon_
outlier
{ return non_
outlier
; }
public void setNon_
outlier
boolean non_
outlier
{ this.non_
outlier
= non_
outlier
; }}
Method
insertVertex digunakan untuk menambahkan sebuah data sebagai vertex. sebuah vertex memiliki label dan nilai dalam bentuk list bertipe double.
.27 Listing Program Kelas Graph method insertVertex
Method
insertBlock digunakan untuk menambahkan beberapa vertex ke dalam sebuah blok tertentu. Setiap blok memiliki nomor urut.
ng Program Kelas Graph method insertBlock
Method
insertEdge digunakan untuk memasukkan komponen nilai setiap vertex ke dalam matriks
graph
.
Gambar 5.29 Listing Program Kelas Graph method insertEdge
Method
euclidean digunakan untuk menghitung jarak antara dua vertex menggunakan rumus
euclidean distance
.
Method
ini lalu mengembalikan nilai
jarak tersebut dengan format double.
public void insertVertexString label, ListDouble nilai { vertex[size++] = new Vertexlabel, nilai;
}
public void insertBlockint no_urut, ListInteger daftar_vertex { block[no_urut] = new Blockno_urut, daftar_vertex;
}
public void insertEdgeint i, int j, double nilai { edge[i][j] = edge[j][i] = nilai;
}
public double euclideanint a, int b { ListDouble data1 = new ArrayListDouble;
ListDouble data2 = new ArrayListDouble; data1 = vertex[a].getNilai;
data2 = vertex[b].getNilai; double total = 0;
for int i = 0; i data1.size; i++ { total = total + Math.powdata1.geti - data2.geti, 2.0;
} return Math.sqrttotal;
}
5.2.3 Implementasi Kelas Block