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