pembaca yang sesuai dengan tipe file tersebut sehingga kita dapat membaca isi potongan file fragment tersebut. Skema fase validasi dapat dilihat pada Gambar 3.3.
Gambar 3.3. Arsitektur umum fase validasi
3.2 Membaca Hex Number dan Generate String
Pada tahap ini, program akan membaca hex number yang membentuk input file, kemudian mengubahnya ke dalam string. Pseudocode pada proses ini meliputi:
int count char temp
check hex number from file with StringBuffer
StringBuffer result = new StringBuffer“ “ while true{
if count = file length break
else read hex number
store hex number at temp count++
result.appendtemp return result.toString
Program akan membaca keseluruhan hex number, kemudian setelah pembacaan selesai, dengan fungsi toString akan mengubah hex number tersebut menjadi string
untuk kemudian dilakukan perhitungan LCS.
3.3 Aplikasi Algoritma LCS
Pada tahap ini, program akan melakukan perhitungan Longest Common Subsequences untuk mendapatkan sequence terpanjang yang akan digunakan pada fase testing dan
persentase kemiripan antara file fragment dengan file utuh pdf, rtf, dan doc. Langkah- langkah aplikasi algoritma LCS dengan input BDCABA dan ABCBDAB, adalah
sebagai berikut: 1
Menghitung panjang string kedua input. Panjang karakter BDCABA = 6 karakter.
Panjang karakter ABCBDAB = 7 karakter. 2
Menyediakan tabel perbandingan untuk perhitungan LCS sesuai dengan panjang string input dengan tambahan 1 kolom untuk diisi dengan nilai 0.
Tabel perbandingan dapat dilihat pada tabel 3.1.
Tabel 3.1. Tabel Perbandingan LCS
B D
C A
B A
A B
C B
D A
B
3 Melakukan perbandingan antar string. Rumus apabila string cocok atau tidak
cocok, dapat dilihat pada tabel 3.2 dan tabel 3.3.
Tabel 3.2. Tabel Rumus Apabila String Cocok
x a
b if x = y
y c
a + 1 Apabila string x dan y cocok, maka program akan mengisi tabel tersebut
dengan nilai a+1.
Tabel 3.3 Tabel Rumus Apabila String tidak Cocok
x a
c if x = y
y b
d d = nilai terbesar antara b dan c
Apabila string x dan y tidak cocok, maka program akan membandingkan nilai b dan c, apabila nilai berbobot sama, maka program akan langsung memasukkan nilai
tersebut. 4
Hasil perbandingan dapat dilihat pada tabel 3.4.
Tabel 3.4. Tabel Hasil Perbandingan LCS
B D
C A
B A
A 1
1 1
B 1
1 1
1 2
2 C
1 1
2 2
2 2
B 1
1 2
2 3
3 D
1 2
2 2
3 3
A 1
2 2
3 3
4 B
1 2
2 3
4 4
5 Nilai terbesar pada tabel hasil perbandingan dapat melambangkan panjang
LCS yang didapat, dalam hal ini adalah 4 karakter. Untuk mendapatkan 4 karakter tersebut, program akan melakukan backtrack.
6 Pada saat melakukan proses backtrack, program akan memulai dengan
meletakkan pointer pada kotak sudut kanan bawah. Proses backtrack akan berhenti apabila pointer mencapat nilai 0. Pointer akan melakukan proses
backtrack dengan langkah atas lalu ke kiri secara konsisten. Apabila pointer
melewati nilai yang berbeda, misalnya dari kotak dengan nilai 4 menuju kotak dengan nilai 3, program akan menyimpan string yang membentuk angka
tersebut, lalu menuju ke kotak dengan arah diagonal. Pseudocode pada proses ini meliputi:
Initialize a two-dimension-array ij Currently i equal to 8 and j equal to 7
While i and j not equal to 0 If Array[i][j] equal to Array[i-1][j-1]+1
lcs equal to char from Array[i][j] + lcs Array[i][j] go diagonal
If Array[i-1][j] more than or equal to Array[i][j-1]{
go up If Array[i][j] equal to Array[i][j-1]{
go left Return lcs
3.4 Perhitungan Rata-Rata Persentase untuk Mendapatkan Tipe File