43
3.3.3. Levenstein Code
Langkah-langkah kompresi dengan algoritma Levenstein Code, dapat dilihat pada gambar 3.19 di bawah ini.
Gambar 3.19. Diagram Kompresi Algoritma Levenstein Code Masukkan File
Teks
Pembacaan Scanning Isi File
Bentuk Peta Kode Karakter dan Frekuensi Kemunculan
Tiap Karakter
Bentuk Tabel Kode Levenstein
Ganti Karakter Pada File Sesuai dengan Tabel Kode
Simpan Hasil ke File Output
Generate Kode Levenstein ke ASCII
Timer Stop Timer Start
Sort Z-A
Rasio Kompresi Space Saving
Kecepatan Kompresi
Universitas Sumatera Utara
44
Langkah pertama dalam melakukan kompresi file adalah dengan memasukkan file teks dokumen.txt. Isi file dokumen.txt adalah SEKELOMPOK KAWANAN
GAJAH SEDANG MANDI DI KALI. Setelah file teks diterima maka Timer akan mulai melakukan pencatatan waktu yang diperlukan untuk melakukan proses
kompresi mulai awal hingga selesai. Langkah selanjutnya adalah dengan melakukan pembacaan isi file scanning.
Pada tahap ini akan dilakukan pembentukan karakter set yaitu karakter-karakter yang terdapat pada isi file. Setelah karakter set diperoleh maka frekuensi kemunculan untuk
tiap-tiap karakter akan dihitung. Berikut adalah hasil scanning terhadap file dokumen.txt :
Karakter set = {S, E, K, L, O, M, P, SPASI, A, W, N, G, J, H, D, I} Frekuensi Karakter =
S = 2
A = 8
E = 3
W = 1
K = 4
N = 4
L = 2
G = 2
O = 2
J = 1
M = 2
H = 1
P = 1
D = 3
SPASI = 6
I = 3
Setelah karakter set dan frekuensi kemunculan tiap karakter diketahui maka selanjutnya karakter set akan diurutkan berdasarkan frekuensi kemunculannya mulai
dari karakter dengan frekuensi kemunculan terbesar ke karakter dengan frekuensi kemunculan terkecil. Jika terdapat lebih dari satu karakter dengan frekuensi
kemunculan yang sama maka diurutkan berdasarkan abjad. Untuk hasil pengurutan karakter set dan frekuensi karakter dapat dilihat pada tabel 3.6 di bawah ini.
Universitas Sumatera Utara
45
Tabel 3.6. Hasil Pengurutan Karakter Set Kompresi Kode Levenstein No
Karakter Frekuensi Karakter
1 A
8 2
SPASI 6
3 K
4 4
N 4
5 D
3 6
E 3
7 I
3 8
G 2
9 L
2 10
M 2
11 O
2 12
S 2
13 H
1 14
J 1
15 P
1 16
W 1
Langkah selanjutnya adalah dengan membentuk tabel kode Levenstein. Untuk kode-kode yang terbentuk pada tabel kode Levenstein dapat dilihat pada tabel 2.5.
Setelah itu karakter-karakter yang terdapat pada file dokumen yang akan dikompresi diganti dengan kode yang terdapat pada tabel kode Levenstein. Setelah diganti, hitung
jumlah bit untuk tiap karakter. Untuk hasil pergantian karakter pada file dokumen dengan kode Levenstein dapat dilihat pada tabel 3.7 di bawah ini:
Universitas Sumatera Utara
46
Tabel 3.7. Penggantian Karakter Dengan Kode Levenstein No
Karakter Frekuensi
Karakter Kode
Levenstein Bit
Frekuensi x Bit
1 A
8 1
8 2
SPASI 6
10 2
12 3
K 4
1100 4
16 4
N 4
1101 4
16 5
D 3
1110000 7
21 6
E 3
1110001 7
21 7
I 3
1110010 7
21 8
G 2
1110011 7
14 9
L 2
11101000 8
16 10
M 2
11101001 8
16 11
O 2
11101010 8
16 12
S 2
11101011 8
16 13
H 1
11101100 8
8 14
J 1
11101101 8
8 15
P 1
11101110 8
8 16
W 1
11101111 8
8 Total Char
45 Total Bit
225
Setelah diketahui kode untuk masing-masing karakter maka akan diperoleh sebuah string bit untuk dokumen.txt dengan isi dokumen adalah SEKELOMPOK
KAWANAN GAJAH SEDANG MANDI DI KALI seperti yang terlihat pada gambar 3.20 di bawah ini:
Gambar 3.20. String Bit Kode Levenstein Pada dokumen.txt 11101011111000111001110001111010001110101011101
00111101110111010101100101100011101111011010110 11011100110111011010111011001011101011111000111
10000011011110011101110100101101111000011100101 0111000011100101011000111010001110010
Universitas Sumatera Utara
47
Selanjutnya adalah melakukan generate string bit kode Levenstein pada dokumen.txt menjadi kode ASCII. Namun sebelum melakukan generate dilakukan
pemeriksaan terhadap panjang string bit dokumen.txt terlebih dahulu. Berikut adalah langkah-langkah dalam melakukan pemeriksaan terhadap panjang string bit:
1. Jika sisa bagi panjang string bit terhadap 8 adalah 0 maka tambahkan
00000001. Nyatakan dengan Bit Akhir. 2.
Jika sisa bagi panjang string bit terhadap 8 adalah n 1, 2, 3, 4, 5, 6, 7 maka tambahkan 0 sebanyak 7
– n +”1” di akhir string bit. Nyatakan dengan L. Lalu tambahkan bilangan biner dari 9 - n. Nyatakan dengan
Bit Akhir. Langkah-langkah pemeriksaan string bit dapat dilihat pada gambar 3.21 dan
gambar 3.22 di bawah ini:
Gambar 3.12. Pemeriksaan Panjang String Bit Kode Levenstein
Gambar 3.13. Hasil Penambahan Pada String Bit Kode Levenstein 11101011111000111001110001111010001110101011101
00111101110111010101100101100011101111011010110 11011100110111011010111011001011101011111000111
10000011011110011101110100101101111000011100101 0111000011100101011000111010001110010
Jumlah Total 225 bit N = MOD 225,8 = 1
L = 7 – 1 + “1” = 0000001
Bit Akhir = 9 – n = 8 00001000
11101011111000111001110001111010001110101011101 00111101110111010101100101100011101111011010110
11011100110111011010111011001011101011111000111 10000011011110011101110100101101111000011100101
01110000111001010110001110100011100100000001000 01000
Universitas Sumatera Utara
48
Hasil generate kode Levenstein menjadi kode ASCII dapat dilihat pada gambar 3.23 di bawah ini:
Gambar 3.23. Hasil Generate String Bit Kode Levenstein Ke ASCII
Hasil generate pada gambar 3.23 akan disimpan pada file output lalu Timer akan berhenti melakukan pencatatan waktu. Rasio kompresi dan space saving dari
proses kompresi yang ditandai dengan dimulainya perhitungan waktu hingga diberhentikannya waktu adalah sebagai berikut:
Input Stream = 45 x 8 = 360 Output Stream = 225
� � � � � =
x =
. ��� ��� � =
− . = .
11101011 11100011 10011100 01111010 00111010 10111010 01111011 10111010 10110010 11000111
01111011 01011011 01110011 01110110 10111011 00101110 10111110 00111100 00011011 11001110
11101001 01101111 00001110 01010111 00001110 01010110 00111010 00111001 00000001 00001000
00000000
Universitas Sumatera Utara
49
Langkah-langkah dekompresi dengan algoritma Levenstein Code, dapat dilihat pada gambar 3.24 di bawah ini.
Gambar 3.24. Diagram Dekompresi Algoritma Levenstein Code
Langkah pertama dalam melakukan dekompresi file adalah dengan memasukkan file hasil kompresi. Saat file dimasukkan Timer akan mulai melakukan
pencatatan waktu yang dilanjutkan dengan melakukan generate terhadap isi file ke binary. Hasil generata isi file menjadi binary dapat dilihat pada gambar 3.25 di bawah
ini: Masukkan File
Teks
Generate Isi File Ke Binary
Ganti String Bit Sesuai Dengan Tabel Kode
Levenstein
Simpan Hasil ke File Output
Timer Stop Timer Start
Kembalikan Ke String Bit Semula
Universitas Sumatera Utara
50
Gambar 3.25. Hasil Generate ASCII Ke Binary Kode Levenstein Selanjutnya adalah dengan mengembalikan binary menjadi string bit semula.
Untuk mengembalikan binary menjadi string bit semula dapat dilakukan melalui langkah-langkah berikut ini:
1. Lakukan pembacaan pada 8 bit terakhir, hasil pembacaan berupa bilangan
desimal. Nyatakan hasil pembacaan dengan n. 2.
Hilangkan bit pada bagian akhir sebanyak 7 + n. Hasil pengembalian binary menjadi string bit semula dapat dilihat pada
gambar 3.26 di bawah ini:
Gambar 3.26. Pengembalian Binary Ke String Bit Semula Kode Levenstein 11101011111000111001110001111010001110101011101
00111101110111010101100101100011101111011010110 11011100110111011010111011001011101011111000111
10000011011110011101110100101101111000011100101 01110000111001010110001110100011100100000001000
01000
11101011111000111001110001111010001110101011101001111 01110111010101100101100011101111011010110110111001101
11011010111011001011101011111000111100000110111100111 01110100101101111000011100101011100001110010101100011
1010001110010 000000100001000
desimal n = 8 7 + n 7 + 8 = 15
11101011111000111001110001111010001110101011101 00111101110111010101100101100011101111011010110
11011100110111011010111011001011101011111000111 10000011011110011101110100101101111000011100101
0111000011100101011000111010001110010
Universitas Sumatera Utara
51
Setelah diperoleh string bit seperti semula, langkah selanjutnya adalah dengan menggantikan kode pada string bit berdasarkan Tabel 3.7 agar diperoleh isi dokumen
seperti sebelum mengalami kompresi. Berikut adalah langkah-langkah untuk mengganti string bit berdasarkan tabel kode Levenstein:
1. Lakukan perhitungan terhadap jumlah angka “1” sampai “0” ketemu.
Nyatakan angka “1” dengan C. 2.
Jika hasil perhitungannya adalah C=0, makanya nilainya adalah “0”. Lalu berhenti dan gantikan kode bit dengan huruf pada tabel 3.7. Jika tidak
lanjutkan ke langkah ketiga. 3.
Jika jumlah C=1 ambil bit sebanyak 2 dari posisi awal pembacaan. 4.
Jika jumlah C=2 ambil bit sebanyak 4 dari posisi awal pembacaan. 5.
Jika jumlah C=3 dan bit di depan “0” yang dijumpai adalah “0” ambil bit sebanyak 7 dari posisi awal pembacaan.
6. Jika jumlah C=3 dan bit di depan “0” yang dijumpai adalah “1” ambil bit
sebanyak 8 dari posisi awal pembacaan. 7.
Selain itu ambil bit sebanyak 12 dari posisi awal pembacaan. Lalu gantikan dengan huruf berdasarkan tabel 3.7.
Hasil penggantian string bit berdasarkan tabel 3.7 atau pun hasil dekompresi dengan kode Levenstein dapat dilihat pada gambar 3.27 di bawah ini:
Gambar 3.27. Hasil Dekompresi Kode Levenstein
11101011111000111001110001111010001110101011101 00111101110111010101100101100011101111011010110
11011100110111011010111011001011101011111000111 10000011011110011101110100101101111000011100101
0111000011100101011000111010001110010
SEKELOMPOK KAWANAN GAJAH SEDANG MANDI DI KALI
Universitas Sumatera Utara
52
Hasil dekompresi pada gambar 3.27 akan disimpan pada file output lalu Timer akan berhenti melakukan pencatatan waktu. Hasil pencatatan waktu oleh Timer akan
dijadikan sebagai pembanding kecepatan dekompresi.
3.4. Alat Penelitian