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_outlierboolean 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