Addaptive Huffman Code
Addaptive Huffman Code
• Sibling properti
• Setiap node kandung (kecuali akar) memiliki sibling
• Node terdaftar jika memiliki urutan non-increasing bobot dengan
setiap node yang berdekatan dengan siblingnya
• Daunnya mewakili Pesan sumber
• Bobot daunnya merupakan frekuensi pesannya
Prosedur (Contoh Pesan : aa bbb cc)
Input : a
1
Output : 1
Simbol : NYT a b c spasi
Kode : 0 1
0 1
NYT a
Input : aa
2
Output : 11
Simbol : NYT a b c spasi
Kode : 0 1
0 2
NYT a
Input : aa_
Output : 1101
Simbol : NYT a b c spasi
Kode : 00 1 01
Input : aa_b
Output : 1101001
Simbol : NYT a b c spasi
Kode : 000 1 001 011
Input : aa_bb
Output : 0010111111
Simbol : NYT a b c spasi
Kode : 110 0 111 10
Input : aa_bbb
Output : 0010111111111
Simbol : NYT a b c spasi
Kode : 110 0 111 10
Input : aa_bbb_
Output : 001011111110
Simbol : NYT A b c spasi
Kode : 110 0 111 10
Input : aa_bbb_c
Output : 0010111111101101
Simbol : NYT A b c spasi
Kode : 1100 0 111 1101 10
Input : aa_bbb_cc
Output : 00101111111011011101
Simbol : NYT A b c spasi
Kode : 1100 0 111 1101 10
Algoritma Vitter
• Kode direpresentasikan sebagai struktur pohon dimana setiap simpul memiliki berat
yang sesuai dan unique number.
• Berat setiap node harus seimbang dan tersusun secara decresing
• Penomeran dari kiri kekanan
• Satu set node dengan bobot yang sama membuat blok.
• Untuk mendapatkan kode untuk setiap node, dalam kasus pohon biner kita hanya
bisa melintasi semua jalan dari akar ke node, menuliskan (misalnya) "1" jika kita
pergi ke kanan dan "0" jika kita pergi sebelah kiri.
• Ketika kita mengirimkan simbol NYT kita harus mengirimkan kode untuk simpul NYT,
untuk kode generik.
• Untuk setiap simbol yang sudah di pohon kita hanya perlu mengirimkan kode untuk
simpul daun.
Prosedur (cont.)
• Untuk setiap simbol ditransmisikan pada kedua sisi kita harus melaksanakan prosedur
update:
• Jika simbol saat ini adalah NYT, tambahkan dua node anak NYT node, satu akan
menjadi NYT node baru yang lain adalah simpul daun untuk simbol kami,
meningkatkan berat untuk simpul daun baru dan NYT tua lanjutkan ke langkah 4 lagi
pergi ke simbol 's daun simpul NYT tua, lanjutkan ke langkah 4, lain pergi ke simbol s
daun simpul.
• Jika node ini tidak memiliki jumlah tertinggi di blok, tukarkan node tersebut dengan
yang memiliki jumlah tertinggi
• Meningkatkan berat badan untuk node
• Jika hal ini bukan simpul akar pergi ke node induk, lanjutkan langkah 2, sampai akhir
Catatan: swapping node berarti swapping berat dan simbol-simbol yang sesuai, namun
bukan angka.
Contoh (Pesan : aa bbb cc)
Input :
Output :
Simbol : NYT a b c spasi
Kode : 0
Input : a
Output : 1
Simbol : NYT a b c spasi
Kode : 0 1
Input : aa
Output : 11
Simbol : NYT a b c spasi
Kode : 0 1
Input : aa_
Output : 1101
Simbol : NYT a b c spasi
Kode : 00 1 01
Input : aa_b
Output : 110010001
Simbol : NYT a b c spasi
Kode : 00 1 0001 001
Input : aa_bb
Output : 1100100010001
Simbol : NYT a b c spasi
Kode : 00 1 0001 001
Konvert
Input : aa_bb
Output : 1010011111
Simbol : NYT a b c spasi
Kode : 00 10 11 01
Input : aa_bbb
Output : 101001111111
Simbol : NYT a b c spasi
Kode : 00 10 11 01
Input : aa_bbb_
Output : 10100111111101
Simbol : NYT a b c spasi
Kode : 00 10 11 01
Input : aa_bbb_c
Output : 10100111111101001
Simbol : NYT a b c spasi
Kode : 00 10 11 001 01
Input : aa_bbb_cc
Output : 10100111111101001001
Simbol : NYT a b c spasi
Kode : 00 10 11 001 01
Konvert Tree
Input : aa_bbb_cc
Output : 101001111111010000
Simbol : NYT a b c spasi
Kode : 00 10 11 00 01
c
Q&A
Thank You
Tugas.....