Professional Documents
Culture Documents
Aditya Rizkiadi Chernadi - 13506049 Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung, Jl. Ganesha 10 Bandung 40132, Indonesia If16049@students.if.itb.ac.id
Abstraksi Algoritma Huffman (Huffman Coding) adalah sebuah algoritma entropi encoding yang digunakan pada kompresi lossless data. Kompresi lossless data adalah sebuah kelas algoritma kompresi data yang memungkinkan data orisinil direkonstruksi secara utuh dari data terkompresinya. Teknik Huffman Coding digunakan dengan membuat pohon biner, lalu dilanjutkan ke tahap encoding dan diselesaikan pada tahap decoding. Prinsip utama dari algoritma ini adalah encoding yang dilakukan terhadap karakter yang memiliki frekuensi cukup tinggi dengan serangkaian bit yang lebih panjang. Index Terms Huffman Coding, string, biner, pohon, kode, prefiks.
I. PENDAHULUAN
File secara fisik terbentuk dari kumpulan karakter yang menjadi suatu kesatuan. File yang memuat banyak karakter yang beragam dapat menimbulkan problematika pada media penyimpanan dan kecepatan transmisi data. Media penyimpanan yang terbatas, menekan semua orang untuk menemukan sebuah cara yang dapat digunakan untuk melakukan kompresi terhadap file. Saat ini terdapat banyak algoritma untuk melakukan kompresi data, seperti Arithmetic, Block-Sorting Lossless, Dynamic Markov Compression, LIFO, LZHUF, PPM, ataupun ShannonFano, namun algoritma-algoritma tersebut memiliki kekurangan dalam hal kemudahan implementasinya dibanding algoritma Huffman. Kompresi data adalah proses encoding informasi menggunakan lebih sedikit bit dibanding representasi awalnya yang belum ter-encode, dengan menggunakan skema encoding yang spesifik. Kompresi berguna untuk membantu mengurangi konsumsi sumber daya berharga seperti hard disk ataupun bandwidth. Tujuan dari penulisan makalah ini adalah untuk menyelidiki efektivitas Huffman Coding dalam kompresi lossless data. Langkah-langkah yang dilakukan penulis untuk mencapai tujuan tersebut adalah studi literatur dari referensi-referensi yang tersedia di internet.
Simbol A B C D
Dengan mengikuti ketentuan kode ASCII diatas, representasi rangkaian bit dari string ABACCDA : 0100000101000010010000010100001101000011010001 0001000001 Seperti yang dapat kita lihat, string yang terdiri hanya dari 7 karakter saja representasinya sudah sepanjang 56 bit. Pada pesan ABACCDA, kekerapan kemunculan A adalah 3, kekerapan B adalah 1, kekerapan C adalah 2, dan kekerapan D adalah 1.
Tabel 2. Tabel Kekerapan dan Peluang pada string ABACCDA
Simbol A B C D
Kekerapan 3 1 2 1
4
Gambar 1. Ilustrasi Pembentukan Pohon Huffman string ABACCDA
Simbol A B C D
Cara yang kedua adalah dengan menggunakan tabel kode Huffman. Sebagai contoh kita akan menggunakan kode Huffman pada Tabel 1 untuk merepresentasikan string ABACCDA. Dengan menggunakan Tabel 1 string tersebut akan direpresentasikan menjadi rangkaian bit : 0 110 0 10 10 1110. Jadi, jumlah bit yang dibutuhkan hanya 13 bit. Dari Tabel 1 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 011001010110, yaitu bit 0, dapat langsung disimpulkan bahwa kode bit 0 merupakan pemetaan dari simbol A. Kemudian baca kode bit selanjutnya, yaitu bit 1. Tidak ada kode Huffman 1, lalu baca kode bit selanjutnya, sehingga menjadi 11. Tidak ada juga kode Huffman 11, lalu baca lagi kode bit berikutnya, sehingga menjadi 110. Rangkaian kode bit 110 adalah pemetaan dari simbol B.
log n), karena dalam melakukan satu kali iterasi pada saat penggabungan dua buah pohon yang mempunyai frekuensi terkecil pada sebuah akar membutuhkan waktu O(log n), dan proses itu dilakukan berkali-kali hingga tersisa satu buah pohon Huffman saja, sehingga proses tersebut dilakukan sebanyak n kali.
Karakter g o p h e r
Kode 0 1 2 3 4 5
Untuk meng-encoding teks tersebut kita membutuhkan sebanyak: untuk karakter g 45.000 x 3 bit (000) = 135.000 bit untuk karakter o 13.000 x 3bit (001) = 39.000 bit untuk karakter p 12.000 x 3bit (010) = 36.000 bit untuk karakter h 16.000 x 3bit (011) = 48.000 bit untuk karakter e 9.000 x 3bit (100) = 27.000 bit untuk karakter r 5.000 x 3bit (101) = 15.000 bit
Karakter G O P H E R
Untuk meng-encoding teks tersebut kita membutuhkan sebanyak: untuk karakter g 45.000 x 8 bit (1100111) = 360.000 bit untuk karakter o 13.000 x 8bit (1101111) = 104.000 bit untuk karakter p 12.000 x 8bit (1110000) = 96.000 bit untuk karakter h 16.000 x 8bit (1101 000 ) = 128.000 bit untuk karakter e 9.000 x 8bit (1100101) = 72.000 bit untuk karakter r 5.000 x 8bit (1110010) = 40.000 bit Jumlah bit yang digunakan Kode ASCII untuk karakter g,o,p,h,e,r, = 360.000 + 104.000 + 96.000 + 128.000 + 72.000 + 40.000 = 800.000 bit
Jumlah bit yang digunakan 3-bit kode untuk karakter g,o,p,h,e,r, = 135.000 + 39.000 + 36.000 + 48.000 + 27.000 + 15.000 = 300.000 bit. Dengan Huffman Coding: Karakter g o p h e r Kekerapan 45.000 13.000 12.000 16.000 9.000 5.000 Peluang 45/100 13/100 12/100 16/100 9/100 5/100 Kode Huffman 0 101 100 111 1101 1100
Untuk meng-encoding teks tersebut kita membutuhkan sebanyak: untuk karakter g 45.000 x 1 bit (0) = 45.000 bit untuk karakter o 13.000 x 3bit (101) = 39.000 bit untuk karakter p 12.000 x 3bit (110) = 36.000 bit untuk karakter h 16.000 x 3bit (111) = 48.000 bit untuk karakter e
9.000 x 4bit (1101) = 36.000 bit untuk karakter r 5.000 x 4bit (1100) = 20.000 bit
PERNYATAAN
Jumlah bit yang digunakan kode huffman untuk karakter g,o,p,h,e,r = 45.000 + 39.000 + 36.000 + 48.000 + 36.000 + 20.000 = 224.000 bit Dari data diatas kita dapat lihat bahwa dengan menggunakan kode ASCII untuk meng-encoding teks tersebut membutuhkan 800.000 bit, sedangkan dengan menggunakan 3-bit kode dibutuhkan 300.000 bit dan dengan menggunakan kode Huffman hanya membutuhkan 224.000. Jadi, untuk kasus tersebut algoritma huffman dapat mengompres teks sebesar 70% dibandingkan kita menggunakan kode ASCII dan sebesar 25,3% dibandingkan kita menggunakan 3-bit kode. Dengan ini saya menyatakan bahwa makalah yang saya tulis ini adalah tulisan saya sendiri, bukan saduran, atau terjemahan dari makalah orang lain, dan bukan plagiasi. Bandung, 29 April 2010 ttd
VII. KESIMPULAN
1. Algoritma Huffman adalah salah satu algoritma kompresi, yang banyak digunakan dalam kompresi teks. 2. Terdapat 3 tahapan dalam menggunakan algoritma Huffman, yaitu: membentuk pohon Huffman, melakukan encoding dengan menggunakan pohon Huffman, melakukan decoding 3. Algoritma Huffman mempunyai kompleksitas waktu O(n log n). 4. Algoritma Huffman adalah salah satu algoritma yang menggunakan prinsip algoritma greedy dalam penyusunan pohon Huffman 5. Dari hasil pengujian yang dilakukan, algoritma Huffman dapat mengompres teks sekitar 70% jika dibandingkan dengan menggunakan kode ASCII dan sekitar 25% jika dibandingkan dengan kita menggunakan 3-bit kode.