HUFFMAN
3KA88
PENDAHULUAN
Hitung frekuensi
kemunculan tiap nilai pixel
Semua simpul
sudah digunakan
untuk membuat
pohon?
Simpan pohon
Huffman
SELESAI
• Menghitung banyaknya jenis karakter dan jumlah dari masing-masing karakter yang
terdapat dalam sebuah file.
contoh : kode ASCII string “ABBABABACAACDDD”
karakter yang ada dan jumlah tiap karakter A = 6, B = 4, C = 2, D = 3
• Menyusun setiap jenis karakter dengan urutan jenis karakter yang jumlahnya paling
sedikit ke yang jumlahnya paling banyak.
contoh : C, D, B, A
• Membuat pohon biner berdasarkan urutan karakter dari yang jumlahnya
terkecil ke yang terbesar, dan memberi kode untuk tiap karakter. Gabung 2
buahpohon yang mempunyai frekuensi kemunculan terkecil dan urutkan
kembali.
Gabung 2 buahpohon yang mempunyai frekuensi kemunculan terkecil dan
urutkan kembali.
Beri label dari akar ke daun, sebelah kiri = 0, kanan = 1.
• Mengganti data yang ada dengan kode bit berdasarkan pohon biner.
contoh :
Penggantian karakter menjadi kode biner, dilihat dari node yang paling atas
atau disebut node akar (root node) : A = 0, B =11 , C = 100, D = 101.
• Menyimpan jumlah bit untuk kode bit yang terbesar, jenis karakter yang diurutkan
dari frekuensi keluarnya terbesar ke terkecil beserta data yang sudah berubah menjadi kode
bit sebagai data hasil kompresi.
contoh :
Teknik kompresi dengan menggunakan metode Huffman pada file teks. Misalkan
sebuah file teks yang isinya “ABBABABACAACDDD”. File ini memiliki ukuran 15 byte
atau satu karakter sama dengan 1 byte.
• Selanjutnya berdasarkan pada kode biner masing-masing karakter ini, semua karakter dalam file
dapat diganti menjadi : 0 11 11 0 11 0 11 0 100 0 0 100 101 101 101 Karena angka 0 dan angka
1 mewakili 1 bit, sehingga data bit di atas terdiri dari 29 bit.
• Ukuran string sebelum pemampatan (dalam kode ASCII) adalah:
= 15 x 8 bit
= 120 bit
Rasio Pemampatan
= (100% - 29/120 x 100%) = 75.8%
Artinya 75.8% dari string semula telah berhasil dimampatkan.
CONTOH
• Diketahui Matriks Dari Gambar adalah :
50 100 100 50
100 50 100 0
50 100 150 100
200 100 100 50
Kompresi Huffman ?
Permodelan Matriks Satu Baris / Vektor atau Data Input
[50 100 100 50 100 50 100 0 50 100 150 100 200 100 100 50]
8
100 8 = 0.5
16
5
50 5 = 0.3125
16
1
200 1 = 0.0625
16
1
150 1 = 0.0625
16
1
0 1 = 0.0625
16
Proses Encoding Kompresi Huffman:
Simbol P(xi)
0 0.0625 1101
Tabel Bantu Akhir Kompresi Huffman
Jumlah Bit
Kode Average Length
Simbol Frekuensi P(xi) L(xi) Encoding
Huffman (P(xi) * L(xi))
(Fi * L(xi))
50 5 0.3125 10 2 10 0.625
Jumlah 29 1.8125