Anda di halaman 1dari 19

Bab II Tinjauan Pustaka

BAB II TINJAUAN PUSTAKA DAN LANDASAN TEORI


2.1 Tinjauan Pustaka Metode kompresi Huffman bukanlah merupakan metode baru. Sistem ini telah banyak diimplementasikan dan terus berkembang seiring dengan perkembangan teknologi. Diantaranya pernah dijelaskan pada beberapa literatur yang pernah penulis baca dan menjadikannya sebagai acuan ,yaitu : 1. David Solomon, Data Compression The Complete Reference Fourth Edition . Buku ini berisi tentang kumpulan metode kompresi data baik teks, gambar, suara maupun video [1]. 2. Irwan Wardoyo, Kompres Text dengan Menggunakan Metode Huffman. Makalah ini berisi tentang metode kompresi teks dengan menggunakan metode Static Huffman Code [2]. 3. Yeuan-Kuen Lee, Huffman Coding. Power point yang diambil dari

internet berisi tentang penjelasan dari Huffman Code dan Adaptive Huffman Code [3]. Dari beberapa literatur tersebut, rasio kompresi merupakan salah satu hal yang harus dipertimbangkan. Metode Adaptive Huffman Code adalah metode yang digunakan oleh penulis untuk proyek akhir kali ini. Pengkodean secara adaptif menjadi pertimbangan penulis untuk menghasilkan rasio yang lebih baik dibandingkan Metode Huffman Code.

2.2

Kompresi Data Kompresi data atau pemampatan data adalah suatu proses pengubahan

sekumpulan data menjadi suatu bentuk kode untuk menghemat kebutuhan tempat penyimpanan data dan waktu transmisi data. Saat ini kompresi data sangat dibutuhkan untuk menghemat ruang penyimpanan, untuk menghemat biaya pengiriman data dari komputer satu ke komputer lainnya serta untuk mempercepat proses transfer data. Kompresi data mereduksi ukuran file dengan cara menghilangkan redudansi atau kemunculan berulang-ulang dari bagian file. Gambar 2.1 adalah blok dasar dari kompresi data.

Muhammad Abdul Jabbar Hussein (091344018) Laporan Tugas Akhir Tahun 2013

Bab II Tinjauan Pustaka

Kompresi
Data BitStream

Dekompresi
Gambar 2.1 Blok dasar kompresi dan dekompresi data

Data asli : merupakan data input yang dikompresi, bisa berupa file text, file image dsb, sekaligus sebagai output dari proses dekompresi data. Box kompresi/Dekompresi data : merupakan pemampatan data dan pengembalian file ke dalam bentuk semula. Data hasil kompresi : merupakan keluaran dari proses kompresi data.

2.2.1

Faktor Penting Kompresi Dalam kompresi data, terdapat 4 (empat) faktor penting yang perlu

diperhatikan, yaitu : Time Process (waktu yang dibutuhkan dalam menjalankan proses), Completeness (kelengkapan data setelah file-file tersebut dikompres), Ratio compress (ukuran data setelah dilakukan kompresi), Optimaly(perbandingan apakah ukuran file sebelum dikompres sama atau tidak sama dengan file yang telah dikompres). Tidak ada metode kompresi yang paling efektif untuk semua jenis file.

2.2.2

Klasifikasi Teknik Kompresi

a. Entropy Encoding 1. Bersifat lossless 2. Tekniknya tidak berdasarkan media dengan spesifikasi dan karakteristik tertentu namun berdasarkan urutan data. 3. Statistical encoding, tidak memperhatikan semantik data. 4. Misal: Run-length coding, Huffman coding , Arithmetic coding.

Muhammad Abdul Jabbar Hussein (091344018)

Bab II Tinjauan Pustaka

b. Source Coding 1. Bersifat lossy 2. Berkaitan dengan data semantik (arti data) dan media. 3. Misal: Prediction (DPCM, DM), Transformation (FFT, DCT), Layered Coding (Bit position, subsampling , sub-band coding), Vector quantization c. Hybrid Coding 1. Gabungan antara lossy + lossless 2. Misal: JPEG, MPEG, H.261, DVI

2.2.3 a.

Sifat Kompresi Berdasarkan Hasil

Lossy Compression Teknik kompresi lossy ini tidak hanya menghilangkan redundansi saja

akan tetapi juga menghilangkan atau membuang bit-bit yang kurang dominan atau dianggap kurang perlu sehingga akan menghasilkan jumlah bit yang kecil. Tentu saja ini tidak bisa dilakukan pada file teks atau program, karena setiap bagian file ini penting . Kompresi lossy umumnya dilakukan pada data multimedia, seperti gambar, audio atau video. Sebagai contoh pada file audio, dengan membuang data suara dengan frekuensi di luar selang 20 Hz-20 KHz, cukup banyak penciutan ukuran yang dicapai. Telinga manusia tidak dapat mendengarkan suara di luar selang tersebut, sehingga data yang dibuang memang tidak ada gunanya . Begitu juga dengan file gambar, karena file gambar tidak mengutamakan ketelitian tetapi visualisasi objek yang dilihat mata manusia , maka teknik kompresi lossy ini cocok digunakan untuk file gambar. [4]

b. Lossless Kompresi lossless digunakan untuk mengkompresi data yang tidak bisa mengalami perbedaan/perubahan dari aslinya. Dengan kata lain, kompresi lossless digunakan untuk representasi data yang mengharuskan bersifat lossless, tidak ada satu pun dari bit data hilang/rusak, karena kerusakan 1 bit saja akan mengakibatkan data menjadi tidak berguna. Teknik lossless umumnya akan mencari pola-pola yang terdapat pada file yang ingin dikompresi. Teknik ini akan

Muhammad Abdul Jabbar Hussein (091344018) Laporan Tugas Akhir Tahun 2013

Bab II Tinjauan Pustaka

menghasilkan rasio ukuran yang lebih kecil pada file yang memiliki tingkat pengulangan pola yang sedikit, misalnya karena mengandung banyak informasi yang unik, tidak akan diperoleh rasio yang baik. Oleh karena itu, teknik ini sangat cocok digunakan untuk mengkompresi data alfanumerik baik berupa teks ataupun numerik . Gambar 2.2 merupakan skema metode kompresi.
Metode

Losless

Lossy

Statistical Method

Dictionary Based

Character Oriented

Shannon Fano

Arithmetic

Huffman

LZ77

LZW

Rung Length

Gambar 2.2 Skema metode kompresi

Secara umum Kompresi data lossless diimplementasikan dengan menggunakan salah satu jenis pemodelan berikut : Dictionary Based, Statistical Method, atau Character Oriented.

2.3

Statistical Method Metode statistik ini adalah suatu cara penyingkatan simbol atau kata dalam

teks dengan cara memperpendek simbol/kata

yang memiliki frekuensi

kemunculan terbanyak, karakter yang sering muncul jumlah bitnya dibuat lebih pendek dari yang jarang muncul, seperti pada algoritma Shannon Fano dan Huffman code. Pada metode ini, aliran data yang dikompresi akan melewati dua fase, yaitu : pemodelan dan pengkodean.

Muhammad Abdul Jabbar Hussein (091344018) Laporan Tugas Akhir Tahun 2013

Bab II Tinjauan Pustaka

Pemodelan diawali dengan menghitung probabilitas kemunculan tiap simbol pada suatu input, kemudian membentuk suatu tabel translasi dengan mengikuti aturan sebagai berikut : 1. 2. Tiap-tiap simbol dikodekan dengan kombinasi bit yang berbeda. Simbol dengan probabilitas kemunculan tinggi dikodekan dengan jumlah bit yang lebih sedikit. 3. Walaupun panjang kodenya berbeda, kode-kode tersebut dapat didekode secara unik. Ada dua macam metode pemodelan pada pada statistical method [5], yaitu metode pemodelan statis dan pemodelan adaptif. Gambar 2.3 menunjukkan proses dari metode pemodelan statis. Pada proses kompresi dengan model statis ini terdiri dari dua kali pembacaan. Yang pertama adalah membaca seluruh file data yang kemudian akan didapat model berupa tabel frekuensi kemunculan simbol, kemudian membangun kode-kode berdasarkan model yang ada.
Pembacaan Simbol
simbol

Pengkodean

kode

Penulisan Kode dan Tabel Frekuensi


Bit-bit kode

Proses Kompresi

Pemodelan

Model Kompresi Tabel Frekuensi

Penulisan Simbol

Simbol

Pengkodean Balik

Kode

Pembacaan Kode dan Tabel Frekuensi

Proses Dekompresi

Tabel Frekuensi

Pemodelan

Gambar 2.3 Proses kompresi dan dekompresi dengan model statis

Muhammad Abdul Jabbar Hussein (091344018) Laporan Tugas Akhir Tahun 2013

Bab II Tinjauan Pustaka

Pembacaan yang kedua adalah membaca satu per satu simbol file data sambil dikodekan berdasarkan kode yang telah terbentuk. Setelah itu model yang telah terbentuk dikirimkan untuk proses dekompresi. Pada proses dekompresi dilakukan pembacaan bit-bit hasil kompresi sambil mencocokkan dengan tabel kode yang pada akhirnya akan dihasilkan simbol-simbol file data aslinya. Sedangkan pada metode pemodelan adaptif, data tidak perlu dibaca terlebih dulu untuk menghitung statistiknya, tetapi statistik itu secara

berkelanjutan diubah setiap pembacaan dan pengkodean sebuah karakter baru. Gambar 2.4 menunjukkan proses dari metode pemodelan adaptif.

Pembacaan Simbol
simbol

simbol

Pengkodean

kode

Penulisan Kode
Proses Kompresi

Kompresi

Model

Tabel

Bit-bit kode

Pembaharuan Model

Pemodelan

Penulisan Simbol

Simbol

Pengkodean Balik
Model

Kode

Pembacaan Kode
Proses Dekompresi

Simbol

Pembaharuan Model

Tabel Frekuensi

Pemodelan

Gambar 2.4 Proses kompresi dan dekompresi dengan model adaptif

2.4

Dekompresi Data Dekompresi atau pemulihan data adalah pengambilan aliran (stream)

kode-kode dan perubahan ke dalam bentuk simbol-simbol. Dekompresi ini dapat dikatakan pula sebagai teknik pengembalian data ke keadaan awal dengan cara menginverskan proses awal yang dilakukan dengan menggunakan kode kunci (model) yang diikutkan ke dalam file kompresi .

Muhammad Abdul Jabbar Hussein (091344018) Laporan Tugas Akhir Tahun 2013

Bab II Tinjauan Pustaka

2.5

Huffman Code Algoritma Huffman, yang dibuat oleh seorang mahasiswa MIT bernama

David Huffman pada tahun 1952, merupakan salah satu metode paling lama dan paling terkenal dalam kompresi teks . Algoritma Huffman menggunakan prinsip pengkodean yang mirip dengan kode Morse, yaitu tiap karakter (simbol) dikodekan hanya dengan rangkaian beberapa bit, dimana karakter yang sering muncul dikodekan dengan rangkaian bit yang pendek dan karakter yang jarang muncul dikodekan dengan rangkaian bit yang lebih panjang. Berdasarkan tipe peta kode yang digunakan untuk mengubah pesan awal (isi data yang diinputkan) menjadi sekumpulan codeword, algoritma Huffman termasuk kedalam kelas algoritma yang menggunakan metode statik . Metoda statik adalah metoda yang selalu menggunakan peta kode yang sama, metoda ini membutuhkan dua fase (two-pass): fase pertama untuk menghitung probabilitas kemunculan tiap simbol dan menentukan peta kodenya, dan fase kedua untuk mengubah pesan menjadi kumpulan kode yang akan di taransmisikan. Sedangkan berdasarkan teknik pengkodean simbol yang digunakan, algoritma Huffman menggunakan metode symbolwise. Metoda symbolwise adalah metode yang menghitung peluang kemunculan dari setiap simbol dalam satu waktu, dimana simbol yang lebih sering muncul diberi kode lebih pendek dibandingkan simbol yang jarang muncul.[2]

2.5.1

Pembentukan Huffman Tree Kode Huffman pada dasarnya merupakan kode prefiks (prefix code). Kode

prefiks adalah himpunan yang berisi sekumpulan kode biner, dimana pada kode prefik ini tidak ada kode biner yang menjadi awal bagi kode biner yang lain. Kode prefix biasanya direpresentasikan sebagai pohon biner yang diberikan nilai atau label. Untuk cabang kiri pada pohon biner diberi label 0, sedangkan pada cabang kanan pada pohon biner diberi label 1. Rangkaian bit yang terbentuk pada setiap lintasan dari akar ke daun merupakan kode prefiks untuk karakter yang berpadanan. Pohon biner ini biasa disebut pohon Huffman.

Muhammad Abdul Jabbar Hussein (091344018) Laporan Tugas Akhir Tahun 2013

10

Bab II Tinjauan Pustaka

Langkah-langkah pembentukan pohon Huffman adalah sebagai berikut[2]: 1. Baca semua karakter di dalam teks untuk menghitung frekuensi kemunculan setiap karakter. Setiap karakter penyusun teks dinyatakan sebagai pohon bernode tunggal. Setiap node di-assign dengan frekuensi kemunculan karakter tersebut, lalu sorting. 2. Gabungkan dua buah pohon yang mempunyai frekuensi terkecil pada sebuah akar. Setelah digabungkan akar tersebut akan mempunyai frekuensi yang merupakan jumlah dari frekuensi dua buah pohonpohon penyusunnya. 3. Ulangi langkah 2 sampai hanya tersisa satu buah pohon Huffman. Agar pemilihan dua pohon yang akan digabungkan berlangsung cepat, maka semua yang ada selalu terurut menaik berdasarkan frekuensi. Gambar 2.5 merupakan diagram alir proses pembentukan pohon Huffman.

Gambar 2.5 Diagram alir pembentukan Huffman tree

Sebagai contoh, dalam kode ASCII string 7 huruf ABCDACA membutuhkan representasi 7 8 bit = 56 bit , dengan rincian yang ditunjukan pada Tabel 2.1 dan Gambar 2.6.

Muhammad Abdul Jabbar Hussein (091344018) Laporan Tugas Akhir Tahun 2013

11

Bab II Tinjauan Pustaka

Tabel. 2.1 Kode ASCII untuk karakter ABCD

Simbol A B C D

Kode ASCII 01000001 01000010 01000011 01000100

Gambar 2.6 Huffman tree untuk karakter ABCDACA

2.5.2

Proses Encoding Huffman Code Encoding adalah cara menyusun string biner dari teks yang ada. Proses

encoding untuk satu karakter dimulai dengan membuat pohon Huffman terlebih dahulu. Setelah itu, kode untuk satu karakter dibuat dengan menyusun nama string biner yang dibaca dari akar sampai ke daun pohon Huffman. Langkah-langkah untuk men-encoding suatu string biner pada Static Huffman adalah sebagai berikut : 1. Tentukan karakter yang akan di-encoding 2. Mulai dari akar, baca setiap bit yang ada pada cabang yang bersesuaian sampai ketemu daun dimana karakter itu berada 3. Ulangi langkah 2 sampai seluruh karakter di-encoding Sebagai contoh kita dapat melihat Tabel 2.2, yang merupakan hasil encoding untuk pohon Huffman pada Gambar 2.6

Muhammad Abdul Jabbar Hussein (091344018) Laporan Tugas Akhir Tahun 2013

12

Bab II Tinjauan Pustaka

Tabel 2.2 Codebook Huffman code untuk karakter ABCD

Simbol A B C D Dengan

Frekuensi 3 1 2 1

Probability 3/7 1/7 2/7 1/7 kode

Kode Huffman 1 010 01 011 pesan ABACCDA

menggunakan

Huffman,

direpresentasikan menjadi :1010010111011 Sehingga, dengan menggunakan kode Huffman jumlah bit yang dibutuhkan untuk string ABACCDA hanya 13 bit. Kode untuk setiap simbol tidak boleh merupakan awalan dari kode yang lain sebab akan menimbulkan keraguan (ambigou) dalam proses decoding. Untuk menentukan bahwa kode harus unik dan karakter yang sering muncul jumlah bitnya kecil, dapat digunakan konsep pohon biner.

2.5.3

Proses Decoding Huffman Code Decoding merupakan kebalikan dari encoding. Decoding berarti menyusun

kembali data dari string biner menjadi sebuah karakter kembali. Decoding dapat dilakukan dengan dua cara, yang pertama dengan menggunakan pohon Huffman dan yang kedua dengan menggunakan tabel kode Huffman. Langkah-langkah men -decoding suatu string biner dengan menggunakan pohon Huffman adalah sebagai berikut : 1. Baca sebuah bit dari string biner. 2. Mulai dari akar 3. Untuk setiap bit pada langkah 1, lakukan traversal pada cabang yang bersesuaian. 4. Ulangi langkah 1, 2 dan 3 sampai bertemu daun. Kodekan rangkaian bit yang telah dibaca dengan karakter di daun. 5. Ulangi dari langkah 1 sampai semua bit di dalam string habis.

Muhammad Abdul Jabbar Hussein (091344018) Laporan Tugas Akhir Tahun 2013

13

Bab II Tinjauan Pustaka

Gambar 2.7 adalah proses dekode biner 011 sesuai gambar 2.6 :

Gambar 2.7 Proses decoding bit 011 menggunakan Huffman tree

Setelah ditelusuri dari akar, maka kita akan menemukan bahwa string yang mempunyai kode Huffman 011 adalah karakter D. Cara yang kedua adalah dengan menggunakan tabel kode Huffman. Sebagai contoh kita akan menggunakan kode Huffman pada Tabel 2.2 untuk merepresentasikan string ABCDACA. Dengan menggunakan Tabel 2.2 string tersebut akan direpresentasikan menjadi rangkaian bit : 1 010 01 011 1 011 . Jadi, jumlah bit yang dibutuhkan hanya 13 bit. Dari Tabel 2.2 tampak bahwa kode untuk sebuah simbol/karakter tidak boleh menjadi awalan dari kode simbol yang lain guna menghindari keraguan (ambiguitas) dalam proses dekompresi atau decoding . Karena tiap kode Huffman yang dihasilkan unik, maka proses decoding dapat dilakukan dengan mudah. Contoh: saat membaca kode bit pertama dalam rangkaian bit 1010010111011 , yaitu bit 1, dapat langsung dinodekan bahwa kode bit 1 merupakan pemetaan dari simbol A. Kemudian baca kode bit selanjutnya, yaitu bit 0. Tidak ada kode Huffman 0, lalu baca kode bit selanjutnya, sehingga menjadi 01. Tidak ada juga kode Huffman 01, lalu baca lagi kode bit berikutnya, sehingga menjadi 010. Rangkaian kode bit 010 adalah pemetaan dari simbol B, dan Seterusnya hingga bitstream sudah terbaca semua.

Muhammad Abdul Jabbar Hussein (091344018) Laporan Tugas Akhir Tahun 2013

14

Bab II Tinjauan Pustaka

2.6

Adaptive Huffman Code Pengembangan dari Huffman Code adalah Adaptive Huffman Code.

Adaptive Huffman Code pertama kali

ditemukan oleh Faller dan Gallager,

selanjutnya dikembangkan oleh Knuth. Versi terakhir dari Adaptive Huffman Code diuraikan oleh Jeffrey Scott Vitter. Berbeda dengan Huffman Code yang membutuhkan dua fase, Adaptive Huffman Code hanya membutuhkan satu fase dalam kompresi data, dimana proses penghitungan frekuensi karakter dan pembuatan pohon Huffman identik di encoder dan decoder dilakukan secara adaptif pada saat membaca data. Pada Huffman code, statistik-statistik pada kompresi data biasanya dibawa bersama data yang sudah dikodekan untuk dipakai oleh pendekompres data. Cara ini mempunyai masalah jika statistik-statistik untuk model tersebut

mengkonsumsi lebih banyak ruang dari data terkompresi sendiri. Kompresi data adaptif adalah solusi untuk masalah ini. Dalam metode Kompresi data adaptif, pengkompresi dan pendekompresi memulai proses dengan fixcode yang sama. Dalam pembuatan model fixcode, variabel yang digunakan adalah e dan r. Kedua variabel tersebut diperoleh dari m = 2e + r. dimana m

adalah jumlah karakter dalam fixcode yang digunakan. Dengan aturan sebagai berikut: Untuk urutan karakter ke 1 sampai 2r, karakter direpresentasikan sebanyak e +1 bit dari nilai urutan karakter - 1. Untuk urutan karakter ke 2r + 1 sampai akhir, karakter direpresentasikan sebanyak e bit dari nilai urutan karakter - r - 1. Pengkompresi mengkodekan sebuah simbol dengan menggunakan model yang ada, lalu meng-update model tersebut untuk memproses simbol berikutnya. Pendekompresi melakukan cara yang sama. Sepanjang algoritma, pohon Huffman terbentuk identik untuk kompresi dan dekompresi, proses dapat berjalan tanpa perlu mengirimkan statistik-statistik dari kompresi ke dekompresi. Setiap kali simbol dibaca, maka simbol tersebut langsung dikodekan. Untuk satu simbol yang sama, kemungkinan hasil pengkodeannya berbeda, hal ini disebabkan karena setiap kali membaca simbol dilakukan penyesuaian pohon.[3]

Muhammad Abdul Jabbar Hussein (091344018) Laporan Tugas Akhir Tahun 2013

15

Bab II Tinjauan Pustaka

2.6.1

Pembentukan Huffman Tree Prinsip dari pohon Huffman Adaptive Huffman Code, yaitu : 1. Setiap node, kecuali akar memiliki saudara kandung 2. Untuk setiap node di dalam pohon, bobot node akar bobot node kanan bobot node kiri 3. Node kanan diberi suksesor bit 1 dan node kiri diberi suksesor bit 0 4. Urutan setiap simbol berbanding lurus terhadap bobot simbol tersebut, semakin besar urutan maka akan semakin besar frekuensi simbol di dalam data yang sudah dibaca, demikian juga sebaliknya 5. Node-node yang semakin dekat dengan akar memiliki bobot yang semakin besar 6. Node dalam adalah orang tua dari node luar (node kanan dan node kiri) 7. Bobot node dalam adalah jumlah bobot node luarnya 8. Node-node yang memiliki bobot sama disimpan dalam sebuah blok Blok adalah list terurut dari node-node yang memiliki bobot sama. Blok

diurutkan mengecil berdasar angka urut yang dimiliki node-node tersebut, node yang pertama adalah node dengan angka urut terbesar. Setiap node yang terdapat di dalam pohon Huffman ini juga menyimpan sebuah informasi tambahan, yaitu angka urut. Angka urut adalah angka unik yang dimiliki oleh setiap node di dalam pohon, dalam arti tidak lebih dari satu node yang memiliki angka urut tersebut. Node-node dengan ketinggian yang sama akan memiliki angka urut terurut membesar dari kiri ke kanan. Angka urut diberikan kepada node ketika node tersebut pertama kali dibuat. Angka urut yang diberikan adalah angka urut terbesar yang belum digunakan oleh node-node yang lain. Angka urut terbesar ini didapatkan dari nilai maksimum kemungkinan jumlah node terbanyak. Perhitungannya adalah 2 kali jumlah fixcode dikurang 1. Pohon Huffman ini juga memiliki sebuah node khusus,yang disebut node NYT (Not Yet Transmitted). Ketika sebuah simbol yang belum terdapat di dalam pohon Huffman dikirimkan/dibaca, node NYT akan membentuk dua buah anak, anak kanan menyimpan informasi simbol baru tersebut, dan anak kiri menjadi node NYT yang baru. Anak kanan mempunyai angka urut lebih besar daripada anak kiri. Misal, jika angka urut terbesar yang belum digunakan adalah x, maka

Muhammad Abdul Jabbar Hussein (091344018) Laporan Tugas Akhir Tahun 2013

16

Bab II Tinjauan Pustaka

anak kanan mempunyai angka urut x, sedangkan anak kiri mempunyai angka urut (x-1). Pohon Huffman yang pertama kali terbentuk hanya memiliki sebuah node, yaitu node NYT. Seperti dijelaskan diatas, bahwa bobot akar bobot node kanan bobot node kiri, oleh karena itu, setiap node akan mengalami pertukaran posisi sesuai dengan nilai bobotnya. Ada beberapa hal yang perlu diperhatikan dalam menukar posisi node, antara lain : 1. Node akar dari pohon tidak boleh ditukar posisinya dengan apapun 2. Tidak diperbolehkan untuk menukar posisi suatu node dengan node orang tuanya atau leluhurnya 3. Angka urut dari dua buah simpul yang ditukar posisinya haruslah ditukar juga 4. Jika Node dalam melakukan pertukaran, node luarnnya mengikuti. 5. Node dalam dan node luar untuk simbol baru yang memiliki saudara kandung node NYT tidak melakukan pertukaran, pertukaran dimulai dari orangtua node NYT sebelumnya. Gambar 2.8 merupakan diagram alir proses pembentukan pohon Huffman pada Adaptive Huffman Code.

Gambar 2.8 Diagram alir pembentukan Huffman tree pada Adaptive Huffman Code

Muhammad Abdul Jabbar Hussein (091344018) Laporan Tugas Akhir Tahun 2013

17

Bab II Tinjauan Pustaka

Misal, dalam pengkodean deretan huruf

hal pertama yang dilakukan

adalah mendapatkan nilai maksimum kemungkinan jumlah node terbanyak dan pembentukan fixcode . Jika jumlah simbol yang dibuat dalam fixcode adalah deretan alfabet kapital (26 huruf), maka kemungkinan jumlah node maksimum adalah sebanyak 51 node (26 x 2 -1). Untuk model awal itu sendiri m = 26, sehingga e = 4 dan r 10. Oleh karena itu untuk simbol ke 1 sampai 20 (2r), maka modelnya adalah biner 0 sampai 19 (k -1) sebanyak 5 bit (e + 1). Dan simbol ke 21(2r+1) sampai 26, maka modelnya adalah biner 9 sampai 14(k-r-1) sebanyak 4 bit (e). Tabel 2.3 merupakan fixcode alfabet kapital :

Tabel 2.3 Fixcode adaptive Huffman code alfabet kapital

Simbol A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Urutan 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

Kode 00000 00001 00010 00011 00100 00101 00110 00111 01000 01001 01010 01011 01100 01101 01110 01111 10000 10001 10010 10011 1001 1010 1011 1100 1101 1110

Muhammad Abdul Jabbar Hussein (091344018) Laporan Tugas Akhir Tahun 2013

18

Bab II Tinjauan Pustaka

(1)

(2)

(3)

(4)

(5)

(6)

(7) = Tukar

(8)

Gambar 2.9(1-8) Proses pembentukan adaptive Huffman tree karakter ABCDACA

Muhammad Abdul Jabbar Hussein (091344018)

Bab II Tinjauan Pustaka

Gambar 2.9(1-8) adalah contoh urutan pembentukan pohon Huffman yang selalu beradaptasi setiap suatu simbol muncul untuk karakter ABCDACA.

2.6.2

Proses Encoding Adaptive Huffman Code Pada proses pengkodean, setiap simbol yang muncul pertama kali, dan

belum ada dalam pohon Huffman, selalu dikodekan bedasarkan model yang ada dalam fixcode diikuti dengan kode NYT. Selanjutnya memanggil update

procedure yang berfungsi untuk pembaharuan pohon Huffman. Bila simbol yang muncul sudah ada dalam pohon Huffman, maka simbol tersebut dikodekan sesuai urutan bit suksesor yang ada dalam cabang dari node akar hingga node simbol yang bersangkutan kemudian panggil update procedure. Gambar 2.10 merupakan diagram alir proses pengkodean Adaptive Huffman Code.

Gambar 2.10 Diagram alir encoder pada Adaptive Huffman Code

Muhammad Abdul Jabbar Hussein (091344018) Laporan Tugas Akhir Tahun 2013

20

Bab II Tinjauan Pustaka

Seperti dijelaskan sebelumnya, bahwa untuk setiap simbol baru yang pertama kali muncul akan dikodekan sesuai model yang ada pada fixcode diikuti dengan kode NYT. NYT dan simbol yang sudah pernah muncul dikodekan sesuai urutan bit suksesor dari cabang node akar hingga node yang bersangkutan. Gambar 2.11 adalah hasil pengkodean untuk karakter ABCDACA.

00000 0 00001 00 00010 100 00011 10 01 11


A NYT B NYT C NYT D A C A

Gambar 2.11 Bitstream hasil pengkodean ABCDACA

Dari proses pengkodean diatas, jumlah bit yang didapat hanya 32 bit. Dalam kode ASCII yang 1 simbolnya dikodekan 8 bit berarti karakter ABCDACA dikodekan sebanyak 56 bit (7 x 8 bit). Maka hasil dari pengkodean adaptive Huffman code mengalami pemampatan data.

2.6.3

Proses Decoding Adaptive Huffman Code Deretan bit hasil pengkodean bagian encoder akan dikembalikan pada

data semula oleh bagian decoder. Caranya adalah dengan pengecekan keberadaan simbol untuk deretan bit pada pohon Huffman di bagian ini. Jika belum ada , pembacaan bit dimulai dari node NYT. Jika node yang ditemui adalah node NYT, maka lakukan pengecekan lagi untuk nilai desimal bit sebanyak e. Misal nilai desimal bit sebanyak e adalah p, periksa apakah nilai p kurang dari r, jika iya baca 1 bit selanjutnya dan ubah bit-bit tersebut menjadi simbol sesuai fixcode yang ada kemudian update pohon Huffman. Jika tidak itu maka tambahkan nilai r dan p dan ubah bit-bit tersebut menjadi simbol sesuai fixcode yang ada. Bila node yang ditemui merupakan node yang memiliki simbol yang sudah muncul sebelumnya, maka ubah bit tersebut sesuai simbol yang terdapat pada node tersebut kemudian update pohon Huffman.

Muhammad Abdul Jabbar Hussein (091344018) Laporan Tugas Akhir Tahun 2013

21

Bab II Tinjauan Pustaka

Cara menentukan apakah bit yang ditemui itu node NYT atau node yang memiliki simbol, yaitu dengan pembacaan bit suksesor dari node akar hingga node yang bersangkutan. Gambar 2.12 merupakan diagram alir proses pendekodean Adaptive Huffman Code. Pada deretan bit 00000000001000001010000011100111 hasil pengkodean ABCDACA, Node pertama pada pohon Huffman tidak memiliki bit suksesor, maka bit tersebut langsung melakukan pengecekan nilai p, ternyata p kurang dari r (0 < 10), ubah bit 00000 sesuai fixcode yaitu A. selanjutnya update pohon Huffman. Bit selanjutnya merupakan suksesor node NYT kiri, maka baca e bit setelah bit tersebut dan ubah sesuai fixcode. Begitu seterusnya untuk simbol B,C dan D. jika pembacaan bit suksesor mengarah pada node yang sudah ada simbolnya maka ubah bit-bit suksesor tersebut sesuai simbol yang ada pada node tersebut, contoh bit 10 langsung diubah menjadi A. Begitu juga bit 01 untuk simbol C dan bit 11 untuk A.

Gambar 2.12 Diagram alir decoder pada Adaptive Huffman Code

Muhammad Abdul Jabbar Hussein (091344018) Laporan Tugas Akhir Tahun 2013

22

Anda mungkin juga menyukai