You are on page 1of 26

Shannon-Fano dan Huffman Coding

Shannon-Fano Coding

Shannon-Fano Coding
Contoh

S = {A, B, C, D, E} P = {0.35, 0.17, 0.17, 0.16, 0.15}


Pengkodean Shannon-Fano: p P (probability)
Bagi S kedalam s1 dan s2 (pilih yang memberikan

perbedaan p(s1) dan p(s2) terkecil


s1 = (A,B) p(s1) = p(A) + p(B) = 0,52 s2 = (C,D,E) p(s2) = p(C) + p(D) + p(E) = 0,48 Panggil ShannonFano()

Contoh

AB CDE
1 C DE 1 B C 0 D 1 E 0 1 DE

0 AB

0 A

Shannon-Fano Coding

Panjang code rata-rata:

Lsh = 0,35*2 + 0,17*2 + 0,17*2 + 0,16*3+0,15*3 = 2,31


Efisiensi = (2,23284/2,31)*100 = 96,66 %

Shannon-Fano Algorithm
Dikembangkan oleh Shannon (Bell Labs) dan Robert Fano (MIT).

Algoritma :
1. Urutkan simbol berdasarkan frekuensi kemunculannya 2. Bagi simbol menjadi 2 bagian secara rekursif, dengan jumlah yang kira-kira sama

pada kedua bagian, sampai tiap bagian hanya terdiri dari 1 simbol. binary tree.

. Cara yang paling tepat untuk mengimplementasikan adalah dengan membuat

. The Shannon-Fano method produces better code when the splits are better,

i.e. , when the two subsets in every split have very close total probabilities.

Latihan
Rancang code word untuk 7 simbol (S0, S1, S2, S3,

S4,S5,S6) dengan probabiliti sbb: S0=0,25; S1=0,20; S2=0,15; S3=0,15; S4=0.10, S5=0.10,S6=0,05.
Hitung Panjang kode rata-rata dan Entropi dari pengkodean

shannon untuk simbol-simbol tersebut

Latihan

H(S) = - i pi log 2 pi

The average of size is (0.25 x 2) + (0.20 x 2)

+ (0.15 x 3) + (0.15 x 3) + (0.10 x 3) + (0.10 x 4) + (0.05 x 4) = 2,7 bits/symbol.


Entropy:

-(0.25log20.25 + 0.20 log2 0.20 + 0.15 log2 0.15 + 0.15 log2 0.15 + 0.10 log2 0.10 + 0.10 log2 0.10 + 0.05 log2 0.05) 2,67 bits/symbol.

Huffman Coding
Optimal code pertama dikembangkan oleh David Huffman Utk sumber S = {x1, , xn}; Probabilitas P = {p1, .., pn};

Codewords {c1, .., cn}; dan Panjang {l1, .., ln}. Terdapat optimal binary prefix code dengan karakteristik: Teorema: (a) Jika pj > pi, maka lj li (b) Dua codeword dari dua simbol dg probabilitas terendah mempunyai panjang yg sama (c) Dua codeword terpanjang identik kecuali pada digit terakhir

Pengkodean Huffman
Pengkodean Huffman bertujuan untuk mengkodekan

setiap simbol dengan panjang kode berbeda, simbol yg paling sering muncul akan memiliki kode lebih pendek

Algoritma Enkoding Huffman


1. Simbol diurutkan berdasarkan probabliti kemunculan. Dua simbol

terbawah diberi assign 0 dan 1. -> Splitting stage

2. Dua simbol terbawah tadi dijumlahkan dan menjadi kode sumber 3. Proses tersebut diurutkan sehingga urutannya hanya tinggal 2

baru dan probabilitasnya dijumlahkan. Diurutkan menjadi stage 2 baris dengan assign 0 dan 1. terjadi, dilihat dari belakang

4. Kode word untuk simbol tersebut adalah kombinasi biner yg

Huffman Coding

Huffman Coding
Contoh: xi pi ---------------------------A B C D E 0,35 0,17 0,17 0,16 0,15

Huffman Coding
Dari Huffman tree dapat dibuat tabel codeword:

A 1 B 011 C 010 D 001 E 000 LHuff = 0,35*1 + 0,17*3 + 0,17*3 + 0,16*3 + 0,15*3 = 2,3 H(S) = 2,23284 Efisiensi = (2,23284/2,3) x 100 % = 97,08%

Huffman Coding
Tergantung pada bagaimana memilih probabilitas terendah saat membangun Huffman tree

Huffman tree tidak unik


Namun, panjang rata-rata codeword selalu sama utk tree yang berbeda

Latihan
Rancang code word untuk 5 simbol (S0, S1, S2, S3, S4)

dengan probabiliti sbb: S0=0,4; S1=0,2; S2=0,2; S3=0,1; S4=0,1.


Hitung Panjang kode rata-rata dan Entropi dari pengkodean

Huffman untuk simbol-simbol tersebut

Latihan
Rancang kode word untuk 5 simbol (S0, S1, S2, S3, S4) dengan probabiliti sbb:

S0=0,4; S1=0,2; S2=0,2; S3=0,1; S4=0,1.


Hitung Panjang kode rata-rata dan Entropi dari pengkodean Huffman untuk

simbol-simbol tersebut

Simbol
Jawaban:

P 0.4 0.2 0.2 0.1 0.1

Code Word 00 10 11 010 011

S0 S1 S2 S3 S4

= 0,4(2) + 0,2(2) + 0,2(2) + 0,1(3) + 0,1(3) = 2,2

H(x) = 0,52877 + 0,46439 + 0,464439 + 0,33219 + 0,33219 = 2,12193

Huffman Coding
Proses coding: mentransmisikan codeword sesuai dg simbol-simbol yg akan

dikirim, mis ABAAD 101111001 dibangun Huffman tree

Untuk decode message, konversi tabel harus diketahui penerima dp

0011011 DAB A 1 B 011 C 010 D 001 E 000

Masalah: pengirim (encoder) dan penerima (decoder) harus menggunakan

coding (Huffman tree) yang sama

Huffman Coding
Bagaimana encoder memberi tahu decoder utk menggunakan code yang mana: Baik encoder dan decoder sudah sepakat sebelumnya utk menggunakan Huffman tree tertentu sebelum terjadi pengiriman message Encoder membangun Huffman tree yang baru (fresh) setiap message baru akan dikirimkan, dan mengirimkan tabel konversi bersama-sama dg message Keuntungannya terasa jika digunakan utk message yang besar

Huffman Coding
Apakah masih ada ruang perbaikan utk Huffman Coding?
Semua kemungkinan Huffman tree akan

memberikan panjang rata-rata yang sama


Semua kemungkinan pasangan simbol dp digunakan

Namun ingat Shannons Fundamental Theorem:


untuk membangun Huffman tree

kompresi data dp ditingkatkan


Namun perbaikan harus dibayar dg Tabel Konversi

yang lebih besar

Contoh:

Huffman Coding
Menggunakan pasangan simbol
Jika message besar dan simbol sedikit penambahan ukuran tabel tidak signifikan Namun utk jumlah simbol yang banyak ukuran tabel akan sangat besar

umumnya masih berguna (memberikan keuntungan)

26 huruf Inggris 676 pasangan 96 karakter (dari 126 kode ASCII) 9216 pasangan Tidak semua pasangan mungkin muncul (mis. XQ, ZK) pasangan dp dieliminir

Percobaan menggunakan: (I) single character, (II) Single character + 100

group yg paling sering muncul, (III) Single character + 512 group yg paling sering muncul (Rubin, 1976) Compression Rate English Text PL/I Program Photograpic Image 40% I II III 55% 73% 52% 7 1% 62%

-------------------------------------------------------------------------49% 60% 50%

Huffman pada Citra

Huffman pada citra (2)

Huffman pada citra (3)

Huffman pada citra (4)

You might also like