Anda di halaman 1dari 10

Kompresi Data dengan Algoritma Huffman dan Algoritma

Lainnya
Hary Fernando
Nim 13505113
Email: if15113@students.if.itb.ac.id

Program studi Teknik Informatika


Sekolah Teknik elektro dan informatika
Insttitut teknologi bandung
Jln ganesa 10 bandung 40132

Abstrak

Makalah ini mengemukakan tentang cara kompresi data dan implementasinya.


Kompresi data tersebut antara lain menggunakan kode/algoritma Huffman dan algoritma-algoritma sejenis
yang telah menjelaskan dan membantu kita dalam menangani file-file besar. Termasuk format format file
audio sepert mp3, format gambar seperti jpg dan contoh-contoh sederhana serta penerapannya

Diakhir makalah teradapat aplikasi-aplikasi yang bermula dari algoritma-algorima tersebut yang sampai
sekarang masih dikembangkan softwarenya hingga menjadi lebih baik

Kata kunci: kompresi data, algoritma Huffman, Algoritma Lempel-Ziv-Welch, Shannon-Fano Algorithm,
Lossy Compression, Loseless

1. Pendahuluan kumpulan kode yang akan


ditransmisikan.
Kompresi ialah proses pengubahan ekumpulan Contoh: algoritma Huffman statik.
data menjadi suatu bentuk kode untuk
menghemat kebutuhan tempat penyimpanan dan • Metode dinamik (adaptif) :
waktu untuk transmisi data [1]. Saat ini terdapat menggunakan peta kode yang dapat
berbagai tipe algoritma kompresi [2,3], antara berubah dari waktu ke waktu. Metode
lain: Huffman, LIFO, LZHUF,LZ77 dan ini disebut adaptif karena peta kode
variannya (LZ78, LZW, GZIP), Dynamic mampu beradaptasi terhadap perubahan
Markov Compression (DMC), Block-Sorting karakteristik isi file selama proses
Lossless, Run-Length, Shannon-Fano, kompresi berlangsung. Metode ini
Arithmetic, PPM (Prediction by Partial bersifat 1-kali pembacaan terhadap isi
Matching), Burrows-Wheeler Block Sorting, dan file.
Half Byte. Contoh: algoritma LZW dan DMC

Berdasarkan tipe peta kode yang digunakan Kompresi data


untuk mengubah pesan awal (isi file input) • Kompresi berarti memampatkan
menjadi sekumpulan codeword, metode /mengecilkan ukuran
kompresi terbagi menjadi dua kelompok, yaitu :
• Kompresi data adalah proses
• Metode static: menggunakan peta kode mengkodekan informasi menggunakan
yang selalu sama. Metode ini bit atau information-bearing unit yang
membutuhkan dua fase (two-pass): fase lain yang lebih rendah daripada
pertama untuk menghitung probabilitas representasi data yang tidak terkodekan
kemunculan tiap simbol/karakter dan dengan suatu sistem enkoding tertentu
menentukan peta kodenya, dan fase
kedua untuk mengubah pesan menjadi • Contoh kompresi sederhana yang biasa
kita lakukan misalnya adalah
menyingkat kata-kata yang sering horisontal, vertikal, dan field
digunakan tapi sudah memiliki atribut sebesar 8-bit
konvensi umum. Misalnya: kata “yang” 3. sumbu Horizontal
dikompres menjadi kata “yg”. direpresentasikan dengan log2
640 = 10 bits
• Pengiriman data hasil kompresi dapat
dilakukan jika pihak pengirim/yang 4. sumbu Vertical
melakukan kompresi dan pihak direpresentasikan dengan log2
penerima memiliki aturan yang sama 480 = 9 bits
dalam hal kompresi data.
5. Bits per line = 9bits + 10bits +
• Pihak pengirim harus menggunakan 8bits = 27bits
algoritma kompresi data yang sudah
baku dan pihak penerima juga 6. Storage required per screen
menggunakan teknik dekompresi data page = 500 × (27 / 8) = =
yang sama dengan pengirim sehingga 1687,5 byte = 1,65 Kbyte
data yang diterima dapat dibaca/di-
dekode kembali dengan benar
• Color Display
• Kompresi data menjadi sangat penting 1. Jenis : 256, 4.096, 16.384,
karena memperkecil kebutuhan 65.536, 16.777.216 warna
penyimpanan data, mempercepat
pengiriman data, memperkecil 2. Masing-masing warna pixel
kebutuhan bandwidth memakan tempat 1 byte

• Teknik kompresi bisa dilakukan 3. Misal 640 x 480 x 256 warna x


terhadap data teks/biner, gambar (JPEG, 1 byte = 307.200 byte = 300
PNG, TIFF), audio (MP3, AAC, RMA, Kbyte
WMA), dan video (MPEG, H261,
H263). Kebutuhan tempat penyimpanan untuk media
kontinyu untuk 1 detik Playback:
Contoh kebutuhan data selama 1 detik pada layar
resolusi 640 x 480: • Sinyal audio tidak terkompres dengan
• Data text kualitas suara telepon dengan sample 8
1. 1 karakter = 2 bytes (termasuk kHz dan dikuantisasi 8 bit per sample,
karakter ASCII Extended) pada bandwidth 6 Kbits/s,
membutuhkan storage:
2. Setiap karakter ditampilkan
dalam 8x8 pixels • Storage yang diperlukan = (64 Kbit/s / 8
bit/byte )x (1 s / 1.024 byte/Kbyte) = 8
3. Jumlah karakter yang dapat Kbyte
ditampilkan per halaman =
(640 x 480) / (8 x 8) =4.800 • Sinyal audio CD disample 44,1 kHz,
karakter. dikuantisasi 16 bits per sample.
Kebutuhan tempat
penyimpanan per halaman = • Storage = 44,1 kHz x 16 bits = 705,6 x
4.800×2 byte = 9.600 byte = 103 bits = 88.200 bytes untuk
9.375 Kbyte. menyimpan 1 detik playback.
• Data Grafik Vektor
1. 1 still image membutuhkan • Kebutuhan sistem PAL standar
500 baris 1. 625 baris dan 25 frame/detik

2. Setiap 1 baris 2. 3 bytes/pixel (luminance, red


direpresentasikan dalam posisi chrom, blue chrom)
3. Luminance Y menggunakan
sample rate 13,5 MHz o Teknik kompresi dimana data hasil
4. Chrominance (R-Y dan B-Y) dekompresi tidak sama dengan data
menggunakan sample rate 6.75 sebelum kompresi namun sudah
MHz “cukup” untuk digunakan. Contoh:
Mp3, streaming media, JPEG,
5. Jika menggunakan 8 MPEG, dan WMA.
bit/sample, maka
Bandwith=(13.4MHz o Kelebihan: ukuran file lebih kecil
+ 6.75 MHz + 6.75 dibanding loseless namun masih
MHz ) x 8 bit = tetap memenuhi syarat untuk
216x106 bit/s digunakan.
Data rate= 640 x 480
x 25 x 3 byte/seconds o Biasanya teknik ini membuang
= 23.040.000 byte/s bagian-bagian data yang
Required storage sebenarnya tidak begitu berguna,
space/s = 2.304 X 104 tidak begitu dirasakan, tidak begitu
byte/s x (1 s / 1.024 dilihat oleh manusia sehingga
byte/Kbyte) = 22.500 manusia masih beranggapan
Kbyte bahwa data tersebut masih bisa
digunakan walaupun sudah
dikompresi.
Jenis Kompresi Data Berdasarkan Mode
Penerimaan Data oleh o Misal terdapat image asli berukuran
Manusia 12,249 bytes, kemudian dilakukan
kompresi dengan JPEG kualitas 30
• Dialoque Mode: yaitu proses dan berukuran 1,869 bytes berarti
penerimaan data dimana pengirim dan image tersebut 85% lebih kecil dan
penerima seakan berdialog (real time), ratio kompresi 15%.
seperti pada contoh video conference.

o Dimana kompresi data harus • Loseless


berada dalam batas penglihatan
dan pendengaran manusia. o Teknik kompresi dimana data
Waktu tunda (delay) tidak hasil kompresi dapat
boleh lebih dari 150 ms, didekompres lagi dan hasilnya
dimana 50 ms untuk proses tepat sama seperti data
kompresi dan dekompresi, 100 sebelum proses kompresi.
ms mentransmisikan data Contoh aplikasi: ZIP, RAR,
dalam jaringan GZIP, 7-Zip

• Retrieval Mode: yaitu proses o Teknik ini digunakan jika


penerimaan data tidak dilakukan secara dibutuhkan data setelah
real time. dikompresi harus dapat
diekstrak/dekompres lagi tepat
o Dapat dilakukan fast forward sama.
dan fast rewind di client Contoh pada data teks, data
program/biner, beberapa image
o Dapat dilakukan random seperti GIF dan PNG.
access terhadap data dan dapat
bersifat interaktif. o Kadangkala ada data-data yang
setelah dikompresi dengan
teknik ini ukurannya menjadi
Jenis Kompresi Data Berdasarkan Output lebih besar atau sama.

• Lossy Compression
Kriteria Algoritma dan Aplikasi Kompresi Contoh-contoh Teknik Kompresi Teks
Data
1 Run-Length-Encoding (RLE)
• Kualitas data hasil enkoding: ukuran
lebih kecil, data tidak rusak untuk • Kompresi data teks dilakukan
kompresi lossy jika ada beberapa huruf yang
sama yang ditampilkan
• Kecepatan, ratio, dan efisiensi proses berturut-turu:
kompresi dan dekompresi Mis: Data :
ABCCCCCCCCDEFGGGG =
• Ketepatan proses dekompresi data: data 17 karakter
hasil dekompresi tetap sama dengan
data sebelum dikompres (kompresi • RLE tipe 1 (min. 4 huruf sama)
loseless) : ABC!8DEFG!4 = 11
karakter
Klasifikasi Teknik Kompresi
• RLE ada yang menggunakan
1. Entropy Encoding suatu karakter yang tidak
• Bersifat loseless digunakan dalam teks tersebut
seperti misalnya ‘!’ untuk
• Tekniknya tidak berdasarkan menandai.
media dengan spesifikasi dan
karakteristik tertentu namun • Kelemahan? Jika ada karakter
berdasarkan urutan data angka, mana tanda mulai dan
akhir?
• Statistical encoding, tidak Misal data :
memperhatikan semantik data ABCCCCCCCCDEFGGGG =
17 karakter
• Mis: Run-length coding, RLE tipe 2: -2AB8C-3DEF4G
Huffman coding, Arithmetic = 12 karakter
coding Source Coding
Misal data :
AB12CCCCDEEEF = 13
2. Source Coding karakter
• Bersifat lossy RLE tipe 2: -4AB124CD3EF =
12 karakter
• Berkaitan dengan data
semantik (arti data) dan media • RLE ada yang menggunakan
flag bilangan negatif untuk
• Mis: Prediction (DPCM, DM), menandai batas sebanyak
Transformation (FFT, DCT), jumlah karakter tersebut.
Layered Coding (Bit position,
subsampling, sub-band • Berguna untuk data yang
coding), Vector quantization. banyak memiliki kesamaan,
misal teks ataupun grafik
seperti icon atau gambar garis-
3. Hybrid Coding garis yang banyak memiliki
• Gabungan antara lossy + kesamaan pola
loseless
• Best case: untuk RLE tipe 2
• mis: JPEG, MPEG, H.261, adalah ketika terdapat 127
DVI karakter yang sama sehingga
akan dikompres menjadi 2 byte
saja.
• Worst case: untuk RLE tipe 2 • Menggunakan teknik loseless
adalah ketika terdapat 127
karakter yang berbeda semua, • Contoh untuk data image,
maka akan terdapat 1 byte seperti dibawah ini:
tambahan sebagai tanda jumlah
karakter yang tidak sama
tersebut.

terlebih dahulu dan diletakkan


ke dalam leaf(daun)

• Kemudian leaf-leaf akan


2 Static Huffman Coding dikombinasikan dan
• Frekuensi karakter dari string dijumlahkan probabilitasnya
yang akan dikompres dianalisa menjadi root diatasnya.
terlebih dahulu. Selanjutnya Mis: MAMA SAYA
dibuat pohon huffman yang A = 4 -> 4/8 = 0.5
merupakan pohon biner M = 2 -> 2/8 = 0.25
dengan root awal yang diberi S = 1 -> 1/8 = 0.125
nilai 0 (sebelah kiri) atau 1 Y = 1 -> 1/8 = 0.125
(sebelah kanan), sedangkan Total = 8 karakter
selanjutnya untuk dahan kiri
selalu diberi nilai 1(kiri) -
0(kanan) dan di dahan kanan
diberi nilai 0(kiri) – 1(kanan)
• A bottom-up approach =
frekuensi terkecil dikerjakan
Huffman Tree:
Sehingga w(A) = 1, w(M) = 00, w(S) = 010, dan w(Y) = 011

Shannon-Fano Algorithm
• Dikembangkan oleh Shannon (Bell
Labs) dan Robert Fano (MIT)
• Contoh:

dengan jumlah yang kira-


• Algoritma kira sama pada kedua
o Urutkan simbol bagian, sampai tiap bagian
berdasarkan frekuensi hanya terdiri dari 1
kemunculannya simbol.
• Cara yang paling tepat untuk
o Bagi simbol menjadi 2 mengimplementasikan adalah
bagian secara rekursif, dengan membuat binary tree.
• Algoritma Huffman tepat bila
dipergunakan pada informasi yang
bersifat statis. Sedangkan untuk
multimedia application, dimana data
Adaptive Huffman Coding yang akan datang belum dapat
• Metode SHC mengharuskan kita dipastikan kedatangannya (audio dan
mengetahui terlebih dahulu frekuensi video streaming), algoritma Adaptive
masing-masing karakter sebelum Huffman dapat dipergunakan
dilakukan proses pengkodean. Metode • Metode SHC maupun AHC merupakan
AHC merupakan pengembangan dari kompresi yang bersifat loseless
SHC dimana proses penghitungan
• Dibuat oleh David A. Huffman dari
MIT tahun 1952 Huffman banyak
dijadikan “back-end” pada algoritma
lain, seperti Arithmetic Coding, aplikasi
PKZIP, JPEG, dan MP3
frekuensi karakter dan pembuatan
pohon Huffman dibuat secara dinamis
pada saat membaca data
Output the code for s;
Add string s + c to the dictionary with a new
code
DICTIONARY-BASED CODING S = c;
Algoritma Lempel-Ziv-Welch (LZW) }
menggunakan teknik adaptif dan berbasiskan }
“kamus” Pendahulu LZW adalah LZ77 dan END
LZ78 yang dikembangkan oleh Jacob Ziv dan Algoritma Dekompresi:
Abraham Lempel pada tahun 1977 dan 1978.
Terry Welch mengembangkan teknik tersebut BEGIN
pada tahun 1984. LZW banyak dipergunakan S = NULL;
pada UNIX, GIF, V.42 untuk modem. while not EOF{
K = NEXT INPUT CODE;
Entry = dictionary entry for K;
Ouput entry;
Algoritma Kompresi: if(s != NULL)
BEGIN add string s + entry[0] to dictionary with new
S = next input character; code
While not EOF S = Entry;
{ }
C = next input character; END
If s + c exists in the diactionary
S=s+c
Else Aplikasi Kompresi
{ • ZIP File Format
o Ditemukan oleh Phil Katz o Proses kompresi lebih lambat
untuk program PKZIP dari ZIP tapi ukuran file hasil
kemudian dikembangkan untuk kompresi lebih kecil.
WinZip, WinRAR, 7-Zip.
o Aplikasi: WinRAR yang
o Berekstensi *.zip dan MIME mampu menangani RAR dan
application/zip ZIP, mendukung volume split,
enkripsi AES.
o Dapat menggabungkan dan
mengkompresi beberapa file Kesimpulan
sekaligus menggunakan
bermacam-macam algoritma, Penggunaan aplikasi pemampatan data dengan
namun paling umum menggunakan algoritma Huffman dan algoritma-
menggunakan Katz’s Deflate algoritma lainnya telah membantu dalam
Algorithm. pekerjaan yang melibatkan file-file yang besar
dalam bidang informasi dan telekomunikasi.
o Beberapa method Zip: Dari kode-kode dan algoritma tersebut
o Shrinking : dihasilkanlah software-software pengompres
merupakan metode yang selama ini kita kenal.
variasi dari LZW
Daftar pustaka
o Reducing :
merupakan metode [1] Howe, D., “Free On-line Dictionary of
yang Computing”, http://www.foldoc.org/,
mengkombinasikan 1993.
metode same byte
sequence based dan [2] Witten, I.H, et al., “Managing Gigabytes”,
probability based Van Nostrand Reinhold, New York, 1994.
encoding.
[3] Ben Zhao, et al., “Algorithm in the Real
o Imploding : World - (Compression) Scribe Notes”,
menggunakan http://www-2.cs.cmu.edu/~guyb/realworld/
metode byte sequence class-notes/all/, 1998, [17 Jan 2002]
based dan Shannon-
Fano encoding. [4] Compression Team, “The LZW
Algorithm”, Data Compression Reference
o Deflate : Center,
menggunakan LZW http://www.rasip.fer.hr/research/compress/
algorithms/fund/lz/LZW.html, 1997, [17
o Bzip2, dan lain-lain Jan 2002]

o Aplikasi: WinZip oleh Nico- [5] Ziviani, N., de Moura, E. S.,


Mak Computing “Compression: A Key for Next Generation
Text Retrieval System”, Department of
• RAR File Computer Science Univ. Federal de Minas
o Ditemukan oleh Eugene Gerais, Brazil, 2000.
Roshal, sehingga RAR
merupakan singkatan dari [6] University of Calgary, Calgary Corpus,
Roshal Archive pada 10 Maret http://links.uwaterloo.ca/calgary.corpus.ht
1972 di Rusia. ml, [26 Maret 2002]

o Berekstensi .rar dan MIME [7] University of Canterbury, “The


application/x-rar-compressed Canterbury Corpus”,
http://corpus.canterbury.ac.nz, [26 Feb
2002]
[8] Cormack, G.V., Horspool, R.N., “Data
Compression Using Dynamic Markov
Compression”, University of Waterloo
and University of Victoria, 1986.