You are on page 1of 16

JETri, Volume 4, Nomor 1, Agustus 2004, Halaman 37-52, ISSN 1412-0372

ANALISIS 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

* Alumni Jurusan Teknik Elektro-FTI, Universitas Trisakti


JETri, Tahun Volume 4, Nomor 1, Agustus 2004, Halaman 37-52, ISSN 1412-0372

yang 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 lossy data 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

38
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

39
JETri, Tahun Volume 4, Nomor 1, Agustus 2004, Halaman 37-52, ISSN 1412-0372

data 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:

1
H ( S )   Pi log 2 (1)
i Pi
dimana
Pi = probabilitas dari simbol
1
log 2 = Jumlah informasi yang terdapat dalam suatu simbol
Pi

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 :

1
H (S) = 
s{ a ,b , c , d }
P (s) log 2
P( s)
1 1
= ( 0.5  log2 ) + ( 0.25  log2 )+
0.5 0.25
1 1
0.125  log2 ) + ( 0.125  log2 )
0.125 0.125
= 0.5 * log2 2 + 0.25 * log2 4 + 0.125 * log2 8 + 0.125 *
log2 8
= 0.5 + 0.5 + 0.375 + 0.375
= 1,75 Bits / simbol

40
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

41
JETri, Tahun Volume 4, Nomor 1, Agustus 2004, Halaman 37-52, ISSN 1412-0372

Setelah 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

Disini low adalah output dari proses arithmetic coding.

42
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
seperti di atas, memiliki keterbatasan dalam pengolahan floating point nilai

43
JETri, Tahun Volume 4, Nomor 1, Agustus 2004, Halaman 37-52, ISSN 1412-0372

code 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

Untuk lebih jelas proses tersebut dapat dilihat pada tabel 4.

44
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

45
JETri, Tahun Volume 4, Nomor 1, Agustus 2004, Halaman 37-52, ISSN 1412-0372

ditutup 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 11111110 bit penanda


01000001 00001000
01000001 01000001
01000001
01000001 8X
01000001
01000001
01000001

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.

46
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,

47
JETri, Tahun Volume 4, Nomor 1, Agustus 2004, Halaman 37-52, ISSN 1412-0372

Paul 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
Kompresi Dekompresi
File
Pengukuran File Rasio File
masukan Waktu Waktu
ke keluaran kompresi keluaran
(byte) (detik) (detik)
(byte) (%) (byte)
1 0.36 67.754 36.98 0.86 107.520
107.520 2 0.32 67.754 36.98 0.82 107.520
3 0.32 67.754 36.98 0.82 107.520
1 0.62 125.124 38.9 1.43 204.800
204.800 2 0.59 125.124 38.9 1.5 204.800
3 0.64 125.124 38.9 1.46 204.800
1 1.09 215.378 28.45 3.79 301.056
301.056 2 1.04 215.378 28.45 3.78 301.056
3 1.09 215.378 28.45 3.76 301.056
1 1.68 333.633 17.61 5.34 404.992
404.992 2 1.43 333.633 17.61 5.45 404.992
3 1.42 333.633 17.61 5.45 404.992
1 1.84 387.461 23.32 6.06 505.344
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


Kompresi Dekompresi
File
File
masukan Waktu File keluaran Rasio Waktu
keluaran
(byte) rata-rata rata-rata kompresi rata-rata
rata-rata
(detik) (byte) rata-rata (%) (detik)
(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

48
Ferrianto Gozali & Mervyn, Analisis Perbandingan Kompresi Data Dengan Teknik Arithmatic

Tabel 7. Hasil pengukuran kompresi dan dekompresi teknik Run Length


Encoding
Kompresi Dekompresi
File
Pengukuran File Rasio File
masukan Waktu Waktu
ke keluaran kompresi keluaran
(byte) (detik) (detik)
(byte) (%) (byte)
1 0.29 92.306 14.14 0.31 107.520
107.520 2 0.29 92.306 14.14 0.26 107.520
3 0.31 92.306 14.14 0.29 107.520
1 0.51 163.486 20.17 0.5 204.800
204.800 2 0.53 163.486 20.17 0.53 204.800
3 0.51 163.486 20.17 0.51 204.800
1 0.65 226.154 24.87 0.65 301.056
301.056 2 0.71 226.154 24.87 0.71 301.056
3 0.7 226.154 24.87 0.65 301.056
1 1.03 349.880 13.6 1.04 404.992
404.992 2 1.12 349.880 13.6 1.09 404.992
3 1.07 349.880 13.6 1.06 404.992
1 1.39 425.387 15.82 1.21 505.344
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
Kompresi Dekompresi
File File Rasio
masukan Waktu Waktu File keluaran
keluaran kompresi
(byte) Rata-rata Rata-rata Rata-rata
Rata-rata Rata-rata
(detik) (detik) (byte)
(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.

49
JETri, Tahun Volume 4, Nomor 1, Agustus 2004, Halaman 37-52, ISSN 1412-0372

2
Waktu ( detik )

1,5
1
0,5
0
107,52 204,8 301,056 404,992 505,344
Ukuran file (byte)

Arithmetic Coding Run Length Encoding


Gambar 4. Grafik Waktu Proses Kompresi Rata-rata

50

40
Rasio (%)

30

20

10

0
107,52 204,8 301,056 404,992 505,344
Ukuran file (byte)

Arithmetic Coding Run Length Encoding


Gambar 5. Grafik Rasio Kompresi Rata-rata

7
6
waktu (detik)

5
4
3
2
1
0
107,52 204,8 301,056 404,992 505,344
Ukuran file (byte)
Arithmetic Coding Run Length Encoding

Gambar 6. Grafik Waktu Proses Dekompresi Rata-rata

50
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.

51
JETri, Tahun Volume 4, Nomor 1, Agustus 2004, Halaman 37-52, ISSN 1412-0372

6. 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.

52

You might also like