Anda di halaman 1dari 18

KOMPRESI

HUFFMAN

3KA88
PENDAHULUAN

Metode Huffman merupakan salah satu teknik kompresi dengan cara


melakukan pengkodean dalam bentuk bit untuk mewakili data
karakter. Huffman menggunakan struktur pohon dalam
pemrosesannya.
Algoritma kompresi Huffman dinamakan sesuai dengan nama
penemunya yaitu David Huffman, seorang profesor di MIT
(Massachusets Instuate of Technology).
Algoritma ini merupakan algoritma kompresi lossless, karena teknik
kompresinya tidak mengubah informasi data aslinya.
BAGAIMANA ALGORITMA
KOMPRESI HUFFMAN ?
BLOK DIAGRAM PROSES HUFFMAN
CODING

DATA Simbol Probabilitas PROSES Kode DATA


PEMODELAN
INPUT ENCODING OUTPUT
DESAIN SISTEM FLOWCHART POHON HUFFMAN
MULAI

Baca simbol/pixel data


citra yg akan dikompresi

Hitung frekuensi
kemunculan tiap nilai pixel

Buat daftar simpul dan hasil


hitung frekuensi nya

Ambil dua simpul dengan frekuensi


terkecil dan hapus dari daftar

Buat simpul baru dengan frekuensi


hasil penjumlahan dua frekuensi Masukkan simpul baru
terkecil dalam daftar simpul

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

Ukuran string setelah pemampatan (dalam kode Huffman) adalah:


= 6 x 1 bit + 4 x 2 bit + 3 x 3 bit + 2 x 3 bit
= 29 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]

Pembuatan Tabel Bantu Kompresi Huffman

Simbol Frekuensi P(xi)

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)

100 0.5 0 0.5 0 0.5 0 0.5 0

50 0.3125 10 0.3125 10 0.3125 10 0.5 1

200 0.0625 111 0.125 110 0.1875 11

150 0.0625 1100 0.0625 111

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))

100 8 0.5 0 1 8 0.5

50 5 0.3125 10 2 10 0.625

200 1 0.0625 111 3 3 0.1875

150 1 0.0625 1100 4 4 0.25

0 1 0.0625 1101 4 4 0.25

Jumlah 29 1.8125

Data Output Berupa Vektor / Matriks Satu Baris


[10 0 0 10 0 10 0 1101 10 0 1100 0 111 0 0 10]
Jumlah Elemen Pada Vektor Input = 16 Byte
= 16 * 8 Bit
= 128 Bit
Jumlah Elemen Pada Vektor Output = 29 Bit
𝐽𝑢𝑚𝑙𝑎ℎ 𝐵𝑖𝑡 𝑂𝑢𝑡𝑝𝑢𝑡
Rasio =
𝐽𝑢𝑚𝑙𝑎ℎ 𝐵𝑖𝑡 𝐼𝑛𝑝𝑢𝑡
29
=
128
= 0.2265625
Rasio Persentase = 0.2265625 * 100%
= 22.65%
Rasio Pemampatan = 100% - 22.65%
= 77.35%
Average Length Codeword = 1.8125 Bits/Symbol
TERIMAKASIH

Anda mungkin juga menyukai