kompresi data menggunakan metode huffman

advertisement
KOMPRESI DATA MENGGUNAKAN METODE HUFFMAN
Ari Wibowo
Jurusan Teknik Informatika, Politeknik Negeri Batam
[email protected]
Abstrak
Kompresi data (pemampatan data) merupakan suatu teknik untuk memperkecil jumlah
ukuran data (hasil kompresi) dari data aslinya. Pemampatan data umumnya diterapkan pada
mesin komputer, hal ini dilakukan karena setiap simbol yang dimunculkan pada komputer
memiliki nilai bit-bit yang berbeda. Pemampatan data digunakan untuk mengurangkan jumlah bitbit yang dihasilkan dari setiap simbol yang muncul. Dengan pemampatan ini diharapkan dapat
mengurangi (memperkecil ukuran data) dalam ruang penyimpanan.
Pengkodean dengan metode Huffman dibangun dari panjang variabel kode-kode yang
disusun dari bit-bit. Simbol dengan probabilitas yang tinggi akan memperoleh kode-kode paling
pendek sedangkan simbol dengan probabilitas paling rendah akan memproleh kode terpanjang.
Kode Huffman mempunyai atribut unik yang sempurna, dalam arti kode-kode tersebut dapat
mengembalikan (decoder) kode yang panjang dan decirable dalam arti kode Huffman tersebut
tidak menjadi prefik kode Huffman yang lain.
Kata Kunci : Pemampatan, kode huffman, simbol
1. PENDAHULUAN
Secara umum pemampatan data merupakan merubah suatu simbol-simbol menjadi suatu
kode-kode. Pemampatan dikatakan efektif jika ukuran perolehan kode-kode tersebut sangat kecil
dibandingkan dengan ukuran kode simbol aslinya. Dari suatu kode-kode atau simbol-simbol dasar
suatu model akan dinyatakan dalam kode khusus. Secara model sederhana suatu kumpulan data
dan aturan-aturan untuk memproses masalah suatu simbol-simbol untuk menentukan suatu kodekode sebagai hasil keluaran. Dalam pengkodean dengan metode Hufman, kode hasil dari keluaran
ditentukan dari probabilitas (nilai kemungkinan yang muncul) paling tinggi akan memperoleh
kode dengan nilai bit-bit yang paling sedikit. Simbol-simbol yang mempunyai nilai probabilitas
kecil memperoleh kode dengan bit-bit terbanyak.
1.1 Latar Belakang Masalah
Semakin berkembangnya teknologi pada Ponsel maka semakin banyak pula data-data
atau file-file yang ingin kita simpan, tetapi kadang kala kapasitas memory yang kita miliki tidak
sebanding dengan data yang akan kita simpan. Oleh karena itu data-data yang akan disimpan perlu
dikompres terlebih dahulu supaya ukurannya menjadi lebih kecil. Apabila ukuran data dapat
dikompres menjadi lebih kecil dari ukuran aslinya, maka secara otomatis memory dapat
menyimpan data lebih banyak lagi dan dari segi pengiriman pun akan semakin cepat. Pada saat ini
banyak sekali perangkat lunak yang digunakan untuk menangani masalah kompresi data.
Perangkat lunak tersebut digunakan untuk mengefisienkan kapasitas penyimpanan data,selain itu
juga kompresi data dapat mencegah kerusakan data.
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).
1.2 Identifikasi Masalah
Masalah–masalah yang melatarbelakangi penulisan tugas akhir ini, diantaranya:
a. Pada umumnya data yang ingin disimpan berukuran besar, sehingga membutuhkan memory
yang besar pula. Sedangkan memory pada ponsel tidak terlalu besar, sehingga dibutuhkan
kompresi data untuk memperkecil ukuran sebuah file.
b. Data, bentuk atau formatnya bisa berupa teks, gambar, ataupun audio.
1.3 Maksud dan Tujuan
Maksud dari penelitian
menggunakan algoritma Huffman.
ini adalah untuk merancang program kompresi data
Tujuan dari penelitian ini adalah untuk memperkecil ukuran data yang disimpan pada
memori, sehingga memori tersebut bisa menyimpan data dengan jumlah yang lebih banyak.
1.4 Batasan Masalah
Pada penulisan tugas akhir ini ruang lingkup kajian dibatasi hanya pada:
a. Mensimulasikan dan menguji Aplikasi yang telah dibuat
b. Algoritma yang digunakan untuk kompresi data yaitu algoritma Huffman
c. Data-data yang akan dikompres berbentuk file teks, image, dan audio
1.5 Metodologi Penelitian
Metode penelitian merupakan cara–cara atau teknik dalam melakukan suatu penelitian.
Dalam penulisan tugas akhir ini, penulis menggunakan metode penelitian eksperimental, yang
berarti penulis mengadakan kegiatan percobaan untuk melihat hasil dari aplikasi kompresi data
yaitu dengan cara melakukan perancangan aplikasi kompresi data, kemudian melakukan simulasi
sistem dan terakhir adalah menguji aplikasi yang telah dibuat.
1.5.1
Metode Pengumpulan Data
Metode pengumpulan data yang digunakan penulis dalam penelitian ini ialah Studi
Pustaka. Penulis melakukan kajian pustaka yaitu mempelajari buku – buku referensi dan hasil
penelitian sejenis sebelumnya yang pernah dilakukan orang lain. Tujuannya adalah untuk
mendapatkan landasan teori mengenai masalah yang akan diteliti. Teori merupakan pijakan bagi
peneliti untuk memahami persoalan yang diteliti dengan benar dan sesuai dengan kerangka berfikir
ilmiah. Bagian ini akan dikaji lebih dalam pada Bab IV.
1.5.2
Metode Rekayasa Perangkat Lunak
Metode rekayasa perangkat lunak yang dilakukan oleh penulis untuk menyusun tugas akhir ini
adalah metode Waterfall. Model ini memerlukan pendekatan yang sistematis dan sekuensial di
dalam pengembangan sistem perangkat lunaknya, pengembangannya dimulai dari analisis dan
definisi kebutuhan, perancangan sistem dan perangkat lunak, implementasi dan pengujian unit,
integrasi dan pengujian sistem, operasi dan perawatan. Dengan demikian, pada model ini terdapat
aktifitas-aktifitas sebagai berikut :
1.
Rekayasa Sistem
2.
Analisis
3.
Perancangan
4.
Pemograman (Coding)
5.
Pengujian
6.
Pengoperasian dan Pemeliharaan
2. LANDASAN TEORI
Landasan teori berisi teori-teori yang mendukung pembuatan system.
2.1 Kompresi Data
Kompresi data (pemampatan data) merupakan suatu teknik untuk memperkecil jumlah
ukuran data (hasil kompresi) dari data aslinya. Pemampatan data umumnya diterapkan pada mesin
komputer, hal ini dilakukan karena setiap simbol yang dimunculkan pada komputer memiliki nilai
bit-bit yang berbeda. Misal pada ASCII setiap simbol yang dimunculkan memiliki panjang bit 8
bit, misal kode A pada ASCII mempunyai nilai desimal = 65, jika dirubah dalam bilangan biner
menjadi 010000001. Pemampatan data digunakan untuk mengurangkan jumlah bit-bit yang
dihasilkan dari setiap simbol yang muncul. Dengan pemampatan ini diharapkan dapat mengurangi
(memperkecil ukuran data) dalam ruang penyimpanan.
2.2 Algoritma Huffman
Pengkodean dengan metode Huffman dibangun dari panjang variabel kode-kode yang
disusun dari bit-bit. Simbol dengan probabilitas yang tinggi akan memperoleh kode-kode paling
pendek sedangkan simbol dengan probabilitas paling rendah akan memproleh kode terpanjang.
Contoh untuk string ‘ABACCDA’ mempunyai panjang bit sebanyak 56 bit karena 1 karakter
dikodekan dengan 8 bit (ASCII) akan diperoleh jumlah bit untuk tiap simbolnya dengan jumlah
yang lebih sedikit atau bitnya lebih pendek yaitu 13 bit, sehingga secara otomatis ukuran filenya
berkurang.
2.3 Graf
2.3.1
Definisi Graf
Graf G merupakan representasi dari suatu masalah yang digambarkan sebagai
sekumpulan noktah (simpul) yang dihubungkan dengan sekumpulan garis (sisi).
2.3.2
Jenis – jenis Graf
Graf dapat dikelompokkan menjadi beberapa jenis bergantung pada sudut pandang
pengelompoknya. Pengelompokkan graf dapat dipandang berdasarkan ada tidaknya sisi ganda
atau sisi kalang. Berdasarkan jumlah simpul, atau berdasarkan orientasi arah pada sisi.
Berdasarkan ada tidaknya gelang atau sisi ganda pada suatu graf, maka secara umum graf
digolongkan menjadi dua jenis:
a.
Graf Sederhana ( simple graph )
Graf yang tidak mengandung gelang maupun sisi ganda dinamakan graf sederhana.
b.
Graf Tak sederhana ( unsimple graph )
Graf yang mengandung sisi ganda atau gelang dinamakan graf tak sederhana (unsimple
graph). Ada dua macam graf tak sederhana, yaitu graf ganda (multi graph) dan graf semu
(pseudograph).
2.4 Pohon (Tree)
Dari sekian banyak konsep graf, konsep pohon (tree) mungkin merupakan konsep paling
penting, karena penerapannya sangat banyak pada kehidupan sehari-hari.
2.4.1
Definisi Pohon
Pohon adalah graf tak berarah terhubung yang tidak mengandung sirkuit. Gambar 2.8
dibawah ini menunjukan contoh dari pohon.
Gambar 1 Tiga buah contoh dari pohon
3. ANALISIS DAN PERANCANGAN
3.1 Deskripsi Masalah
Permasalahan yang dibahas dalam tugas akhir ini adalah membuat suatu simulasi program
aplikasi kompresi data untuk digunakan pada ponsel berbasis system operasi symbian dengan
menggunakan algoritma Huffman Hasil uji coba algoritma Huffman yang telah terkompresi ini
dianalisa dan selanjutnya dicari perbandingan kinerja metode kompresi tersebut. Data dari hasil
penelitian metode Huffman dibandingkan dengan data aslinya Perbadingan dari algoritma tersebut
berupa hasil kompresi dan kode-kode bit yang dihasilkan oleh pohon-pohon biner.
3.2.1
Perancangan Aplikasi
Aplikasi yang dibuat dalam penulisan tugas akhir ini dirancang khusus untuk ponsel
berbasis sistem operasi symbian, terutama ponsel Nokia seri 9210i Aplikasi ini dibuat dengan
sederhana, sehingga diharapkan user dapat dengan mudah menggunakan program aplikasi ini.
3.2.2 Proses Kompresi
Mulai
Masukan nama file asli
yang akan di kompres
Masukan nama file
untuk hasil kompresi
Tidak
Compress
File
Ya
Hasil Kompresi
Selesai
Gambar 2 – Proses Pemampatan Data
3.2.3 Proses Dekompresi
Mulai
Masukan nama file hasil
kompresi
Masukan nama file untuk
hasil Dekompresi
Tidak
Decompress
File
Ya
Hasil Dekompresi
Selesai
Gambar 3 – Proses Pemulihan Data
4. Pengujian
4.1 Hasil Pengujian
4.1.1 Pengujian kompresi data
Dalam pengujian ini, hasil kompresi data dengan file yang berjenis teks, image dan audio
ditunjukan pada tabel 4.1
Nama File
T1.txt
T2.pdf
T3.doc
G1.jpg
G2.gif
G3.bmp
A1.mp3
A2.wav
A3.wma
Tabel 4.1 Kompresi data pada file teks, image, audio
Ukuran File Asli
Ukuran File Kompres
Ratio
23 kb
13 kb
44%
449 kb
428 kb
5%
90 kb
50 kb
48 %
1298 kb
297 kb
1%
134 kb
128 kb
5%
1.787 kb
322 kb
83%
2.570 kb
2.561 kb
1%
4.178 kb
3.473 kb
17%
2.905 kb
2.871 kb
2%
Waktu (s)
0.1407
0.6817
0.0687
0.2794
0.1309
0.7107
2.8145
4.0549
3.1551
4.1.2 Pengujian dekompresi data
Dalam pengujian ini, hasil dekompresi data dengan file yang berjenis teks ditunjukan
pada tabel 4.2
Tabel 4.2 Dekompresi data pada file teks, image, audio
Nama file
Ukuran File Kompres
Ukuran File Dekompres
Waktu (s)
T1.Text
13 kb
23 kb
0.0031
T2.pdf
428 kb
449 kb
0.3792
T3.doc
50 kb
90 kb
0.1189
G1.jpg
297 kb
298 kb
0.3011
G2.gif
128 kb
134 kb
0.1419
G3.bmp
322 kb
1.787 kb
0.8518
A1.mp3
2.561 kb
2570 kb
2.7239
A2.wav
3.473 kb
4178 kb
4.156
A3.wma
2.871 kb
2905 kb
3.1423
5. KESIMPULAN DAN SARAN
5.1
Kesimpulan
Berdasarkan hasil pengujian algoritma Huffman untuk proses kompresi data dengan
menggunakan VB, dapat ditarik kesimpulan sebagai berikut :
1. Rasio Kompresi yang dihasilkan cukup bervariasi tergantung jenis file yang dikompres.
Untuk file audio dan image rasio kompresi yang dihasilkan lebih kecil sedangan untuk
file teks rasio kompresi yang dihasilkan lebih besar.
2. Tingkat keamanan data setelah dikompresi cukup terjaga, dengan kata lain file tidak
berkurang atau mengalami kerusakan setelah proses kompresi data dilakukan
3. Kecepatan proses kompresi dan dekompresi data setara dengan ukuran dan jenis file
5.2
Saran
Untuk pengembangan selanjutnya diharapkan program aplikasi ini
disarankan
menggunakan algoritma kompresi data lainnya, agar didapatkan metode yang lebih efektif. Penulis
juga menyarankan untuk pengembangan selanjutnya agar program aplikasi yang dibuat lebih
variatif dan inovatif dari program aplikasi yang telah ada sebelumnya.
6. DAFTAR PUSTAKA
1. Halvsorson Michael, 2000. Microsoft Visual Basic 6.0 Step By Step. Jakarta; PT. Elex
Media Komputindo
2. Bell, Timothy C., Cleary, John G., Witten, Ian H, (1990) “Text Compression”, Prentice
Hall, Englewood NJ
3. Torer, J.A., (1988) “Data Compression”, Computer Science Press, Rockville, MD
Witten, Ian H., Neal, Radford M.
4. Munir,Rinaldi. Matematika Diskrit. Informatika
Download