JETri
,
Volume 4, Nomor 1, Agustus 2004, Halaman 37-52, ISSN 1412-0372ANALISIS PERBANDINGAN KOMPRESI DATA
DENGAN TEKNIK ARITHMETIC CODING
DAN RUN LENGTH ENCODING
Ferrianto Gozali & Mervyn*Dosen Jurusan Teknik Elektro-FTI, Universitas Trisakti
Abstract
Data transmission and data storage cost money. The more information being dealt with, the higher the cost is needed. In spite of this, most digital data are not stored in the most compact form. Rather, they are stored in whatever way makes them easiest to use, such as: ASCII text from word processors, binary code that can be executed by a computer, etc. Typically, these easy-to-use encoding methods require larger size data files than they actually need to represent the information. Data compression is the general term for the various algorithms and programs developed to address this problem. The aim of data compression is to reduce redundancy in stored data or transmitted data, thus increasing effective data density. A compression program is used to convert data from an easy-to-use format to one optimized for compactness. In this paper, we examine and analyze two basic methods in data compression called Run Length Encoding and Arithmetic coding. A framework for evaluation and comparison of these two methods is constructed and applied to the algorithms presented. Comparisons of both theoretical and empirical natures are briefly reported in this paper. The compression programs for these two methods of data compression are developed using Java programming language. The program is used to compress number of different sizes document type files to measure the time spent for the compression, the time to reconstruct and the size of the compressed data files to get the compression ratio. The result indicated that arithmetic coding method has compression ratio 1,14 up to 2,61 higher than run length encoding while it takes times 1,114 –1,564 and 2,85 – 5,635 longer than time needed by Run Length encoding methods. We can conclude that there are typical tradeoffs between the amount of compression, the runtime, and the quality of the reconstruction. Depending on the application, one might be more important than another and one would want to pick the method appropriately.
Keywords: Kompresi Data, Run Length Encoding, Arithmetic Coding, Compression ratio.
1. PENDAHULUAN
Perkembangan ilmu pengetahuan dan teknologi, khususnya Teknologi Informasi dan Telekomunikasi atau disingkat ICT, jumlah maupun ukuran file data yang diproses maupun yang ditransmisikan melalui jaringan komputer juga semakin meningkat. Hal ini menimbulkan permasalahan tersendiri. Terbatasnya bandwidth serta kecepatan dalam pengambilan dan pengiriman file data melalui jaringan global internet atau yang dikenal dengan download / upload seringkali merupakan pekerjaan
JETri
,
Tahun Volume 4, Nomor 1, Agustus 2004, Halaman 37-52, ISSN 1412-0372yang mengesalkan dan menghabiskan waktu. Koneksi seringkali terputus dan proses pengambilan atau pengiriman data harus diulang lagi dari awal.
Hal ini semakin sering terjadi bila ukuran file data tersebut semakin besar dan kecepatan koneksi jaringan internet terbatas. Salah satu alternatif pemecahan masalah yang mungkin dilakukan adalah dengan melakukan kompresi pada data sehingga data tersebut menjadi lebih kecil ukurannya dan akibatnya proses pengambilan atau pengiriman akan menjadi lebih cepat jika data tersebut dikirim atau diterima melalui media internet (Debra A. Lelewer & Daniel S. Hirschberg, 2005: 7:07:03 AM).
ingga saat ini, berbagai metoda kompresi data dikembangkan dan secara umum dapat dikelompokkan dalam 2 kelompok besar yaitu lossless data compression dan lossydata compression (Debra A. Lelewer & Daniel S. Hirschberg, 2005: 7:07:03 AM) (Debra A. Lelewer & Daniel S. Hirschberg, 2005: 7:07:03 AM), (Ian H. Willen, Radford M. Neal dan John G Cleary, 1987: 520 – 540).
Pada lossless data compression, proses rekonstruksi file hasil kompresi atau decompression process akan mampu mengembalikan file tersebut kebentuk asalnya. Metoda ini digunakan untuk berbagai tipe data seperti executable code atau file word processing, dll dimana perbedaan sekecil apapun akan berakibat fatal. Sedangkan lossy data compression umumnya digunakan untuk file data yang merepresentasikan suatu citra dimana proses rekonstruksi tidak mengembalikan bentuk citra ke bentuk asal dengan kualitas yang sama sehingga lossy data compression memiliki
compression ratio yang lebih baik dibandingkan lossless data compression. Pada penelitian ini, dipilih dua metoda lossless data compression yang banyak digunakan dan dijadikan dasar bagi pengembangan metoda kompressi data lainnya yaitu teknik kompresi Arithmetic Coding dan Run Length Encoding. Kedua teknik ini menerapkan teknik pengambilan probabilitas dimana untuk simbol-simbol yang sering muncul akan direpresentasikan dengan jumlah bit yang lebih sedikit dibandingkan dengan simbol-simbol yang jarang muncul (Amir, 2004: Comparative Analysis of Arithmetic Coding Computational Complexity), (Debra A. Lelewer & Daniel S. Hirschberg, 2005: 7:07:03 AM).
Walaupun kedua teknik tersebut didasari oleh teknik pengambilan probabilitas, namun pada kenyataannya teknik arithmetic coding lebih
Ferrianto Gozali & Mervyn, Analisis Perbandingan Kompresi Data Dengan Teknik Arithmatic
banyak diaplikasikan pada file-file dokumen umum sedangkan file-file gambar lebih banyak memanfaatkan teknik Run Length Encoding. Pada tulisan ini akan dibahas metoda pengambilan probabilitas pada kedua teknik data kompresi tersebut diatas serta pengaruhnya dalam kompresi file-file dokumen, baik untuk rasio kompresi maupun waktu kompresi yang dibutuhkan.
Pembahasan diawali dengan konsep dasar kompressi data pada umumnya, dilanjutkan dengan konsep probabilitas yang digunakan serta algoritma dalam metoda kompresi Arithmetic Coding dan Run length Encoding. Program kompresi yang dikembangkan dengan bahasa pemrogaman java (Haines H & Benny, 2004: 14-55) digunakan untuk mengukur kemampuan kedua teknik kompresi tersebut diatas. Pembahasan diakhiri dengan analisis hasil pengukuran yang didapatkan baik untuk waktu kompresi, maupun untuk besarnya compression ratio yang diperoleh.
2. KONSEP DASAR KOMPRESI DATA
Proses kompresi data didasarkan pada kenyataan bahwa pada hampir semua jenis data selalu terdapat pengulangan pada komponen data yang dimilikinya, misalnya didalam suatu text kalimat akan terdapat pengulangan penggunaan huruf alphabet dari huruf a sampai dengan huruf z. Kompresi data melalui proses encoding berusaha untuk menghilangkan unsur pengulangan ini dengan mengubahnya sedemikian rupa sehingga ukuran data menjadi lebih kecil (Amir, 2004: Comparative Analysis of Arithmetic Coding Computational Complexity), (Nelson, 1991: 32-47), baik untuk berbagai jenis data seperti data teks, gambar, video, suara, dan lain-lain.
Proses pengurangan unsur pengulangan ini dapat dilakukan dengan memakai beberapa teknik kompresi. Misalnya jika suatu komponen muncul berulang kali dalam suatu data, maka komponen tersebut tidak harus dikodekan berulang kali pula tapi dapat dikodekan dengan menulis frekuensi munculnya komponen dan di mana komponen tersebut muncul. Teknik kompresi data lainnya, berusaha untuk mencari suatu bentuk kode yang lebih pendek untuk suatu komponen yang sering muncul (Amir, 2004:
Comparative Analysis of Arithmetic Coding Computational Complexity). Keberhasilan pengkompresian data tergantung dari besarnya data itu sendiri dan tipe data yang memungkinkan untuk dikompresi (Haines H & Benny, 2004: 14-55). Biasanya beberapa komponen-komponen di dalam
JETri
,
Tahun Volume 4, Nomor 1, Agustus 2004, Halaman 37-52, ISSN 1412-0372data yang sifatnya lebih umum dari yang lainnya banyak dipakai pada algoritma kompresi data yang memanfaatkan sifat ini. Hal ini dinamakan
redudancy. Makin besar redudancy di dalam data makin tinggi pula tingkat keberhasilan kompresi data. Dalam proses kompresi data, terdapat konsep umum probabilitas yang menunjukkan suatu ukuran berapa banyak informasi yang terdapat dalam suatu rangkaian data atau yang disebut dengan entropy yang dapat direpresentasikan secara matematis (Blelloch, 2005: 6:25:12 AM), (Debra A. Lelewer & Daniel S. Hirschberg, 2005: 7:07:03 AM) sebagai berikut:
i i i P P S H( )
log2 1 (1) dimana iP = probabilitas dari simbol 2
g
lo
i P 1= Jumlah informasi yang terdapat dalam suatu simbol
Misalkan terdapat rangkaian S = abaabcda dalam alphabet {a,b,c,d} maka didapatkan masing-masing probabilitas P(a) = 0.5 , P(b) = 0.25 , P(c) = 0.125 dan P(d) = 0.125. Untuk mengkompresi rangkaian data tersebut sebetulnya dapat dengan cara yang paling sederhana yaitu dengan menggunakan 2 bits per simbol {00, 01,10, 11} sehingga menghasilkan jumlah bit = 8 * 2 bits = 16 bits.
Tetapi sesuai dengan rumus (1) diatas maka didapatkan :
H (S) =
{a,b,c,d} s 2g
lo
)
(
s
P
) ( 1 s P = (5
.
0
1
log
5
.
0
2 ) + (25
.
0
1
log
25
.
0
2 ) +125
.
0
1
log
125
.
0
2 ) + (125
.
0
1
log
125
.
0
2 )= 0.5 *
log
22 + 0.25 *log
24 + 0.125 *log
28 + 0.125 * 2log
8= 0.5 + 0.5 + 0.375 + 0.375 = 1,75 Bits / simbol
Ferrianto Gozali & Mervyn, Analisis Perbandingan Kompresi Data Dengan Teknik Arithmatic
Dari hasil tersebut maka didapatkan jumlah bit = 8 * 1.75 = 14 bits untuk mengkompresi rangkaian kata tersebut sehingga menghasilkan 2 bits lebih sedikit dibandingkan dengan cara yang paling sederhana. Terlihat dengan memperhitungkan probabilitas simbol yang terdapat didalam suatu rangkaian data, akan diperoleh bentuk representasi data yang lebih kecil.
3. KOMPRESI DATA DENGAN ARITHMETIC CODING DAN RUN LENGTH ENCODING
3.1 ARITHMETIC CODING
Pada umumnya, algoritma kompresi data didasarkan pada pemilihan cara melakukan penggantian satu atau lebih elemen-elemen yang sama dengan kode tertentu. Berbeda dengan cara tersebut, Arithmetic Coding menggantikan suatu deret simbol input dalam suatu file data dengan sebuah bilangan menggunakan proses aritmatika. Semakin panjang dan semakin kompleks pesan yang dikodekan, semakin banyak bit yang diperlukan untuk proses kompresi dan dekompresi data (Amir, 2004:
Comparative Analysis of Arithmetic Coding Computational Complexity), (Bodden, Eric, 2004: 2.00 WIB).
Output dari arithmetic coding ini adalah satu angka yang lebih kecil dari 1 dan lebih besar atau sama dengan 0. Angka ini secara unik dapat didekompresikan sehingga menghasilkan deretan simbol yang dipakai untuk menghasilkan angka tersebut (Ian H. Willen, Radford M. Neal dan John G Cleary, 1987: 520–540). Untuk menghasilkan bilangan output
tersebut, tiap simbol yang akan dikompresi diberi satu set nilai probabilitas. Contoh, andaikan kata TRISAKTI dalam suatu file data akan dikompres, maka nilai probabilitas dari tiap-tiap huruf yang ada seperti dijumpai pada tabel 1.
Tabel 1. Tabel probabilitas untuk kata TRISAKTI Karakter Probabilitas A 1/8 I 2/8 K 1/8 R 1/8 S 1/8 T 2/8
JETri
,
Tahun Volume 4, Nomor 1, Agustus 2004, Halaman 37-52, ISSN 1412-0372Setelah probabilitas masing-masing karakter diketahui, tiap simbol/karakter akan diberikan range tertentu yang nilainya berkisar diantara 0 dan 1, sesuai dengan probabilitas yang ada seperti terlihat pada tabel 2 berikut.
Tabel 2. Range simbol untuk kata TRISAKTI
Karakter Probabilitas Range
A 1/8 0.00 – 0.125 I 2/8 0.125 – 0.375 K 1/8 0.375 – 0.50 R 1/8 0.50 – 0.625 S 1/8 0.625 – 0.75 T 2/8 0.75 – 1.00
Dari tabel 2, perlu dicatat bahwa tiap karakter melingkupi range yang disebutkan kecuali bilangan yang tinggi. Jadi karakter T sesungguhnya mempunyai range mulai dari 0.75 sampai dengan 0.99999999999.
Berdasarkan rumus (1) diatas maka didapatkan suatu algoritma proses kompresi data sebagai berikut (Haines H & Benny, 2004: 14–55):
- Set low = 0.0 - Set high = 1.0
- While (simbol input masih ada) do - Ambil simbol input
- Code range (CR) = high – low
- High = low + CR*high_range (simbol) - Low = low + CR*low_range (simbol) - End While
- Output low
Ferrianto Gozali & Mervyn, Analisis Perbandingan Kompresi Data Dengan Teknik Arithmatic
Input T Input R Input I Input S Input A Input K Input T Input I 1 1 0,9065 0,88671875 0,884765625 0,883911132 0,883850097 0,883850097 0,883847712 T T 0,75 S S 0,883789062 R R
0,875 K K I I I 0,87890625 A A 0 0,75 0,875 0,87890625 0,883789062 0,883789062 0,883834838 0,883846282 0,883846759
Gambar 1. Nilai Interval Kata TRISAKTI (Haines H, Benny, 2004: 14-55) Untuk kata TRISAKTI di atas, didapat nilai-nilai pada tabel 3.
Tabel 3. Proses kompresi untuk kata TRISAKTI
S Low High Code Range
0,0 1,0 1,0 T 0,75 1,0 0,25 R 0,875 0.90625 0.03125 I 0.87890625 0.88671875 7,8125 x 10-3 S 0.883789062 0.884765625 9,76563 x 10-4 A 0.883789062 0.883911132 1,22070375 x 10-4 K 0.883834838 0.883850097 1,5259 x 10-5 T 0.883846282 0.883850097 3,815 x 10-6 I 0.883846759 0.883847712 9,54 x 10-7
Dari proses ini didapatkan nilai low = 0.883846759 nilai inilah yang dipakai sebagai output untuk kata TRISAKTI dalam suatu file data. Dalam implementasi ke dalam suatu program dengan teknik Arithmetic Coding
JETri
,
Tahun Volume 4, Nomor 1, Agustus 2004, Halaman 37-52, ISSN 1412-0372code range pada proses kompresi dan dekompresi data yang terlalu panjang.
Implementasi Arithmetic Coding harus memperhatikan kemampuan encoder dan decoder, yang umumnya mempunyai keterbatasan jumlah
mantissa. Hal ini dapat menyebabkan kesalahan atau error apabila suatu
Arithmetic Coding mempunyai kode dengan floating point yang sangat panjang (Amir, 2004: Comparative Analysis of Arithmetic Coding Computational Complexity). Sehingga diberikan solusi berupa modifikasi algoritma Arithmetic Coding dengan menggunakan bilangan integer.
Modifikasi ini mampu mengatasi keterbatasan pengolahan floating point dalam melakukan kompresi dan dekompresi data. Modifikasi dengan bilang integer juga dipakai karena jumlah bit kodenya lebih sedikit dan mempercepat proses kompresi dan dekompresi data karena perhitungan
integer jauh lebih cepat dari perhitungan floating point serta dapat diimplementasikan dalam program.
Untuk implementasi tersebut, langkah-langkahnya adalah sebagai berikut:
- Pertama ditetapkan nilai high dan low, sesuai dengan panjang register. Untuk 16 bit high = FFFF dan low = 0000
- Tetapkan nilai code range (CR) CR = high – low + 1
- While (simbol input masih ada ) do - Ambil simbol input
- High = low + CR * high_range (simbol) -1 - Low = low + CR * low_range (simbol)
- Jika digit pertama sama maka SHIFT OUT digit pertama - End While
- SHIFT OUT digit pertama jika masih dibutuhkan - Cetak output
Sebagai ilustrasi digunakan contoh kata TRISAKTI. Dalam hal ini digunakan nilai desimal.
High = 999999 Low = 000000
Ferrianto Gozali & Mervyn, Analisis Perbandingan Kompresi Data Dengan Teknik Arithmatic
Tabel 4. Contoh kompresi data dengan menggunakan bilangan integer untuk kata TRISAKTI
Proses Output Low High CR
Kondisi awal 000000 999999 1000000 T (0.75 – 1.0) 750000 999999 250000 R (0.5 – 0.625) 875000 906249 31250 I (0.125 – 0.375) 878906.25 886717.75 Shift Out 0.8 789060.25 867179.75 78120.5 S (0.625 – 0.75) 0.8 837885.5625 847649.625 Shift Out 0.88 378850.5625 476499.625 97650.0625 A (0.0 – 0.125) 0.88 378850.5625 391055.8203 Shift Out 0.883 788500.5625 910559.8203 122060.2578 K (0.375 – 0.5) 0.883 834273.1592 849529.6914 Shift Out 0.8838 342730.1592 495299.6914 152570.5322 T (0.75 – 1.0) 0.8838 457158.0584 495299.6914 Shift Out 0.88384 571580.0584 952999.6914 381419.633 I (0.75 – 1) 0.88384 619257.5125 714611.4208 → 0.88384
3.2.RUN LENGTH ENCODING
Kompresi dan dekompresi data menggunakan teknik Run length encoding ini merupakan suatu bentuk teknik yang digunakan untuk mengkompresi data yang berisi karakter-karakter berulang (Hauck, S. & Wilson, William D., 1999: IEEE ). Saat karakter yang sama diterima secara berderet empat kali atau lebih (lebih dari tiga), algoritma ini mengkompres data dalam suatu tiga karakter berderetan.
Teknik yang digunakan pada algoritma ini adalah dengan mencari karakter yang berulang lebih dari 3 kali pada suatu file untuk kemudian diubah menjadi sebuah bit penanda (marker bit) diikuti oleh sebuah bit yang memberikan informasi jumlah karakter yang berulang dan kemudian
JETri
,
Tahun Volume 4, Nomor 1, Agustus 2004, Halaman 37-52, ISSN 1412-0372ditutup dengan karakter yang dikompres, yang dimaksud dengan bit penanda di sini adalah deretan 8 bit yang membentuk suatu karakter ASCII. Jadi jika suatu file mengandung karakter yang berulang, misalnya AAAAAAAA atau dalam biner 01000001 sebanyak 8 kali, maka data tersebut dikompres menjadi 11111110 00001000 01000001. Dengan demikian kita dapat menghemat sebanyak 5 bytes. Agar lebih jelas algoritma Run-Length dapat dilihat pada gambar 3.
01000001 01000001 01000001 01000001 01000001 01000001 01000001 01000001 11111110 00001000 01000001 8 X bit penanda
Gambar 3. Contoh dari penggunaan algoritma Run Length Eencoding
Deretan data sebelah kiri merupakan deretan data pada file asli, sedangkan deretan data sebelah kanan merupakan deretan data hasil pemampatan dengan algoritma Run Length Encoding.
Dengan menggunakan metoda pengambilan probabilitas seperti diatas maka teknik Run Length Encoding tidak membutuhkan waktu komputasi yang lama seperti halnya metoda yang digunakan pada teknik arithmetic coding. Metoda tersebut akan sangat efektif bila file yang dikompres merupakan deretan karakter yang sama seperti halnya pada file-file gambar.
Namun hal tersebut tidak berlaku pada file-file dokumen umum dimana kemungkinan penggunaan karakter sangat heterogen. Dengan kata lain, jika file yang ingin dikompres tidak memiliki deretan lebih dari 3 karakter maka file hasil kompresi akan sama dengan file aslinya.
Dalam Run Length Encoding, langkah-langkah kompresi adalah sebagai berikut:
1. Baca file input dari data yang akan dikompresi.
2. Lihat apakah terdapat deretan karakter yang sama secara berurutan lebih dari tiga karakter, jika terdapat hal tersebut lakukan kompresi. Pada contoh di atas deretan karakter yang sama secara berurutan sebanyak 8 karakter, jadi lebih dari tiga dan dapat dilakukan kompresi.
Ferrianto Gozali & Mervyn, Analisis Perbandingan Kompresi Data Dengan Teknik Arithmatic
3. Berikan bit penanda pada file kompresi, bit penanda disini berupa 8 deretan bit yang boleh dipilih sembarang asalkan digunakan secara konsisten pada seluruh bit penanda hasil kompresi. Bit penanda ini berfungsi untuk menandai bahwa karakter selanjutnya adalah karakter yang dikompresi sehingga tidak membingungkan pada saat mengembalikan file yang sudah dikompresi ke file aslinya. Pada contoh di atas bit penanda ini dipilih 11111110.
4. Tambahkan deretan bit untuk menyatakan jumlah karakter yang sama berurutan, pada contoh diatas karakter yang sama berturutan sebanyak delapan kali, jadi diberikan deretan bit 00001000 (8 desimal).
5. Tambahkan deretan bit yang menyatakan karakter yang berulang, pada contoh diatas karakter yang berulang adalah 01000001 atau karakter A pada karakter ASCII.
Untuk melakukan proses dekompresi dilakukan langkah-langkah sebagai berikut:
1. Baca file hasil kompresi data.
2. Lihat karakter pada hasil kompresi satu-persatu dari awal sampai akhir, jika ditemukan bit penanda, lakukan proses pengembalian.
3. Lihat karakter setelah bit penanda, konversikan ke bilangan desimal untuk menentukan jumlah karakter yang berurutan.
4. Lihat karakter berikutnya, kemudian lakukan penulisan karakter tersebut sebanyak bilangan yang telah diperoleh pada karakter sebelumnya (langkah 3).
Dalam mengimplementasikan program kompresi menggunakan algoritma ini, perlu diperhatikan jika pada file asli terdapat karakter yang sama dengan bit penanda, maka pada file encoding karakter tersebut ditulis sebanyak dua kali secara berturutan. Pada saat pengembalian ke file asli, jika ditemukan bit penanda yang berderetan sebanyak dua kali, hal itu berarti karakter tersebut bukan bit penanda, tapi karakter asli dari file
aslinya.
4. IMPLEMENTASI DAN PENGUKURAN
Pengujian dilakukan dengan menggunakan file dokumen dengan ukuran dan isi yang berbeda-beda sebagai file masukan. Parameter-parameter yang diukur adalah waktu proses kompresi dan dekompresi, besarnya ukuran file yang di kompresi, dan persentase rasio kompresi dari kedua metoda kompressi untuk kemudian dilakukan perbandingan antara teknik Arithmetic Coding dengan teknik Run Length Encoding (Howard,
JETri
,
Tahun Volume 4, Nomor 1, Agustus 2004, Halaman 37-52, ISSN 1412-0372Paul G, Vitter & Jeffrey S, 1992: 749-763). Hasil pengukuran dari arithmetic coding diperoleh seperti pada tabel 5 dan tabel 6 sedangkan hasil pengukuran dari run length encoding dapat dilihat pada tabel 7 dan 8 berikut.
Tabel 5. Hasil pengukuran kompresi dan dekompresi teknik Arithmetic Coding File masukan (byte) Pengukuran ke Kompresi Dekompresi Waktu (detik) File keluaran (byte) Rasio kompresi (%) Waktu (detik) File keluaran (byte) 107.520 1 0.36 67.754 36.98 0.86 107.520 2 0.32 67.754 36.98 0.82 107.520 3 0.32 67.754 36.98 0.82 107.520 204.800 1 0.62 125.124 38.9 1.43 204.800 2 0.59 125.124 38.9 1.5 204.800 3 0.64 125.124 38.9 1.46 204.800 301.056 1 1.09 215.378 28.45 3.79 301.056 2 1.04 215.378 28.45 3.78 301.056 3 1.09 215.378 28.45 3.76 301.056 404.992 1 1.68 333.633 17.61 5.34 404.992 2 1.43 333.633 17.61 5.45 404.992 3 1.42 333.633 17.61 5.45 404.992 505.344 1 1.84 387.461 23.32 6.06 505.344 2 1.81 387.461 23.32 6 505.344 3 1.73 387.461 23.32 6.04 505.344
Tabel 6. Nilai rata-rata kompresi dan dekompresi teknik arithmetic coding File masukan (byte) Kompresi Dekompresi Waktu rata-rata (detik) File keluaran rata-rata (byte) Rasio kompresi rata-rata (%) Waktu rata-rata (detik) File keluaran rata-rata (byte) 107.520 0.333 67.754 36.98 0.833 107.520 204.800 0.616 125.124 38.9 1.463 204.800 301.056 1.073 215.378 28.45 3.776 301.056 404.992 1.51 333.633 17.61 5.413 404.992 505.344 1.793 387.461 23.32 6.033 505.344
Ferrianto Gozali & Mervyn, Analisis Perbandingan Kompresi Data Dengan Teknik Arithmatic
Tabel 7. Hasil pengukuran kompresi dan dekompresi teknik Run Length Encoding File masukan (byte) Pengukuran ke Kompresi Dekompresi Waktu (detik) File keluaran (byte) Rasio kompresi (%) Waktu (detik) File keluaran (byte) 107.520 1 0.29 92.306 14.14 0.31 107.520 2 0.29 92.306 14.14 0.26 107.520 3 0.31 92.306 14.14 0.29 107.520 204.800 1 0.51 163.486 20.17 0.5 204.800 2 0.53 163.486 20.17 0.53 204.800 3 0.51 163.486 20.17 0.51 204.800 301.056 1 0.65 226.154 24.87 0.65 301.056 2 0.71 226.154 24.87 0.71 301.056 3 0.7 226.154 24.87 0.65 301.056 404.992 1 1.03 349.880 13.6 1.04 404.992 2 1.12 349.880 13.6 1.09 404.992 3 1.07 349.880 13.6 1.06 404.992 505.344 1 1.39 425.387 15.82 1.21 505.344 2 1.29 425.387 15.82 1.21 505.344 3 1.32 425.387 15.82 1.15 505.344
Tabel 8. Nilai analisis rata-rata kompresi dan dekompresi teknik Run Length Encoding File masukan (byte) Kompresi Dekompresi Waktu Rata-rata (detik) File keluaran Rata-rata (byte) Rasio kompresi Rata-rata (%) Waktu Rata-rata (detik) File keluaran Rata-rata (byte) 107.520 0.296 92.306 14.14 0.286 107.520 204.800 0.516 163.486 20.17 0.513 204.800 301.056 0.686 226.154 24.87 0.67 301.056 404.992 1.073 349.880 13.6 1.063 404.992 505.344 1.333 425.387 15.82 1.19 505.344
Dari hasil perhitungan rata-rata yang didapat pada tabel 6 dan 8 diatas diperoleh grafik perbandingan antara kedua metoda kompressi diatas seperti pada gambar 4 dan 5 berikut ini.
JETri
,
Tahun Volume 4, Nomor 1, Agustus 2004, Halaman 37-52, ISSN 1412-0372 0 0,5 1 1,5 2 107,52 204,8 301,056 404,992 505,344Ukuran file (byte)
W a k tu ( d e ti k )
Arithmetic Coding Run Length Encoding
Gambar 4. Grafik Waktu Proses Kompresi Rata-rata
0 10 20 30 40 50 107,52 204,8 301,056 404,992 505,344
Ukuran file (byte)
R as io ( % )
Arithmetic Coding Run Length Encoding
Gambar 5. Grafik Rasio Kompresi Rata-rata
0 1 2 3 4 5 6 7 107,52 204,8 301,056 404,992 505,344
Ukuran file (byte)
w ak tu (d e ti k )
Arithmetic Coding Run Length Encoding
Ferrianto Gozali & Mervyn, Analisis Perbandingan Kompresi Data Dengan Teknik Arithmatic
5. KESIMPULAN
Dari hasil pengukuran dan uji coba yang dilakukan dapat disimpulkan hal hal sebagai berikut:
1. Dalam proses kompresi file dokumen menggunakan teknik Arithmetic Coding dihasilkan persentase rasio kompresi yang lebih baik dibandingkan dengan teknik Run Length Encoding yaitu sebesar 1,14 sampai 2,61 kali
2. Sedangkan perhitungan waktu untuk proses kompresi file dokumen menggunakan teknik Arithmetic Coding dihasilkan waktu yang lebih lama dibandingkan dengan teknik Run length Encoding yaitu sebesar 1,114 sampai 1,564 kali.
3. Dan untuk waktu dekompresi file dokumen menggunakan teknik
Arithmetic Coding dihasilkan waktu yang lebih lama dibandingkan dengan teknik Run Length Encoding yaitu sebesar 2,85 sampai 5,635 kali
Dari hasil analisis tersebut maka diketahui bahwa untuk setiap teknik kompresi dan dekompresi file dokumen menggunakan teknik Arithmetic Coding memiliki kelebihan dalam hal rasio kompresi tetapi membutuhkan waktu yang lebih lama. Sedangkan dengan menggunakan teknik Run Length Encoding memiliki rasio kompresi yang kurang tetapi membutuhkan waktu yang lebih cepat untuk proses kompresi dan dekompresi dibandingkan dengan teknik Arithmetic Coding.
DAFTAR PUSTAKA
1. Amir Said, Comparative Analysis of Arithmetic Coding Computational Complexity, Imaging Systems Laboratory, HP Laboratories Palo Alto California USA, April 21, 2004.
2. Bodden, Eric. Arithmetic Coding revealed. Online,
http://www.copro.org /download /ac_en.pdf, diakses 13 November 2004: 2.00 WIB.
3. Blelloch, Guy E. Introduction to Data Compression, Computer Science Department, Carnegie Mellon University, October 16, 2001, Online diakses 27 Maret 2005 6:25:12 AM.
4. Debra A. Lelewer and Daniel S. Hirschberg, Online, http://www.ics.uci.edu/~dan/pubs/ DataCompression.html, diakses 29 Maret 2005 7:07:03 AM.
5. Ian H. Willen, Radford M. Neal dan John G Cleary, Arithmetic Coding for Data Compression, Communications of the ACM June 1987 Volume 30 Number 6 Page 520 – 540.
JETri
,
Tahun Volume 4, Nomor 1, Agustus 2004, Halaman 37-52, ISSN 1412-03726. Haines H, Benny, Menguasai Java 2 & Object Oriented Programming, Andi Offset, Yogyakarta, 2004. pages 14 – 55.
7. Howard, Paul G and Vitter, Jeffrey S., Analysis of Arithmetic Coding for Data Compression, Department of Computer Science Brown University, Information Processing and Management Journal Volume 28, Number 6, November 1992, pages 749-763.
8. Nelson, Mark. The Data Compression Book. U.S.A. M&T Books, 1991, hal 32-47.
9. Hauck, S. dan Wilson, William D., Runlength Compression Techniques for FPGA Configurations, Dept. of ECE, Northwestern University, Evanston, IL 60208-3118 USA, IEEE Symposium on FPGAs for Custom Computing Machines, 1999.