Membaca Hex Number dan Generate String Aplikasi Algoritma LCS

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