Shannon Fano & Huffman

Preview:

Citation preview

Shannon-Fano dan HuffmanCoding

Shannon-Fano Coding

Shannon-Fano Coding

ContohS = {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) terkecils1 = (A,B) p(s1) = p(A) + p(B) = 0,52 s2 = (C,D,E) p(s2) = p(C) + p(D) + p(E) = 0,48Panggil ShannonFano()

Contoh AB CDE

0 1

AB C DE

0 1 0 1

A B C DE

0 1

D E

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.

Cara yang paling tepat untuk mengimplementasikan adalah dengan membuat binary tree.

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.

LatihanRancang 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 p i

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 CodingOptimal 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 HuffmanPengkodean Huffman bertujuan untuk

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

Algoritma Enkoding Huffman1. 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 baru dan probabilitasnya dijumlahkan. Diurutkan menjadi stage 2

3. Proses tersebut diurutkan sehingga urutannya hanya tinggal 2 baris dengan assign 0 dan 1.

4. Kode word untuk simbol tersebut adalah kombinasi biner yg terjadi, dilihat dari belakang

Huffman Coding

Huffman CodingContoh:xi pi

-----------------------------

A0,35

B0,17

C0,17

D0,16

E0,15

Huffman CodingDari Huffman tree dapat dibuat tabel codeword:

A 1B 011C 010D 001E 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

LatihanRancang 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

LatihanRancang 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

Jawaban:

L = 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

Simbol P Code Word

S0 0.4 00

S1 0.2 10

S2 0.2 11

S3 0.1 010

S4 0.1 011

Huffman CodingProses coding: mentransmisikan codeword sesuai dg

simbol-simbol yg akan dikirim, mis ABAAD 101111001Untuk decode message, konversi tabel harus diketahui

penerima dp dibangun Huffman tree

Masalah: pengirim (encoder) dan penerima (decoder) harus menggunakan coding (Huffman tree) yang sama

0011011 DAB

A 1B 011C 010D 001E 000

Huffman CodingBagaimana 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 CodingApakah masih ada ruang perbaikan utk Huffman Coding?Semua kemungkinan Huffman tree akan

memberikan panjang rata-rata yang samaNamun ingat Shannon’s Fundamental

Theorem:Semua kemungkinan pasangan simbol dp

digunakan untuk membangun Huffman tree kompresi data dp ditingkatkan

Namun perbaikan harus ‘dibayar’ dg ‘Tabel Konversi’ yang lebih besar

Contoh:

Huffman CodingMenggunakan 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 I II III--------------------------------------------------------------------------English Text 40% 49% 55%PL/I Program 60% 73% 7 1%Photograpic Image 50% 52% 62%

Huffman pada Citra

Huffman pada citra (2)

Huffman pada citra (3)

Huffman pada citra (4)

Recommended