1, Maret 2004
Intisari
Makalah ini membahas perbandingan kinerja tiga algoritma kompresi yang
masing-masing menggunakan teknik pengkodean yang berbeda, yaitu
algoritma Huffman, LZW (Lempel-Ziv-Welch), dan DMC (Dynamic Markov
Compression). Ketiga algoritma tersebut diimplementasikan ke dalam
sebuah perangkat lunak dan diujikan terhadap 12 golongan kasus uji, lalu
kinerjanya diukur berdasarkan rasio ukuran file hasil kompresi terhadap file
awal dan kecepatan kompresi. Disimpulkan bahwa dalam hal rasio hasil
kompresi, secara rata-rata DMC merupakan yang terbaik dan Huffman
merupakan yang terburuk, sedangkan dari sisi kecepatan kompresi, LZW
merupakan yang terbaik dan DMC merupakan yang terburuk. Terdapat
beberapa jenis file yang tidak tepat untuk dikompresi dengan metode tertentu
karena justru menghasilkan file hasil kompresi yang berukuran lebih besar.
Abstract
This paper presents performance comparison of three compression
algorithms, each of which uses different coding technique: Huffman, LZW
(Lempel-Ziv-Welch), and DMC (Dynamic Markov Compression). These three
algorithms are implemented into a computer program, tested upon 12 classes
of test case, and their performances are measured in terms of size ratio
between compressed file and initial file, and compression speed. It can be
concluded that in terms of compression ratio, in average DMC is the best
and Huffman is the worst, meanwhile in terms of compression speed, LZW is
the best and DMC is the worst. There are several file types that are not
suitable to be compressed by certain algorithm, because the compressed file
becomes bigger in size.
7
INTEGRAL, Vol. 9 No. 1, Maret 2004
15
INTEGRAL, Vol. 9 No. 1, Maret 2004
1. Pass pertama
Baca (scan) file input dari awal hingga akhir untuk menghitung frekuensi
kemunculan tiap karakter dalam file. n Å jumlah semua karakter dalam file input.
T Å daftar semua karakter dan nilai peluang kemunculannya dalam file input.
Tiap karakter menjadi node daun pada pohon Huffman.
2. Pass kedua
Ulangi sebanyak (n -1) kali :
a. Item m1 dan m2 Å dua subset dalam T dengan nilai peluang yang terkecil.
b. Gantikan m1 dan m2 dengan sebuah item {m1,m2} dalam T, dimana nilai peluang
dari item yang baru ini adalah penjumlahan dari nilai peluang m1 dan m2.
c. Buat node baru {m1, m2} sebagai father node dari node m1 dan m2 dalam pohon
Huffman.
3. T sekarang tinggal berisi satu item, dan item ini sekaligus menjadi node akar pohon
Huffman.
Panjang kode untuk suatu simbol adalah jumlah berapa kali simbol tersebut
bergabung dengan item lain dalam T.
Dengan menggunakan kode Huffman ini, Karena tiap kode Huffman yang
string “ABACCDA” direpresentasikan dihasilkan unik, maka proses dekompresi
menjadi rangkaian bit : 0 110 0 10 10 111 dapat dilakukan dengan mudah. Contoh:
0. Jadi, jumlah bit yang dibutuhkan saat membaca kode bit pertama dalam
hanya 13 bit. Dari Tabel 1 tampak bahwa rangkaian bit “011001010110”, yaitu bit
kode untuk sebuah simbol/karakter tidak “0”, dapat langsung disimpulkan bahwa
boleh menjadi awalan dari kode simbol kode bit “0” merupakan pemetaan dari
yang lain guna menghindari keraguan simbol “A”. Kemudian baca kode bit
(ambiguitas) dalam proses dekompresi selanjutnya, yaitu bit “1”. Tidak ada kode
atau decoding. Huffman “1”, lalu baca kode bit
selanjutnya, sehingga menjadi “11”.
9
INTEGRAL, Vol. 9 No. 1, Maret 2004
Tidak ada juga kode Huffman “11”, lalu ini melakukan kompresi dengan
baca lagi kode bit berikutnya, sehingga menggunakan dictionary, di mana
menjadi “110”. Rangkaian kode bit fragmen-fragmen teks digantikan dengan
“110” adalah pemetaan dari simbol “B”. indeks yang diperoleh dari sebuah
“kamus”. Prinsip sejenis juga digunakan
Metode Huffman yang diterapkan dalam dalam kode Braille, di mana kode-kode
penelitian ini adalah tipe statik, dimana khusus digunakan untuk
dilakukan dua kali pembacaan (two-pass) merepresentasikan kata-kata yang ada.
terhadap file yang akan dikompresi;
pertama untuk menghitung frekuensi Pendekatan ini bersifat adaptif dan
kemunculan karakter dalam pembentukan efektif karena banyak karakter dapat
pohon Huffman, dan kedua untuk dikodekan dengan mengacu pada string
mengkodekan simbol dalam kode yang telah muncul sebelumnya dalam
Huffman. teks. Prinsip kompresi tercapai jika
referensi dalam bentuk pointer dapat
2.2 Algoritma LZW disimpan dalam jumlah bit yang lebih
Algoritma LZW dikembangkan dari sedikit dibandingkan string aslinya.
metode kompresi yang dibuat oleh Ziv Algoritma kompresi LZW diberikan pada
dan Lempel pada tahun 1977. Algoritma Gambar 2.
Sebagai contoh, string “ABBABABAC” akan Kolom dictionary menyatakan string baru
dikompresi dengan LZW. Isi dictionary pada yang sudah ditambahkan ke dalam dictionary
awal proses diset dengan tiga karakter dasar dan nomor indeks untuk string tersebut ditulis
yang ada: “A”, “B”, dan “C”. Tahapan proses dalam kurung siku. Kolom output menyatakan
kompresi ditunjukkan pada Tabel 3. Kolom kode output yang dihasilkan oleh langkah
posisi menyatakan posisi sekarang dari stream kompresi. Hasil proses kompresi ditunjukkan
karakter dan kolom karakter menyatakan pada Gambar 3.
karakter yang terdapat pada posisi tersebut.
15
INTEGRAL, Vol. 9 No. 1, Maret 2004
Proses dekompresi pada LZW dilakukan dalam dictionary. Tahapan proses dekompresi
dengan prinsip yang sama seperti proses ini ditunjukkan pada Tabel 4.
kompresi. Algoritma diberikan pada Gambar
4. Pada awalnya, dictionary diinisialisasi Metode LZW yang diterapkan dalam
dengan semua karakter dasar yang ada. Lalu penelitian ini bertipe dinamik, dimana hanya
pada setiap langkah, kode dibaca satu per satu dilakukan satu kali pembacaan (one-pass)
dari stream kode, dikeluarkan string dari terhadap file yang akan dikompresi.
dictionary yang berkorespondensi dengan Pengkodean data dilakukan secara on the fly,
kode tersebut, dan ditambahkan string baru ke bersamaan dengan proses penambahan string
baru ke dalam dictionary.
11
INTEGRAL, Vol. 9 No. 1, Maret 2004
15
INTEGRAL, Vol. 9 No. 1, Maret 2004
Jika frekuensi transisi dari suatu state t ke state Jumlah transisi yang keluar dari t’ harus
sebelumnya, yaitu state u, sangat tinggi, maka mempunyai rasio yang sama (antara 0 dan
state t dapat di-cloning. Ambang batas nilai 1) dengan jumlah transisi yang keluar dari
cloning harus disetujui oleh encoder dan t.
decoder. State yang di-cloning diberi simbol t’ Jumlah transisi yang keluar dari t dan t’
(lihat Gambar 8). Aturan cloning adalah diatur supaya mempunyai nilai yang sama
sebagai berikut : dengan jumlah transisi yang masuk [2].
Semua transisi dari state u dikirim ke
state t’. Semua transisi dari state lain ke
state t tidak berubah.
0 0 0 0
A C D
A C D
1
1 1 0
1
1
B C’ E
B E
Metode DMC yang diterapkan dalam 1. Calgary Corpus, merupakan kasus uji
penelitian ini bertipe dinamik, dimana hanya benchmark yang berisi koleksi dari 14
dilakukan satu kali pembacaan terhadap file teks, yang sudah secara luas digunakan
input. Kalkulasi dilakukan secara on the fly untuk mengevaluasi metode kompresi.
(proses perhitungan probabilitas dilakukan Corpus ini dapat di-download di:
bersamaan dengan pengkodean data). ftp://ftp.cpsc.ucalgary.ca/pub/ projects/
text.compression.corpus.
3. Implementasi dan Pengujian 2. Canterbury Corpus, ditujukan untuk
Untuk menghasilkan pengukuran kinerja yang menggantikan Calgary Corpus yang telah
valid, ketiga algoritma di atas dikompilasi berumur 10 tahun lebih. Corpus ini dapat
menggunakan compiler bahasa pemrograman di-download di :
yang sama (C++ Builder 5.0) dengan setting http://corpus.canterbury.ac.nz/ftp/
optimasi yang sama. Implementasi dan large.zip.
pengujian perangkat lunak ini dilakukan dalam 3. File aplikasi (Excel, Acrobat Reader,
lingkungan perangkat keras sbb.: prosesor Flash, Corel Draw, PowerPoint, Font
Intel Pentium IV 1.5 GHz, memori 128MB Window, dan Help)
RAM, harddisk Maxtor 20 GB, dan 4. File yang telah dikompresi sebelumnya
motherboard Intel D850GB. Kecepatan 5. File object/file biner (file com, file sistem,
kompresi dari sebuah algoritma ditentukan dari file hasil kompilasi C, Pascal, dan Java,
ukuran file input dibagi dengan waktu file DLL)
komputasi yang dibutuhkan, dan ditulis dalam 6. File basis data (Access, DBase, Paradox,
satuan KByte/sec. MySQL)
7. File executable, baik dalam lingkungan
3.1 Kasus Uji DOS maupun Windows
Dalam penelitian ini, digunakan 12 golongan 8. File gambar: file jpg, file bitmap, file gif,
besar kasus uji yang dipandang cukup file png, file ani, dan file wmf.
memadai untuk mewakili sebagian besar tipe
file yang ada, yaitu:
13
INTEGRAL, Vol. 9 No. 1, Maret 2004
9. File multimedia (file asf, file mpeg/mpg, Hasil pengukuran statistik terhadap rasio hasil
file mp3, file mov, file midi, file avi, file kompresi dan kecepatan kompresi dari ketiga
wav) metode di atas pada semua kasus uji
10. File source code (pascal, html, c, cpp, dirangkum dalam bentuk box plot pada
java, prolog, css, vbs, js, xml, php, lisp) Gambar 9 dan 10. Grafik perbandingan rasio
11. File teks (file rtf, file doc, file inf, file txt, kompresi dan kecepatan kompresi dari ketiga
file ini – konfigurasi Windows) metode tersebut dalam masing-masing kasus
12. File pada sistem operasi Unix (berekstensi uji ditunjukkan secara lengkap dalam Gambar
1 – file help, file kernel, file program) 11 dan 12.
15
INTEGRAL, Vol. 9 No. 1, Maret 2004
100.3 104.4
96.8
92.9
80.1 77.8 77.9 79.9
75.7
67.3 68.3 71.7 72.7 71.4
63.8 60.2
59.1 55.7 56.3
48.5 48.1 53.4 48.4 46.9
43.9 44.5 45.0 41.5
35.4 33.4 35.4
26.0 28.3
25.8 24.0 22.1 21.7
20.7
UNIX Teks source code aplikasi executable data/object/sistem gambar database multimedia hasil kompresi Canterbury Corpus Rata-Rata
Calgary Corpus
Kategori
251,4 249,0 266,3 242,6 243,1 270,2 259,1 255,2 264,4 218,1
131,1 104,2
80,8
IX
le
us
an
ks
us
de
i
a
se
em
i
es
as
ba
i
ab
ed
ba
rp
rp
Te
uh
co
N
pr
lik
ist
m
ut
tim
Co
Co
U
ta
ur
m
ga
ce
t/s
ap
ec
da
ko
el
ul
ur
ry
ec
ex
es
ar
m
so
sil
bu
bj
K
lg
/o
ha
er
Ca
ta
nt
da
Ca
Kategori
Huffman (555,8 KByte/sec ± 55,8), dan [2] Witten, I.H, et al., “Managing Gigabytes”,
terakhir DMC (218,1 KByte/sec ± 69,4). Van Nostrand Reinhold, New York, 1994.
DMC mengorbankan kecepatan kompresi [3] Ben Zhao, et al., “Algorithm in the Real
untuk mendapatkan rasio hasil kompresi World - (Compression) Scribe Notes”,
yang baik. File yang berukuran sangat http://www-2.cs.cmu.edu/~guyb/real-
besar membutuhkan waktu yang sangat world/class-notes/all/, 1998, [17 Jan 2002]
lama bila dikompresi dengan DMC [4] Compression Team, “The LZW
(contoh: file multimedia dengan ukuran 59 Algorithm”, Data Compression Reference
MB membutuhkan waktu kompresi 12,3 Center,
menit). http://www.rasip.fer.hr/research/compress/
5. Kecepatan kompresi algoritma LZW algorithms/fund/lz/LZW.html, 1997, [17
secara signifikan berkurang pada file Jan 2002]
UNIX, file executable, file gambar, file [5] Ziviani, N., de Moura, E. S.,
multimedia, dan file hasil kompresi. “Compression: A Key for Next Generation
Kecepatan kompresi algoritma DMC Text Retrieval System”, Department of
berkurang pada file gambar dan file hasil Computer Science Univ. Federal de Minas
kompresi, bahkan untuk file multimedia Gerais, Brazil, 2000.
kecepatan kompresi berkurang lebih dari [6] University of Calgary, Calgary Corpus,
sepertiga kalinya dibandingkan kecepatan http://links.uwaterloo.ca/calgary.corpus.ht
kompresi rata-rata. Kecepatan kompresi ml, [26 Maret 2002]
algoritma Huffman hampir merata untuk [7] University of Canterbury, “The
semua kategori file. Canterbury Corpus”,
http://corpus.canterbury.ac.nz, [26 Feb
5. Daftar Pustaka 2002]
[1] Howe, D., “Free On-line Dictionary of [8] Cormack, G.V., Horspool, R.N., “Data
Computing”, http://www.foldoc.org/, Compression Using Dynamic Markov
1993. Compression”, University of Waterloo
and University of Victoria, 1986.
16