KOMPRESI HUFFMAN, LZW, DAN DMC PADA BERBAGAI TIPE FILE
Mokhamad Adi Pn¹, Fazmah Arief Yulianto², Endro Ariyanto³
¹Teknik Informatika, Fakultas Teknik Informatika, Universitas Telkom
Abstrak
Kompresi yaitu proses pengubahan sekumpulan data menjadi suatu bentuk kode untuk menghemat kebutuhan tempat penyimpanan dan waktu untuk transmisi data. Masalah yang paling mendasar dalam dunia kompresi yaitu tidak ada satu metode kompresi pun yang efektif untuk semua tipe file. Banyak metode yang digunakan untuk melakukan teknik kompresi ini.
Diantaranya adalah Huffman, Lz77 dan variannya (Lz78, LZW, Gzip), Dynamic Markov
Compression (DMC), Block-Sorting Loseless, Run-Length, Shannon Fano, Burrows-Wheeler Block Shorting, dan Half Byte. Dalam Tugas Akhir ini, diimplementasikan tiga buah metode kompresi, yaitu algoritma Huffman, LZW, dan DMC, yang masing-masing mewakili sebuah teknik
pengkodean. Dimana Huffman mewakili metode symbolwise, LZW mewakili metode dictionary, dan DMC mewakili metode predictive. Ketiga metode ini diujikan untuk mengkompresi berbagai tipe dan ukuran file yang berbeda, Lalu dilakukan analisis statistik untuk membandingkan kinerja setiap metode berdasarkan dua faktor, yaitu rasio/ perbandingan ukuran file hasil
kompresi terhadap file asli dan kecepatan kompresinya, sehingga kita bisa menemukan algoritma yang optimal untuk tipe file tertentu. Dan setelah melakukan testing terhadap file uji kesimpulan yang didapat adalah bahwa secara kesuluruhan algoritma DMC merupakan algoritma yang terbaik, kemudian disusul oleh Huffman dan terakhir LZW.
Kata Kunci : Kompresi data, Algoritma Huffman, Algoritma LZW, Algoritma DMC
Abstract
Compression is a process of dividing a group of data into a code form to economize repository requirement and time for data transmission. The basic problem for compression environment is we can’t find the most optimal method of compression for various file type. Many used method to conduct this compression technique, such as Huffman, Lz77 and its variant (Lz78, LZW, Gzip), Dynamic Markov Compression (DMC), Block-Sorting Loseless, Run-Length, Shannon Fano, Burrows-Wheeler Block Shorting, and Half Byte. In this final project, implemented three form of compression method, that is Huffman, LZW, and DMC alghorithm which is represent one code of compression technique. Where Huffman represent simbolwise method, LZW represent dictionary method, and DMC represent predictive method. This third method is tested for compress a various type and size of file, then conducted a statistical analisys to compare the performance of each method pursuant to two factor, that is ratio or comparison size of file of compression result to original file and the compression speed, so we can find the optimal algorithm for the specific file type. And after several test I’ve got a conclusion that the DMC algorithm had the best perpormance for compression rasio, the second one is Huffman and the third one is LZW.
Keywords : Data Compression, Huffman Alghorithm, LZW Alghorithm, DMC Algorithm
PENDAHULUAN
1.1. Latar belakang
Kompresi data merupakan proses pengubahan sekumpulan data menjadi suatu bentuk kode untuk menghemat kebutuhan space data dan waktu untuk melakukan transmisi data.
Berdasarkan tipe peta kode yang digunakan untuk mengubah pesan awal (isi file input) menjadi sekumpulan codeword, metode kompresi dibagi menjadi dua bagian, yaitu:
1. Metode statik: menggunakan peta kode yang selalu sama. Metode ini membutuhkan dua fase (two pass), fase pertama untuk menghitung probabilitas kemunculan tiap simbol karakter dan menentukan peta kodenya. Dan fase kedua untuk mengubah pesan menjadi kumpulan kode yang akan ditransmisikan. Contoh: Algoritma Huffman statik.
2. Metode dinamik (adaptif): Menggunakan peta kode yang dapat berubah dari waktu ke waktu. Metode ini disebut adaptif karena peta kode mampu beradaptasi terhadap perubahan karakteristik isi file selama proses kompresi berlangsung. Metode ini bersifat one pass, karena hanya diperlukan satu kali pembacaan terhadap isi file. Contoh: Algoritma LZW.
3. Berdasarkan teknik pengkodean/ pengubahan simbol yang digunakan, metode kompresi dapat dibagi menjadi tiga kategori yaitu:
4. Metode Symbolwise: Menghitung peluang kemunculan dari tiap simbol dalam file input, lalu mengkodekan satu simbol dalam satu waktu, dimana simbol yang lebih sering muncul diberi kode lebih pendek dibandingkan simbol yang lebih jarang muncul, contoh: Algoritma Huffman.
5. Metode Dictionary: Menggantikan karakter/ fragmen dalam file input dengan indek lokasi dari karakter/fragmen tersebut dalam sebuah kamus (Dictionary), contoh: Algoritma LZW.
6. Metode Predictive: Menggunakan model finite-context atau finite-state untuk memprediksi distribusi probabilitas dari simbol-simbol selanjutnya,
Ada beberapa faktor yang sering menjadi pertimbangan dalam memilih suatu metode kompresi yang tepat, yaitu kecepatan kompresi, sumber daya yang dibutuhkan (memori, kecepatan PC), ukuran file hasil kompresi, besarnya redundansi, dan kompleksitas algoritma. Tidak ada metode kompresi yang paling efektif untuk semua jenis file. Dari beberapa faktor diatas diputuskan untuk mengambil parameter kecepatan kompresi, dan rasio kompresi.
Alasannya diambil dua parameter diatas adalah karena kebanyakan user dalam menggunakan aplikasi kompresi lebih menitikberatkan pada cepat atau tidaknya suatu algoritma kompresi dalam mengeksekusi suatu file dan baik atau tidaknya rasio kompresi yang dihasilkan.
1.2. Perumusan masalah
Berdasarkan latar belakang yang dikemukakan di atas, maka masalah yang akan diteliti adalah:
1. Bagaimana mentransformasi berbagai tipe file menjadi file hasil kompresi dengan menggunakan algoritma Huffman, LZW, dan DMC.
2. Bagaimana menentukan kehandalan ketiga algoritma diatas dibandingkan dengan tool kompresi yang sudah ada.
3. Bagaimana cara menentukan keoptimalan algoritma diatas pada file-file yang akan diujikan berdasarkan parameter kecepatan kompresi dan rasio kompresi.
1.3. Tujuan
Berdasarkan permasalahan di atas, tujuan tugas akhir ini adalah:
1. Membuat aplikasi kompresi data dengan menggunakan teknik huffman, LZW, dan DMC.
2. Menganalisis kinerja algoritma kompresi diatas pada berbagai tipe file berdasarkan parameter kecepatan kompresi dan rasio kompresi.
3. Menentukan algoritma yang optimal untuk file-file uji tertentu.
4. Menganalisis mengapa suatu algoritma optimal untuk suatu file uji tertentu.
1.4 Batasan Masalah
Batasan masalah pada tugas akhir ini adalah sebagai berikut:
1 Aplikasi yang dibangun akan melakukan proses kompresi data pada:
a) File teks (doc, txt).
b) File aplikasi (excell, acobat reader, power point).
c) File yang telah dikompresi sebelumnya dengan winrar.
d) File executable, dalam lingkungan window.
e) File Gambar: file bitmap.
f) File multi media (mpeg/mpg, mp3, avi).
1.5 Metodologi
Metodologi yang dilakukan dalam tugas akhir ini mencakup hal-hal sebagai berikut:
1. Mengumpulkan bahan-bahan referensi yang akan menunjang proses penelitian, seperti jurnal-jurnal tentang kompresi, Huffman, LZw, DMC dan semua yang berkaitan dengan kompresi. Selain dari jurnal-jurnal tersebut, penulis juga mengumpulkan bahan dari TA terdahulu yang membahas kompresi.
2. Studi literatur tentang kompresi, algoritma Huffman, LZW, dan DMC yang merupakan tahap pendalaman materi.
3. Identifikasi permasalahan yang akan muncul pada saat melakukan penelitian ini, seperti melakukan kompilasi terhadap algoritm-algoritma diatas dan kesulitan untuk menerapkan teori-teori yang ada dalam proses penelitian nantinya.
4. Menentukan delapan jenis file uji dengan ukuran yang bervariasi
5. Membuat rancangan sistem untuk melakukan proses kompresi dengan
6. Merancang program berdasarkan algoritma yang telah dibuat dan mengimplementasikannya kedalam bahasa pemrograman Visual C++.
7. Melakukan analisa hasil implementasi kompresi dengan ketiga algoritma diatas, untuk mengetahui kinerjanya.
8. Membuat kesimpulan dari hasil penelitian kompresi dengan ketiga algoritma di atas.
1.6 Sistematika Penulisan
Tugas Akhir ini akan disusun berdasarkan sistematika penulisan sebagai berikut:
BAB I : Pendahuluan
Menguraikan mengenai latar belakang dari sistem aplikasi yang akan dibangun, perumusan masalah yang akan dianalisa, tujuan dari pembuatan sistem ini, pembatasan dari masalah yang terjadi, menentukan metodologi pemecahan serta sistematika penulisan.
BAB II : Landasan Teori
Merupakan keseluruhan teori yang mendukung pembuatan pengembangan aplikasi ini antara lain meliputi teori-teori serta konsep dari Kompresi Huffman, LZW, dan DMC.
BAB III : Analisa Kebutuhan dan Perancangan Sistem
Berisi tentang hasil analisa terhadap seluruh sistem dan kebutuhan perangkat lunak. Juga membahas mengenai rancangan dari sistem, seperti rancangan interface, algoritma yang akan digunakan.
BAB IV : Implementasi dan Analisa Hasil Pengujian
Merupakan Implementasi dari Sistem Aplikasi yang akan dibuat seperti, proses kompresi data dengan parameter kecepatan kompresi dan rasio kompresi untuk membuktikan keandalan dari ketiga algoritma diatas.
BAB V : Kesimpulan dan Saran
Kesimpulan dari keseluruhan rangkaian pengerjaan dan penelitian pada Tugas Akhir yang dilakukan serta saran untuk perbaikan kedepannya.
KESIMPULAN DAN SARAN
5.1 Kesimpulan
Dari beberapa pengamatan yang dilakukan dapat ditarik kesimpulan berikut ini:
1. Tidak ada algoritma kompresi yang optimal untuk semua jenis file.
2. Secara kesuluruhan DMC merupakan algoritma kompresi yang terbaik, kemudian Huffman dan terakhir LZW.
3. Untuk kategori teks, source code, dan aplikasi data DMC memberikan hasil kompresi yang baik sekali.
4. Untuk file multimedia Huffman memberikan hasil yang terbaik, disusul oleh DMC kemudian terakhir LZW.
5. Berdasarkan kecepatan kompresi Huffman memberikan hasil terbaik, disusul lzw kemudian dmc
5.2 Saran
1. Mencari file uji yang benar-benar representative (file-file yang memiliki susunan bit yang variatif). Karena keoptimalan algoritma kompresi tidak hanya ditentukan oleh jenis ekstensi tetapi juga ditentukan oleh pola bit- bitnya, maksudnya tingkat ke homogenan atau ke heterogenan bit suatu file.
2. Melakukan penelitian tentang penggabungan dua algoritma atau lebih, misalnya Huffman digabung dengan DMC sehingga algoritma hasil penggabungannya memiliki kecepatan dan rasio yang sangat baik.
3. Analisis perbandingan juga meliputi besar memori yang digunakan dan kompleksitas algoritma.
DAFTAR PUSTAKA
1. Basu, D. (1991) Text compression using several Huffman trees. Proc.
Data Compression Conf., Snowbird, Utah. p. 452.
2. Compression Team, “The LZW Algorithm”, Data Compression Reference center, http://www. rasip. fer.
hr/research/compress/algorithms/funds/lz/LZW/. html, 1997, [17 juni 2006]
3. Cormack, G. V., Horspool, R. N., Data Compression Using Dynamic Markov Compression. : University of waterloo and University of Victoria, 1986.
4. Dipperstein, Michael. 1998. Lempel-Ziv-Welch (LZW) Encoding Discussion and Implementation.
5. Hendrawan. 1997. Dictionary Techniques: Institut Teknologi Bandung.
6. Muntina, Eddy Dharma. 2006. Image Processing. Disampaikan dalam mata kuliah Grafika dan Citra. Bandung: STTTelkom.
7. Nelson, Mark. 2001. The Data Compression Book.
8. Sayood, Khalid. 2004. Introduction to Data Compression.: Morgan Kaufmann Publisher.
9. Skupin, Andre. Desember 2003. Use Of Huffman Trees To Encode Verbal Street Direction. Buffalo: The University of New York.
10. The Free dictionary. 2005. Lempel-Ziv Welch Compression, http://computing-dictionary. thefreedictionary. com/Lempel- Ziv%20Welch%20compression, [20 juni 2006].
11. umar, Rusydi. November 2003. Unjuk Kerja Algoritma LZW Untuk Kompresi berkas Teks: Information, Vol. 1, No. 1.
12. Witten, I. H., Neal, R., and Cleary, J. G. (1987) Arithmetic Coding for Data Compression. Commun. ACM 30 (6), pp. 520-540.
13. Yonata, yossi. 2002. Pemampatan data Video untuk aplikasi Videophone dan Multimedia Over IP: PT. Elek Media Komputindo.