pohon pengkode huffman
TRANSCRIPT
-
7/25/2019 Pohon Pengkode Huffman
1/6
Seri Kuliah Matematika DiskritDosen : Wawan Laksito YS, S.Si, M.Kom
Pohon Pengkode Hufman
Kita biasanya mengkodekan suatu string dengan menggunakan kode yang
panjangnya tetap fxed-length codes! pada seluruh al"abet mis. # bit untuk
$S%&&!. $kan tetapi, jika karakter yang berbeda mun'ul dengan "rekuensi
yang berbeda, kita dapat menghemat memori dan mereduksi waktu
transmisi dengan 'ara menggunakan kode yang panjangnya dapat diubah
VLC(variable length codes!. &de dasar dari teknik pengkodean ini adalah nya
adalah memakai kode terpendek untuk karakter yang paling sering mun'ul.
$da beberapa hal yang harus diperhatikan ketika menggunakan )L%.
Misalnya, kita ingin mengkodekan karakter *e+ dengan bit *+, *a+ dengan
*-+, dan *t+ dengan *-+. agaimana kemudian kita mengkodekan kata
*tea/ Dari system ini, maka kodenya adalah *--+. Kalau dilihat lebih
'ermat, kode tersebut ran'u, karena kode tersebut bisa juga dihasilkan dari
kata *eat , eaea, atau *tt. 0entu saja kode yang demikian tidak dapat
diterima karena dapat menyebabkan kesalahan1kehilangan in"ormasi.
2ntuk menghindari keran'uan ini kita dapat menggunakan kode pre34 prefx
code!. 5ada kode pre3ks, bit string untuk sebuah karakter tidak pernah akan
menjadi pre3ks bagian pertama! dari bit string karakter lainnya. Sebagai
'ontoh, pengkodean *e dengan *+, *a+ dengan *-+, dan *t+ dengan *ii+
adalah kode pre3ks. Maka, Kata *tea+ akan dikodekan sebagai *---+. it
string ini adalah unik karena hanya kata *tea tidak ada kata lain yang dapat
dikodekan dengan hasil sama.
Kode pre3ks dapat disusun dengan bantuan pohon biner, dimana karakter
adalah label dari lea daun!dalam pohon biner tersebut. 6aris dari tree
dilabeli sedemikian hingga garis ke childkiri diberi bit ++ dan ke 'hild kanan
dengan *-+. Bit string yang dipakai untuk menkodekan karakter adalah
rangkaian label dari garis dalam lintasan yang unik dari rootke leayang
dilabeli dengan karakter tersebut. Maka, pohon biner untuk 'ontoh
pengkodean *tea+ yang telah dibahas adalah sebagai berikut.
-
7/25/2019 Pohon Pengkode Huffman
2/6
Seri Kuliah Matematika DiskritDosen : Wawan Laksito YS, S.Si, M.Kom
5ada pohon biner ini tidak ada leayang dapat menjadi
ancestor 'abang! dari lealainnya. Sehingga, tidak ada
kode dari karakter dapat menjadi pre3ks dari kode karakter
lainnya. &nilah yang dimaksud dengan kode pre3ks.
2ntuk menentukan kode yang optimal terpendek! dari suatu string, pertama
kita harus men'ari "rekuensi karakter dalam string tersebut.
%ontoh :
*eead"eejjeggebeeggddehhhe'e'dde'i
edee+
String ini berisi a : - , b: -, ': 7 , d:8 , e: -9, ":-, h:7, i:-, :j
Kita dapat menggunakan algoritma ;u
-
7/25/2019 Pohon Pengkode Huffman
3/6
Seri Kuliah Matematika DiskritDosen : Wawan Laksito YS, S.Si, M.Kom
=. 2langi sehingga didapatkan tree tunggal.
-
7/25/2019 Pohon Pengkode Huffman
4/6
Seri Kuliah Matematika DiskritDosen : Wawan Laksito YS, S.Si, M.Kom
-
7/25/2019 Pohon Pengkode Huffman
5/6
Seri Kuliah Matematika DiskritDosen : Wawan Laksito YS, S.Si, M.Kom
$khirnya kita bisa mengubahnya menjadi kode pre3ks sebagai berikut :
)L%(nya adalah :
a :
b : -
' : -
d : --
e : -
" : -
g : --
-
7/25/2019 Pohon Pengkode Huffman
6/6
Seri Kuliah Matematika DiskritDosen : Wawan Laksito YS, S.Si, M.Kom
h : -
i : --
j : --
Sehingga, string asal
*eead"eejjeggebeeggddehhhe'e'dde'iedee+
>ika menggunakan kode dengan panjang tetap maka diperlukan = bit setiap
karakternya ada - karakter yang berbeda!. Sehingga panjang kode dari
seluruh string adalah =?7@A-=# bit.
>ika menggunakan )L%, maka hanya membutuhkan :
-?9B-?9B7?=B8?7B-9?-B-?9B=?=B7?=B-?9B?= A -- bit