VOLUME 5, DESEMBER 04 Sitti Zuhriyah Sistem Komputer, STMIK Handayani Makassar zuhriyahsompa@yahoo.com Abstrak Di dalam dunia komputer, semua informasi, baik berupa tulisan, gambar ataupun suara semuanya disimbolkan dengan kode biner, yaitu deretan angka 0 dan yang mewakili suatu simbol. David A. Huffman dalam tulisannya A Method for the Construction of Minimum- Redundancy Codes memberikan suatu alternatif untuk memperkecil ukuran data yang sangat berguna dalam hal pengiriman ataupun penyimpanan data. Aplikasi penggambar pohon biner Huffman untuk data teks ini menerima input berupa teks dan kemudian berdasarkan input tersebut, menghitung frekuensi kemunculan tiap karakter di dalamnya, menggambarkan pohon biner huffman dan terakhir membuat tabel kode Huffman. Aplikasi ini juga dapat menggambarkan proses menggambar pohon biner Huffman secara bertahap sehingga dapat membantu untuk memahami proses menggambar pohon Huffman. Kata Kunci : Pohon Biner, Huffman, Kompresi 9
VOLUME 5, DESEMBER 04 I. PENDAHULUAN Perkembangan teknologi yang semakin pesat mendorong kemajuan perkembangan teknologi informasi. Berbagai sarana dan fasilitas dijadikan media untuk memberikan ataupun mendapatkan informasi. Akses internet pun hampir menjadi suatu komponen yang tidak terpisahkan dari kehidupan perkantoran. Informasi berupa tulisan, gambar ataupun suara terus menerus dikirim dan diterima untuk berbagai macam keperluan. Namun, tidak semua pengguna media informasi mengetahui bahwa semua informasi baik berupa tulisan, gambar, ataupun suara semua disimbolkan dengan kode biner, yaitu deretan angka 0 dan yang mewakili sebuah simbol. Misalnya huruf A di dalam teks disimbolkan dengan kode ASCII berukuran 8 bit yaitu 000000. Dengan demikian jumlah bit untuk mewakili n huruf adalah 8 n bit. Sedangkan dalam penyebaran ataupun penerimaan informasi huruf atau gambar yang biasa digunakan berjumlah puluhan bahkan ratusan. David A. Huffman dalam tulisannya "A Method for the Construction of Minimum- Redundancy Codes" menawarkan suatu metode untuk membangun kode-kode yang optimum. Pada saat kode-kode yang optimum digunakan, jumlah digit yang diperlukan dalam pengkodean menjadi lebih sedikit. Hal ini berguna dalam penyimpanan data yang lebih kecil dan waktu pengiriman data informasi yang lebih singkat. Mengingat data atau pesan yang sering dikirim ataupun diterima seringkali berukuran sangat besar. Dalam tulisannya Huffman menjelaskan suatu metode untuk menentukan pengkodean simbol yang optimum berdasarkan probabilitas kemunculan kode tersebut di dalam sekumpulan kode. Hasil akhir dari algoritma Huffman adalah kamus kode yang optimum untuk suatu kumpulan kode. Jika karakter-karakter pada data teks yang biasanya dikodekan dengan kode ASCII digantikan dengan kode Huffman, maka panjang keseluruhan kumpulan kode menjadi lebih pendek. Sehingga memungkinkan ukuran penyimpanan data yang lebih kecil atau waktu pengiriman data yang lebih singkat. II. TINJAUAN PUSTAKA.. Pohon Biner Di dalam ilmu matematika pohon ( tree) adalah graf yang tidak berarah terhubung tetapi tidak mengandung sirkuit [], sedangkan pohon biner adalah pohon berakar dimana setiap simpul cabangnya mempunyai paling banyak dua buah anak. Di dalam ilmu komputer, pohon atau Tree adalah suatu struktur data yang terdiri dari simpul-simpul atau nodes yang terhubung satu sama lain. Jika hubungan antar simpul digambarkan, akan menyerupai sosok pohon nyata. Tiap simpul di dalam suatu pohon dapat memiliki atau tidak memiliki anak atau orangtua. Tiap simpul dapat memiliki maksimal satu orangtua, sedangkan jumlah anak yang dapat dimiliki suatu simpul adalah tidak terbatas. Gambar.. pohon biner 30
VOLUME 5, DESEMBER 04.. Pohon Biner Huffman Data di dalam komputer disimpan dalam bytes. Pengkodean Huffman adalah suatu teknikkompresi lossless yang memanfaatkan kenyataan bahwa tidak semua byte muncul dengan frekuensi yang sama dalam suatu data[]. Dengan begitu, penghematan ukuran data dapat dicapai memvariasikan panjang kode yang mewakili simbol-simbol di dalam data tersebut. Simbol yang lebih sering ditemukan dikodekan dengan jumlah bit yang lebih sedikit. Hal ini dapat dicapai dengan langkah-langkah berikut: Kompresi lossless yang memanfaatkan kenyataan bahwa tidak semua byte muncul dengan frekuensi yang sama dalam suatu data[]. Dengan begitu, penghematan ukuran data dapat dicapai memvariasikan panjang kode yang mewakili simbol-simbol di dalam data tersebut. Simbol yang lebih sering ditemukan dikodekan dengan jumlah bit yang lebih sedikit. Hal ini dapat dicapai dengan langkah-langkah berikut:. Buat daftar frekuensi kemunculan setiap simbol.. Dengan informasi frekuensi kemunculan simbol-simbol tersebut, bangun suatu pohon biner Huffman. a. Buat daftar daun yang mewakili setiap simbol di dalam data. Asosiasikan setiap daun dengan frekunsi kemunculan simbol yang diwakilinya. b. Pilih dua daun (atau simpul) yang memiliki frekuensi terendah. Keluarkan simpul-simpul tersebut dari daftar. c. Buat sebuah simpul baru yang mewakili gabungan dari kedua daun (atau simpul) yang dikeluarkan sebelumnya. d. Jadikan kedua daun yang dikeluarkan sebagai anak dari simpul baru. Asosiasikan simpul baru dengan total frekuensi dari kedua anaknya. 3. Ulangi proses di atas sampai hanya tersisa satu buah simpul. Simpul ini akan menjadi simpul yang teratas dan oleh karena itu merupakan simpul akar. Sebagai contoh, misalkan kita memiliki data teks ada uang ada barang, yang jika dikodekan dengan kode ASCII sebagai berikut: 0000000000000000000000000000000000000000000 0000000000000000000000000000000000000000 Data tersebut terdiri dari 5 bit. Data tersebut akan dikompresi dengan menggunakan Huffman. III. PEMBAHASAN Pada contoh data teks ada uang ada barang dengan kode ASCII sebagai berikut : 00000000000000000000000000000000000000000000 000000000000000000000000000000000000000. Yang mengandung 5 bit akan dikompresi dengan menggunakan Pohon Huffman. Pertama yang kita lakukan adalah membuat daftar frekuensi sebagai berikut: Tabel 3.. Simbol b u r n g d <spasi> a Frekuensi 3 7 3
VOLUME 5, DESEMBER 04 Kemudian dari daftar frekuensi kita buat daun-daun yang mewakili setiap simbol dan mengasosiakan simbol tersebut dengan frekuensinya. Seperti gambar berikut: b, u, r, n, g, d, spa, 3 Gambar 3.: Daftar Daun Simbol Setelah itu daun b dan u akan dibuat daun yang baru yaitu bu, daun bu akan menjadi orantua dari simpul b dan u. lalu menyisipkannya ke dalam daftar sesuai dengan posisi frekuensinya. Ditunjujjan dengan gambar sebagai berikut: r, n, g, d, bu, spa, b, r, Gambar 3. :Langkah Kedua Membuat Pohon Biner Huffman Selanjutnya dilakukan dengan cara yang sama secara berulang sehingga terbentuk pohon Huffman yang baru seperti berikut g, d, bu, spa,3 b, u, r, n, Gambar 3.3 :Langkah Ketiga Membuat Pohon Biner Huffman bu, spa,3 b, u, r, n, g, d, Gambar 3.4 :Langkah Keempat Membuat Pohon Biner Huffman r, n, g, d, bu, b, u, 3
VOLUME 5, DESEMBER 04 Gambar 3.5 :Langkah Kelima Membuat Pohon Biner Huffman rngd,7 bu, b, u, r, n, g, d, Gambar 3.6 :Langkah Keenam Membuat Pohon Biner Huffman rngd,7 bu<sp>a, r, n, g, d, bu, b, u, Gambar 3.7: Langkah Ketujuh Membuat Pohon Biner Huffman rngdbu<sp>a,9 0 rngd,7 bu<sp>a, 0 0 a, 0 0 0 r, n, g, d, bu, 0 b, u, Gambar 3.8: Langkah Kedelapan Membuat Pohon Biner Huffman 33
VOLUME 5, DESEMBER 04 Dengan menelusuri pohon biner Huffman yang telah dibuat, kita dapat membuat tabel kode Huffman sebagai berikut: Tabel 3.: tabel kode Huffman Simbol Frekuensi Kode Huffman r n g d b u <spasi> a 3 7 000 00 00 0 000 00 0 Sehingga pesan teks ada uang ada barang jika disimbolkan dengan kode Huffman maka menjadi, 000000000000000000000 Data hasil kompresi data kode ASCII ke kode Huffman menjadi 5 bit. Jika dibandingkan dengan 5 bit sebelum kompresi, maka data ini jauh lebih pendek dari data sebelum dikompresi. Akan tetapi, agar dapat didekompresi menjadi data semula, tentunya tabel kode Huffman yang telah dibuat pada saat proses kompresi perlu disertakan pada data hasil kompresi. Hal ini akan mengakibatkanmeningkatnya ukuran data. Peningkatan ukuran data tersebut sangat bergantung dengan pengkodean tabel Huffman tersebut. Penggambaran atau pembangunan tabel kode Huffman tersebut akan dibahas pada penelitian selanjutnya. IV. KESIMPULAN Kesimpulan dari penelitian ini adalah bahwa kode Huffman bisa digunakan untuk mengkompresi data teks, sehingga dapat menghemat sistem penyimpana data informasi serta mempercepat waktu pengiriman informasi. DAFTAR PUSTAKA [] Huffman, David A., 95. A Method for the Construction of Minimum-Redundancy Codes, Proceedings of I.R.E. (September 95) [] Zulen, Alvin Andhika. "Penerapan Pohon Biner Huffman Pada Kompresi Citra", http://www.informatika.org/~rinaldi/matdis/008-009/makalah008/makalah0809-077.pdf. Diakses 08/0/0. [3] http://en.wikipedia.org/wiki/selection_sort. Diakses pada 9 Februari 0.. 34