Teknik Pengkodean Shanon-Fano
Teknik Pengkodean Shanon-Fano
Shannon Fano Coding
• Tiap kode berbeda informasi bitnya.
• Kode simbol yang probabilitasnya rendah mempunyai jumlah bit yang lebih banyak, dan yang probabilitasnya tinggi mempunyai jumlah bit yang lebih sedikit.
• Proses decoding tetap dapat dilakukan walaupun panjang kode tiap simbol berbeda.
• Proses kompresi terjadi karena simbol yang sering keluar dikodekan dengan jumlah bit yang sedikit.
0
0
0
0
1 1
1
1 A
E D
C B
Shannon-Fano Coding
Suboptimal code
• Shannon code
• Shannon-Fano code
Optimal code
• Huffman code
• Arithmetic coding
Efisiensi macam-macam code diukur dengan:
%100.)(
avgL
SHeffisiensi
Shannon Coding
• S = {x1, …, xn}
• P = {p1, ….., pn}
• pi = p(xi) dari semua simbol sumber xi diurut dari yang paling besar: p1 ≥ p2 ≥ … ≥pn
• Cumulative prob didefinisikan: Pi = p1 + … + pi-1
• Codeword utk simbol xi didp dg mengambil li = |-lg pi | digit pertama dari ekspansi biner Pi
Pi = 0.b1b2b3b4 … = b1/21 + b2/22 + b3/23 + …
Algoritma Shannon
Fano
• Buat daftar probabilitas kemunculan setiap simbol.
• Urutkan daftar dari yang paling sering keluar.
• Bagi daftar menjadi 2, dengan ketentuan jumlah probabilitas setengah bagian atas mendekati setengah bagian bawah.
• Setengah bagian atas diberi nilai 0 setengah bagian bawah diberi nilai 1.
• Lakukan secara rekursif langkah terakhir pada setengah bagian atas dan setengah bagian bawah.
Shannon Coding
• Contoh:
S = {A, B, C, D, E}
P = {0.35, 0.17, 0.17, 0.16, 0.15}
Contoh: Shannon Fano Coding (1)
Diberikan simbol: AAAAAAAAAAAAAAABBBBBBCCCCCDDDDDDEEEEEEE Jika ditabelkan menjadi: A 15 0 E 7 0 B 6 1 D 6 1 C 5 1
Pembagian pertama Karena menghasilkan selisih Atas dan Bawah terkecil (=5)
Selanjutnya semua bagian atas diberi lambang 0 dan semua bagian bawah diberi lambang 1
Contoh: Shannon Fano Coding (2)
Selanjutnya untuk setengah bagian atas: bagian atas pembagian lambang 0 dan bagian bawah pembagian diberi lambang 1
A 15 0 0 E 7 0 1 B 6 1 D 6 1 C 5 1
Pembagian kedua Untuk membagi setengah bagian atas
Contoh: Shannon Fano Coding (3)
Selanjutnya semua bagian atas diberi lambang 0 dan semua bagian bawah diberi lambang 1
A 15 0 0 E 7 0 1 B 6 1 0 D 6 1 1 C 5 1 1
Pembagian ketiga Karena menghasilkan selisih Atas dan Bawah terkecil (=5)
Contoh: Shannon Fano Coding (4)
Sehingga dapat dikodekan: A = 00
B = 01
C = 10
D = 110
E = 111
A 15 0 0 E 8 0 1 B 5 1 0 D 3 1 1 0 C 2 1 1 1
Pembagian keempat Merupakan pembagian terakhir
Shannon-Fano Coding
• Contoh
S = {A, B, C, D, E}
P = {0.35, 0.17, 0.17, 0.16, 0.15}
• Pengkodean Shannon-Fano:
– 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()
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 %