BAB 1
PENDAHULUAN
1.1 Latar Belakang
Pemampatan data (data compression) merupakan salah satu kajian di dalam ilmu komputer yang bertujuan untuk mengurangi ukuran file sebelum menyimpan atau memindahkan data tersebut ke dalam media penyimpanan (storage device). Media penyimpanan seperti floppy disk, hard disk dan CD (Compact Disc) mempunyai kapasitas yang terbatas. Jika data yang akan disimpan pada media penyimpanan semakin bertambah dan berukuran besar, maka media penyimpanan tidak dapat menyimpan data tersebut karena melebihi kapasitas. Oleh karena itu, untuk mengatasi masalah ini digunakanlah pemampatan data.
Pemampatan data terdiri dari dua proses utama yaitu pemampatan (compression) dan penirmampatan (decompression atau pemulihan data kembali seperti aslinya). Jika suatu file dimampatkan, maka file tersebut harus dapat dibaca kembali setelah file tersebut dinirmampatkan.
Ide pemampatan data adalah apabila frekuensi kemunculan karakter pada suatu data diketahui, terdapat suatu cara untuk mengkodekan karakter tersebut, sehingga dibutuhkan ruang yang lebih kecil dalam penyimpanan data. Metode pertama yang muncul untuk pemampatan data adalah Shanon-Fano coding. Shannon dan Fano (1948) mengembangkan algoritma yang menghasilkan sebuah kode dengan jumlah bit
yang lebih sedikit untuk setiap karakter yang terdapat data dengan membangun suatu pohon kode biner dari pada menggunakan kode yang mempunyai panjang tertentu seperti kode ASCII. Gambaran kode yang lebih pendek ini oleh Shannon disebut kode berpanjang peubah (variable length code). Jika frekuensi kemunculannya semakin tinggi, maka kodenya semakin pendek begitu juga sebaliknya. Pada tahun 1952 David Huffman memperkenalkan algoritma pemampatan yang dinamakan Huffman coding. Metode ini memakai hampir semua karakteristik dari Shannon-Fano coding. Prinsip kode Huffman adalah karakter yang paling sering muncul di dalam data dikodekan dengan kode yang lebih pendek, sedangkan karakter yang jarang muncul dikodekan dengan kode yang lebih panjang. Algoritma Huffman membangun pohon biner untuk menghasilkan kode prefix (prefix code).
Saat ini terdapat banyak algoritma pemampatan, antara lain LIFO, LZHUF, LZW, Dynamic Markov Compression, Run Length dan lain-lain, tetapi dalam tulisan ini digunakan algoritma Huffman dan Shannon-Fano, karena ke dua algoritma tersebut memiliki beberapa kemiripan karakteristik dan termasuk metode pemampatan yang sejenis yaitu metode lossless.
Berdasarkan pengkodean ASCII, string ”fungsi rekursif” membutuhkan 15 byte atau 120 bit (15x8=120 bit) untuk menyimpan string tersebut dalam media penyimpanan. Ukuran string tersebut dapat dikurangi apabila dilakukan proses pemampatan dengan meminimumkan jumlah bilangan bit. Untuk melakukan proses pemampatan dapat digunakan sebuah algoritma. Oleh karena itu, penulis berkeinginan untuk melakukan suatu studi mengenai perbandingan kinerja algoritma pemampatan dalam memampatkan file, yaitu Huffman dan Shannon-Fano dalam menghasilkan file dengan ukuran yang lebih kecil dari ukuran file semula. Pemampatan data dilakukan pada tipe file teks. File teks adalah file yang berisi informasi-informasi yang disajikan
dalam bentuk teks yang merupakan kumpulan dari karakter-karakter atau string yang menjadi satu kesatuan sedangkan string merupakan tipe data yang digunakan untuk menggambarkan atau merepresentasikan kumpulan karakter (huruf, angka, simbol).
1.2 Perumusan Masalah
Permasalahan dalam tulisan ini adalah bagaimana mengolah file teks melalui operasi pemampatan dengan mengimplementasikan algoritma Huffman dan Shannon-Fano secara komputerisasi.
1.3 Pembatasan Masalah
Dalam melakukan perbandingan algoritma Huffman dan Shannon-Fano dilakukan beberapa batasan sebagai berikut:
1. File teks yang akan dimampatkan adalah file dokumen teks (*.txt), file dokumen (*.doc), file rtf (*.rtf) dan file HTML (*.htm).
2. Perbandingan yang dilakukan berdasarkan rasio pemampatan (ukuran file hasil pemampatan terhadap ukuran file semula, ditulis dalam %) dan kecepatan pemampatannya (ukuran file semula dibagi dengan waktu komputasi yang dibutuhkan dan ditulis dalam satuan KByte/s).
1.4 Tujuan Penelitian
Penelitian ini bertujuan untuk membandingkan rasio dan kecepatan pemampatan file teks hasil pemampatan yang diperoleh dari implementasi algoritma Huffman dan Shannon-Fano.
1.5 Kontribusi Penelitian
Selain menambah pemahaman dan pengetahuan penulis mengenai pemampatan data, hasil penelitian ini juga bermanfaat untuk melakukan pengiriman data pada saluran komunikasi data dan penyimpanan data dalam ruang penyimpanan yang terbatas.
1.6 Metode Penelitian
Secara umum, penelitian dilakukan dengan beberapa tahapan, yaitu:
1. Membahas karakteristik algoritma Huffman dan Shannon-Fano untuk pemampatan file teks.
2. Mengimplementasikan algoritma Huffman dan Shannon-Fano kedalam suatu program
3. Melakukan
analisa
untuk
membandingkan
berdasarkan rasio dan kecepatan pemampatannya.
kinerja
setiap
algoritma
1.7 Tinjauan Pustaka
Ida Bagus Adi Sudewa dalam artikel yang berjudul Mengenal Character Set, menjelaskan tentang berbagai set karakter yang pernah digunakan pada komputer selain ASCII dan EBCDIC yang lebih dikenal dan umum digunakan hingga sekarang.
Herry Purnomo dan Theo Zacharias dalam buku yang berjudul Pengenalan Informatika Perspektif Teknik dan Lingkungan, memuat tentang berbagai tipe bilangan yang digunakan pada memori komputer serta memperkenalkan format file teks yang biasa digunakan dalam menyimpan dokumen.
Rinaldi Munir dalam buku yang berjudul Pengolahan Citra Digital dengan Pendekatan Algoritmik, memberikan penjelasan mengenai klasifikasi dan metode pemampatan. Pemampatan bertujuan untuk meminimalkan kebutuhan memori. Prinsip umum yang digunakan pada proses pemampatan, misalnya pemampatan citra adalah mengurangi duplikasi data di dalam citra sehingga memori yang dibutuhkan untuk merepresentasikan citra menjadi lebih sedikit dari pada representasi citra semula.
Jong Jek Siang dalam buku yang berjudul Matematika Diskrit dan Aplikasinya pada Ilmu Komputer, memuat tentang teori mengenai pohon biner yang digunakan untuk pembentukan kode Huffman dan beberapa pertimbangan yang harus dipenuhi dalam pemilihan algoritma, diantaranya efisiensi algoritma. Efisiensi algoritma dapat ditinjau dari dua hal yaitu efisiensi waktu dan memori.
Richard Johnsonbaugh dalam buku yang berjudul Matematika Diskrit, memuat tentang kode Huffman paling mudah didefinisikan dengan sebuah pohon berakar. Untuk membuka kode sebuah string bit, dimulai dengan suatu akar dan menuruni
pohon sampai ditemukan sebuah karakter. Bit 0 dan 1 memberitahu apakah harus menuruni pohon ke kanan atau ke kiri.
Thomas H. Cormen et al dalam buku yang berjudul Introduction to Algorithms memuat tentang bagaimana pembentukan kode Huffman menjadi suatu kode optimal dengan pembentukan prefix code. Kode Huffman merupakan teknik pemampatan data yang dapat menyimpan 20% hingga 90% tergantung pada karakteristik data. Huffman menemukan algoritma greedy untuk membentuk kode prefiks yang optimal. Algoritma Huffman membangun pohon biner T (yang disebut pohon Huffman) yang berkoresponden dengan kode optimal tersebut dari bawah ke atas (bottom-up). Pohon Huffman direpresentasikan sebagai pohon biner yang berlabel, di mana setiap sisi diberi label 0 untuk cabang kiri dan label 1 untuk cabang kanan.
Ida Mengyi Pu dalam bukunya yang berjudul Fundamental Data Compression, menjelaskan mengenai pemampatan data. Buku ini mengedepankan materi yang dapat dipelajari dengan mudah. Topik yang dijelaskan pada buku ini mengandung berbagai teknik pemampatan yang bermanfaat untuk teks, suara, gambar, video dan standar internasional.
Linawati dan Henry P. Panggabean dalam makalah yang berjudul Perbandingan Kinerja Algoritma Kompresi Hufman, LZW dan DMC pada Berbagai Tipe File, membahas perbandingan kinerja tiga algoritma kompresi yang masingmasing menggunakan teknik pengkodean yang berbeda, yaitu Algoritma Huffman, LZW (Lempel-Ziv-Welch) dan DMC (Dynamic Markov Compression). Ke tiga algoritma tersebut diimplementasikan ke dalam sebuah perangkat lunak dan diujikan terhadap 12 golongan kasus uji, lalu kinerjanya diukur berdasarkan rasio ukuran file hasil kompresi terhadap file awal dan kecepatan kompresi. Disimpulkan bahwa dalam
hal rasio hasil kompresi, secara rata-rata DMC merupakan yang terbaik dan Huffman merupakan yang terburuk, sedangkan dari sisi kecepatan kompresi, LZW merupakan yang terbaik dan DMC merupakan yang terburuk. Terdapat beberapa jenis file yang tidak tepat untuk dikompresi dengan metode tertentu karena justru menghasilkan file hasil kompresi yang berukuran lebih besar.
1.8 Diagram Konsepsi
Secara umum, proses yang dilakukan dalam membandingkan algoritma Huffman dan algoritma Shannon-Fano pada pemampatan file teks dapat digambarkan ke dalam diagram konsepsi sebagai berikut:
File Teks Algoritma Pemampatan
Huffman
Shannon-Fano
Pengurutan Karakter Berdasarkan Frekuensi
Pengurutan Karakter Berdasarkan Frekuensi
Pembentukan Pohon Biner dengan Penggabungan Frekuensi Karakter Terkecil
Pembentukan Pohon Biner dengan Pembagian Frekuensi Karakter Secara Rekursif
Pembentukan Kode Huffman
Pembentukan Kode Shannon-Fano Implementasi ke dalam Program Komputer Pemampatan File Teks dengan ke dua Algoritma
File Hasil Pemampatan dan Informasinya
Analisa dan Bandingkan File Hasil Pemampatan
Gambar 1.1 Diagram Konsepsi