BAB III IMPLEMENTASI ALGORITMA LZSS

advertisement
BAB III
IMPLEMENTASI ALGORITMA LZSS
3.1 Program Implementasi LZSS
Program yang digunakan untuk mengevaluasi algoritma LZSS dibuat dalam
bahasa pemrograman Java. Program tersebut penulis ambil dari program implementasi
algoritma LZSS pada software library Allegro dan diubah ukuran buffernya sehingga
memiliki dictionary buffer sebesar 4096 byte dan look-ahead buffer sebesar 16 byte [7].
Source code program tersebut terdiri dari tiga bagian, yaitu LZSSinputstream.java,
LZSSoutputstream.java, dan Pack.java. Ketiga kelas ini memiliki fungsinya masingmasing. Kelas LZSSinputstream berfungsi ketika akan mengkodekan file input menjadi
token-token. Kelas LZSSoutputstream berfungsi untuk melakukan proses decoding file
terkompresi kembali ke bentuk file asli. Sedangkan kelas Pack merupakan main class
dari program implementasi LZSS yang dibuat. Total ukuran ketiga kelas tersebut hanya
sebesar 9 Kb. Source code program selengkapnya dapat dilihat pada bagian
LAMPIRAN.
Program yang digunakan masih merupakan core program yang dijalankan di
lingkungan DOS. Program tersebut belum memiliki GUI sendiri. Menurut penulis,
penggunaan GUI tersebut tidaklah signifikan untuk dipenuhi karena tidak terlalu
berhubungan dengan tujuan dari pembuatan Tugas Akhir ini.
3.2 Pemilihan Algoritma LZSS
Algoritma LZSS penulis pilih karena algoritma ini memiliki potensi yang cukup
besar dengan semakin banyaknya penggunaan ebook untuk menggantikan penggunaan
buku hardcopy. Seperti yang telah dijelaskan pada BAB II, bahwa algoritma LZSS
sangat cocok untuk kompresi teks yang frekuensi pengulangannya besar. Penulis
beranggapan bahwa ebook merupakan salah satu jenis file yang akan memberikan hasil
kompresi yang baik ketika dikompresikan dengan algoritma LZSS, karena besarnya file
33
ebook tersebut sehingga memberikan peluang terjadinya pengulangan yang lebih besar.
Dengan demikian, algoritma LZSS akan dapat digunakan untuk kompresi
file-file
ebook dengan baik.
Selain itu, algoritma LZSS juga sangat potensial karena merupakan
perkembangan dari algoritma LZ77 yang dipakai sebagai kompresi tahap satu oleh
program
kompresi
WinRAR.
Penulis
mengharapkan
algoritma
LZSS
dapat
menggantikan posisi algoritma LZ77 pada program WinRAR sehingga program tersebut
dapat melakukan kompresi dengan rasio yang lebih baik lagi.
Perlu diketahui bahwa algoritma LZSS yang diimplementasikan pada Tugas
Akhir ini memiliki ukuran dictionary buffer sebesar 4096 bytes, dan ukuran look-ahead
buffer sebesar 16 byte. Posisi match pada dictionary buffer akan dikodekan dengan 12
bit (212 = 4096), sedangkan panjang match maksimal yang dapat terjadi dikodekan
dengan 4 bit (24 = 16). Dengan demikian, maka jumlah total informasi yang akan
dikeluarkan token triplet adalah 16 bit (diluar flag).
3.3 Prosedur
Seperti yang telah dijelaskan sebelumnya bahwa implementasi algoritma LZSS
ini dilakukan dalam lingkungan DOS dan tanpa GUI. File yang akan dikompresi
diletakkan pada satu folder yang sama dengan folder tempat meletakkan kelas-kelas
java yang akan digunakan. Setelah itu, untuk mengeksekusi kelas tersebut digunakan
perintah:
java pack file_input file_output
Setelah mengeksekusi perintah tersebut, maka algoritma LZSS akan mulai
melakukan proses kompresi terhadap file masukkan yang ditunjuk dan diletakkan ke file
keluaran. Setelah proses selesai, akan ada informasi tentang besarnya file input (dalam
satuan karakter/byte), besarnya file output (dalam satuan karakter/byte), dan rasio
kompresi terhadap file masukkan tersebut. Ilustrasi selengkapnya dapat kita lihat pada
gambar 3.1.
34
Gambar 3.1. Ilustrasi proses kompresi di lingkungan DOS.
Proses decoding (dekompresi) dilakukan dengan menggunakan perintah:
java pack u file_input file_output
Ketika melakukan decoding file yang menjadi input merupakan file hasil
kompresi LZSS. Sedangkan file outputnya merupakan file asli yang identik dengan file
source pada proses kompresi. Lebih jelasnya dapat kita lihat pada gambar 3.2.
Gambar 3.2. Ilustrasi proses dekompresi di lingkungan DOS.
35
Download