View
117
Download
5
Category
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