1. Seri Kuliah Matematika Diskrit
Dosen : Wawan Laksito YS, S.Si, M.Kom
Pohon Pengkode Huffman
Kita biasanya mengkodekan suatu string dengan menggunakan kode yang panjangnya tetap
(fixed-lengthcodes) padaseluruhalfabet(mis.8 bit untukASCII).Akantetapi,jikakarakter yang
berbedamuncul denganfrekuensiyangberbeda, kitadapatmenghematmemori danmereduksi
waktu transmisi dengan cara menggunakan kode yang panjangnya dapat diubah (VLC-variable
length codes). Ide dasar dari teknikpengkodean ini adalah nya adalah memakai kode terpendek
untuk karakter yang paling sering muncul.
Ada beberapa hal yang harus diperhatikan ketika menggunakan VLC. Misalnya, kita ingin
mengkodekan karakter “e” dengan bit “0”, “a” dengan “1”, dan “t” dengan “01”. Bagaimana
kemudian kita mengkodekan kata “tea”? Dari system ini, maka kodenya adalah “0101”. Kalau
dilihatlebihcermat,kodetersebutrancu,karenakodetersebutbisajugadihasilkandari kata“eat”
, “eaea”, atau “tt”. Tentu saja kode yang demikian tidak dapat diterima karena dapat
menyebabkan kesalahan/kehilangan informasi.
Untuk menghindari kerancuan ini kita dapat menggunakan kode prefix (prefix code).Pada kode
prefiks,bitstringuntuksebuahkaraktertidakpernahakanmenjadiprefiks(bagianpertama) dari
bitstringkarakterlainnya.Sebagai contoh,pengkodean“e” dengan“0”,“a”dengan“10”, dan“t”
dengan“ii” adalahkode prefiks.Maka, Kata “tea” akan dikodekansebagai “11010”. Bit string ini
adalahunikkarenahanyakata“tea” tidakada kata lainyangdapatdikodekandenganhasilsama.
Kode prefiksdapatdisusundenganbantuan pohonbiner,dimanakarakter adalahlabel dari leaf
(daun) dalam pohon biner tersebut. Garis dari tree dilabeli sedemikian hingga garis ke child kiri
diberi bit”0” dan ke childkanandengan“1”. Bit string yangdipakai untukmenkodekankarakter
adalah rangkaian label dari garis dalam lintasan yang unik dari root ke leaf yang dilabeli dengan
karaktertersebut.Maka,pohonbineruntukcontohpengkodean“tea”yangtelahdibahasadalah
sebagai berikut.
Pada pohon biner ini tidak ada leaf yang dapat menjadi ancestor (cabang)
dari leaf lainnya. Sehingga, tidak ada kode dari karakter dapat menjadi
prefiks dari kode karakter lainnya. Inilah yang dimaksud dengan kode
prefiks.
2. Seri Kuliah Matematika Diskrit
Dosen : Wawan Laksito YS, S.Si, M.Kom
Untuk menentukankode yangoptimal (terpendek) dari suatustring,pertamakitaharus mencari
frekuensi karakter dalam string tersebut.
Contoh :
“eeadfeejjeggebeeggddehhhececddeciedee”
Stringini berisi a: 1 , b: 1, c: 3 , d:6 , e: 15, f:1, h:3, i:1, 2:j
Kitadapat menggunakanalgoritmaHuffmanuntukmembuatcodingtree yangoptimal.
1. Untuk alfabetberisi n huruf,algoritmaHuffmanmulai dengannsimpul,satuuntukmasing-
masinghuruf,dilabeli denganhuruf danfrekuensinya.
2. Tentukan2 buah simpul yangpalingkecil frekuensinya.Gantikanmerekadengantree
dimanaroot dilabelidenganjumlahdari keduafrekuensitersebutdanyangduachildrennya
adalahdua simpul yangkitagantikan.
3. Pada langkahberikutnya,tentukan2frekuensiterendahantarasimpul-simpul tunggaldan
root-rootdari tree-treeyang telahdibuat.
4. Ulangi sehinggadidapatkantree tunggal.
5. Seri Kuliah Matematika Diskrit
Dosen : Wawan Laksito YS, S.Si, M.Kom
Akhirnya kita bisa mengubahnya menjadi kode prefiks sebagai berikut :
VLC-nyaadalah:
a : 00000
b : 00001
c : 0001
d : 011
e : 1
f : 00100
g : 0101
h : 0100
i : 00101
j : 0011
Sehingga,stringasal
“eeadfeejjeggebeeggddehhhececddeciedee”
Jikamenggunakankode denganpanjangtetapmakadiperlukan4bitsetiapkarakternya(ada10
karakteryang berbeda).Sehinggapanjangkode dari seluruhstringadalah4*37=148 bit.
JikamenggunakanVLC,makahanyamembutuhkan:
1*5+1*5+3*4+6*3+15*1+1*5+4*4+3*4+1*5+2*4 = 101 bit