26
Shannon-Fano dan Huffman Coding

Shannon Fano & Huffman

Embed Size (px)

Citation preview

Page 1: Shannon Fano & Huffman

Shannon-Fano dan HuffmanCoding

Page 2: Shannon Fano & Huffman

Shannon-Fano Coding

Page 3: Shannon Fano & Huffman

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

Page 4: Shannon Fano & Huffman

Contoh AB CDE

0 1

AB C DE

0 1 0 1

A B C DE

0 1

D E

Page 5: Shannon Fano & Huffman

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 %

Page 6: Shannon Fano & Huffman

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.

Page 7: Shannon Fano & Huffman

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

Page 8: Shannon Fano & Huffman

Latihan

H(S) = - i pi log 2 p i

Page 9: Shannon Fano & Huffman

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.

Page 10: Shannon Fano & Huffman

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

Page 11: Shannon Fano & Huffman

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

Page 12: Shannon Fano & Huffman

Huffman Coding

Page 13: Shannon Fano & Huffman

Huffman CodingContoh:xi pi

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

A0,35

B0,17

C0,17

D0,16

E0,15

Page 14: Shannon Fano & Huffman

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%

Page 15: Shannon Fano & Huffman

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

Page 16: Shannon Fano & Huffman

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

Page 17: Shannon Fano & Huffman

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

Page 18: Shannon Fano & Huffman

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

Page 19: Shannon Fano & Huffman

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

Page 20: Shannon Fano & Huffman

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

Page 21: Shannon Fano & Huffman

Contoh:

Page 22: Shannon Fano & Huffman

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%

Page 23: Shannon Fano & Huffman

Huffman pada Citra

Page 24: Shannon Fano & Huffman

Huffman pada citra (2)

Page 25: Shannon Fano & Huffman

Huffman pada citra (3)

Page 26: Shannon Fano & Huffman

Huffman pada citra (4)