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