12
Huffman Coding Setianto Nugroho 1103158223 Dicky Muhammad 1103158240 Bagus Ichsanda 1104120007 Iqbal GP 1104110074 Arief Muarief 1104110061

Huffman coding

Embed Size (px)

Citation preview

Page 1: Huffman coding

Huffman CodingSetianto Nugroho 1103158223Dicky Muhammad 1103158240

Bagus Ichsanda 1104120007Iqbal GP 1104110074

Arief Muarief 1104110061

Page 2: Huffman coding

Huffman coding dikembangkan oleh David A. Huffman sewaktu dia menjadi mahasiswa Ph.D. di Massachusetts Institute of Technology (MIT)

Algoritma kompresi citra yang menggunakan pendekatan statistik dengan cara melakukan pengkodean dalam bentuk bit untuk mewakili data karakter. Huffman Coding menggunakan struktur pohon dalam pemrosesannya.

Page 3: Huffman coding

Algoritma Huffman CodingENCODINGUrutkan nilai-nilai grayscale berdasarkan frekuensi

kemunculannya.Gabung 2 buahpohon yang mempunyai frekuensi

kemunculan terkecil dan urutkan kembali.Ulangi langkah (2) sampai tersisa satu pohon binerBeri label pohon biner tersebut dengan cara sisi kiri

pohon diberi label 0 dan sisi kanan pohon diberi label 1.

Telusuri pohon biner dari akar ke daun. Barisan label-label sisi dari akar kedaun adalah kode huffman.

Page 4: Huffman coding

ContohDalam kode ASCII string “ABBABABACAACDDD” ditulis :

Page 5: Huffman coding

Bila dikodekan menggunakan kode Huffman, langkahnya adalah sebagai berikut :1. Buat daftar frekuensi kemunculan tiap-tiap karakter dan urutkan dari yang terkecil hingga terbesar.

Page 6: Huffman coding

Gabung 2 buahpohon yang mempunyai frekuensi kemunculan terkecil dan urutkan kembali.

Page 7: Huffman coding

Gabung 2 buah pohon yang mempunyai frekuensi kemunculan terkecil dan urutkan kembali.

Page 8: Huffman coding

Beri label dari akar ke daun, sebelah kiri = 0, kanan = 1.

Page 9: Huffman coding

Penulusuran dari akar ke daun (dari atas ke bawah) menghasilkan kode Huffman berikut :

Page 10: Huffman coding

Dalamkode Huffman, string “ABBABABACAACDDD” ditulis:

0 11 11 0 11 0 11 0 100 0 0 100 101 101 101

Dari contoh tersebut tampak bahwa kode untuk sebuah symbol/karakter tidak boleh menjadi awalan dari kode symbol yang lain guna menghindari keraguan (ambiguitas) dalam proses dekompresi atau decoding.Jadi maksudnya jika pada symbol A kode Huffmannya 0, maka 0 tidak akan menjadi awalan kode Huffman pada kode selanjutnya

Page 11: Huffman coding

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/terkompresi

Page 12: Huffman coding

DECODING Ubah!Saat membaca kode bit pertama dalam rangkaian bit “0 11 11 0 11 0 11 0 100 0 0 100 101 101 101”, yaitu bit “0”, dapat langsung disimpulkan bahwa kode bit “0” merupakan pemetaan dari symbol “A”. Kemudian, baca kode selanjutnya, yaitu bit “1”. Tidak ada kode Huffman “1”, lalu baca kode bit selanjutnya sehingga menjadi “11”, rangkaian kode bit “11” adalah pemetaan dari symbol “B” dan seterusnya. Proses decoding tidak dapat dilakukan tanpa ada keyword sebelumnya dari proses encoding.