Analisis dan Implementasi Algoritma Kompresi Subexponential Codes dan Inverted Elias Delta Pada File Teks

6

BAB 2

TINJAUAN PUSTAKA

2.1. Kompresi Data
Kompresi data adalah sebuah proses yang dapat mengubah sebuah aliran data
masukan (sumber atau data asli) ke dalam aliran data yang lain (keluaran atau data
yang dimampatkan) yang memiliki ukuran yang lebih kecil (Salomon, 2007).
Kompresi data bertujuan untuk mengurangi redundansi yang terdapat dalam data
sehingga dapat disimpan atau ditransmisikan secara efisien (Sutardi, 2014).
Kompresi terdiri dari dua fase yaitu, Modeling dan Coding. Proses dasar dari
kompresi data adalah menentukan serangkaian bagian dari data (stream of symbols)
mengubahnya menjadi kode (stream of codes). Jika proses kompresi efektif maka
hasil dari stream of codes akan lebih kecil dari segi ukuran dari pada stream of
symbols (Sayood & Kaufmann, 2012). Modeling adalah kumpulan data dan aturan
yang menentukan pasangan antara symbol sebagai input dan code sebagai output dari
proses kompresi. Sedangkan coding adalah proses untuk menerapkan modeling
tersebut menjadi sebuah proses kompresi data (Sayood & Kaufmann, 2012). Dengan
adanya kompresi data maka data yang telah dikompresi akan memperkecil kuota atau

bandwith dalam pengiriman data melalui internet (Viliana, 2014). Proses kompresi
dan dekompresi data dapat ditunjukan melalui diagram blok seperti pada Gambar 2.1.

Gambar 2.1. Diagram Blok Proses Kompresi dan Dekompresi Data (Viliana, 2014)

Universitas Sumatera Utara

7

2.1.1. Teknik Kompresi Data
Terdapat banyak metode untuk kompresi data. Metode-metode tersebut lahir dari ide
yang berbeda-beda. Namun, prinsip dasar yang menjadi dasar tiap metode adalah
sama, yaitu mengkompresi data dengan menghilangkan redundancy dari data asli.
Salomon, 2004). Teknik kompresi data dikelompokkan menjadi dua bagian yaitu
kompresi data lossless dan kompresi data Lossy (Erdiansyah, 2014):
1.

Metode Lossless

Kompresi yang menggunakan metode Lossless ini berarti tidak ada data yang hilang

selama proses kompresi berjalan. Lossless data kompresi adalah kelas dari algoritma
data kompresi yang memungkinkan data yang asli dapat disusun kembali dari data
kompresi. (Sayood & Kaufmann, 2012).
2.

Metode Lossy

Kompresi yang menggunakan metode lossy ini berarti terjadi beberapa bagian
komponen dari data yang hilang akibat dari proses kompresi. Lossy kompresi adalah
suatu metode untuk mengkompresi data dan men-dekompresinya. Lossy kompresi ini
paling sering digunakan untuk kompres data multimedia (Audio, gambar diam)
(Sayood & Kaufmann, 2012).

2.1.2. Konsep Kompresi Data
Suatu metode pada kompresi data akan menghasilkan bit (satuan terkecil pembentuk data)
baru yang lebih pendek dibandingkan oleh bit data sebelum dikompresi. Bit data yang
lebih pendek tersebut biasanya tidak akan bisa dibaca oleh komputer sebelum dilakukan
proses kompresi. Pada proses kompresi, bit data tersebut dibaca setiap delapan bitnya,
sehingga membentuk satu karakter yang dapat dibaca oleh komputer. Begitu juga
sebaliknya, pada saat dekompresi bit data tersebut di dekompres kembali agar membentuk

bit data semula yang akan digunakan dalam proses dekompresi. Karena pada saat proses
dekompresi dibutuhkan bit data sebelum di kompres untuk dapat dibaca kembali dalam
proses dekompresi (Erdiansyah, 2014).

Sebelum melakukan proses kompres, bit data hasil kompresi tadi diperiksa
dahulu apakah jumlah total bit tersebut merupakan kelipatan delapan (habis dibagi
Universitas Sumatera Utara

8

delapan). Karena di dalam komputer satu karakter direpresentasikan oleh bilangan
ASCII (American Standard Code for Information Interchange) sebanyak delapan bit
dalam bilangan biner. Jika ternyata jumlah bit data tersebut bukan merupakan
kelipatan delapan. Maka dibentuk variabel baru sebagai penambahan bit data itu agar
bit data tersebut habis dibagi delapan. Variabel ini disebut padding dan flag
(Budiman, 2016):
1.

Padding


Padding adalah penambahan bit 0 sebanyak kekurangan jumlah bit data pada hasil
proses kompresi sehingga jumlah keseluruhan bit data tersebut merupakan kelipatan
delapan (habis dibagi delapan). Contoh misalkan dihasilkan bit data hasil kompresi
yaitu 1100101101010001100001101. Terdapat 25 bit data dalam bilangan biner.
Maka dilakukan penambahan bit 0 sebanyak 7 kali agar jumlah bit data tersebut habis
dibagi delapan. Sehingga bit data itu menjadi 11001011010100011000011010000000
setelah diberikan padding (Budiman, 2016).
2.

Flag

Flag adalah penambahan bilangan biner sepanjang delapan bit setelah padding dimana
flag ini adalah sejumlah bilangan yang memberikan sebuah tanda bahwa terdapat n
buah padding di dalam bit data hasil dari kompresi. Penambahan flag ini dimaksudkan
untuk mempermudah dalam membaca bit data hasil kompresi pada saat proses
dekompresi. Contoh misalkan bit data yang telah diberikan padding adalah
11001011010100011000011010000000. Karena terdapat 7 bit penambahan padding
maka flag nya adalah bilangan biner dari 7 dengan panjang 8 bit yaitu 00000111.
Sehingga


bitdatanya

menjadi

1100101101010001100001101000000000000111

setelah diberikan flag (Budiman, 2016).

2.1.3. Parameter Analisis Kinerja Algoritma Kompresi
Pada suatu teknik yang digunakan dalam proses kompresi data terdapat beberapa
faktor atau variabel yang biasa digunakan untuk mengukur kualitas dari suatu teknik
kompresi data tersebut, yaitu (Salomon & Motta, 2010):

Universitas Sumatera Utara

9

1.

Ratio of compression (Rc)


Ratio of compression (Rc) adalah perbandingan antara ukuran data sebelum
dikompresi dengan ukuran data setelah dikompresi (Salomon & Motta, 2010).


=



Misalkan didapat sebuah nilai Ratio of compression sebesar 2.75. Itu berarti besar data
sebelum kompresi adalah 2.75 kali lipat dari besar data setelah dikompresi.
2.

Compression ratio (Cr)

Compression ratio (Cr) adalah persentasi besar data yang telah dikompresi yang
didapat dari hasil perbandingan antara ukuran data setelah dikompresi dengan ukuran
data sebelum dikompresi (Salomon & Motta, 2010).
=





100 %

Misalkan didapat sebuah nilai Compression ratio sebesar 35%. Itu berarti setelah
dikompresi ukuran data adalah 35% dari data sebelum dikompresi.
3.

Space Saving (Ss)

Space Saving (Ss) adalah Presentase selisih ukuran data setelah di kompres dengan
ukuran data sebelum dikompres (Salomon & Motta, 2010).
=








Misalkan didapat sebuah nilai Space Saving sebesar 140 bit. Itu berarti 140 ÷ 4 =
17,5 byte untuk persentase selisih antara ukuran data semula dengan data yang telah
di kompres.
4.

Time Process (t)

Time Process (t) adalah waktu yang berjalan selama proses kompresi dan dekompresi.
Waktu kompresi dan dekompresi adalah waktu yang dibutuhkan oleh sebuah sistem
untuk melakukan proses kompresi dan dekompresi dari mulai pembacaan data hingga
proses kompresi pada data tersebut. Semakin kecil waktu yang diperoleh maka
semakin efisien metode yang digunakan (Salomon & Motta, 2010).

Universitas Sumatera Utara

10

2.2. Dekompresi Data
Dekompresi adalah mengembalikan informasi ke bentuk semula. Teknik dekompresi

memiliki proses dekoding dan encoding yang menjadikan data menjadi lebih besar
dibandingkan data yang sebelumnya, secara keseluruhan dipengaruhi faktor
kecepatan, berbanding dengan kualitas data hasil dekompresi.

2.3. Algoritma
Algoritma merupakan suatu metode khusus yang tepat dan terdiri dari serangkain
langkah yang terstruktur dan dituliskan secara sistematis yang akan dikerjakan untuk
menyelesaikan suatu masalah dengan bantuan komputer (Napitupulu & Sihombing,
2010). Algoritma merupakan suatu prosedur untuk melakukan satu tugas spesifik
berupa gagasan dibalik suatu program (Hariyanto, 2008).
Dalam algoritma kompresi data, tidak ada algoritma yang cocok untuk semua
jenis data. Hal ini disebabkan karena data yang akan dimampatkan harus dianalisis
terlebih dahulu, dan berharap menemukan pola tertentu yang dapat digunakan untuk
memperoleh data dalam ukuran yang lebih kecil. Karena itu muncul banyak
algoritma-algoritma kompresi data (Hariyanto, 2008).
Sebuah algoritma kompresi dapat dievaluasi dalam sejumlah cara yang
berbeda. Yang di ukur adalah kompleksitas relatif dari algoritma kompresi, memori
yang diperlukan untuk melaksanakan algoritma, seberapa cepat algoritma melakukan
pada mesin yang diberikan, jumlah kompresi, dan bagaimana erat rekonstruksi
menyerupai aslinya (Sayood & Kaufmann, 2012).


2.4. Algoritma Subexponential Codes
Subexponential Codes merupakan algoritma yang menghasilkan bit tertentu yang
merupakan kode tidak relevan. Mengingat satu set kode yang memiliki sifat-sifat yang
diinginkan (Li & Chakrabarty, 2004). Pada Algoritma Subexponential Codes tidak
memeriksa bit satu persatu dari kode dan objek jika ada kelangkaan 0 atau terlalu
sedikit 1. Namun, mungkin ada aplikasi di mana hal ini menguntungkan untuk
Universitas Sumatera Utara

11

memiliki kode yang memulai atau mengakhiri dengan cara yang khusus, seperti pada
Algoritma Subexponential Codes ini yang menyajikan kode awalan yang berakhir
dengan 1 (Salomon, 2007).
Beberapa cara untuk membangun kode tersebut dan membuktikan berikut ini
batas pada panjang rata-rata mereka. Rata-rata panjang E dari kode layak optimal
untuk sumber diskrit dengan entropi H memenuhi H + pN ≤ E ≤ H + 1.5 di mana pN
adalah probabilitas terkecil simbol dari sumber (Salomon, 2007).

n

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

Tabel 2.1. Tabel Kode k Subexponential Codes (Salomon, 2007)
k=0
k=1
k=2
k=3
k=4
0
0 0
0 00
0 000
0 0000
10
0 1
0 01
0 001
0 0001
110 0
10 0
0 10
0 010
0 0010
110 1
10 1
0 11
0 011
0 0011
1110 00
110 00
10 00
0 100
0 0100
1110 01
110 01
10 01
0 101
0 0101
1110 10
110 10
10 10
0 110
0 0110
1110 11
110 11
10 11
0 111
0 0111
11110 000
1110 000
110 000
10 000
0 1000
11110 001
1110 001
110 001
10 001
0 1001
11110 010
1110 010
110 010
10 010
0 1010
11110 011
1110 011
110 011
10 011
0 1011
11110 100
1110 100
110 100
10 100
0 1100
11110 101
1110 101
110 101
10 101
0 1101
11110 110
1110 110
110 110
10 110
0 1110
11110 111
1110 111
110 111
10 111
0 1111
111110 0000 11110 0000 1110 0000 110 0000 10 0000

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

k=5
00000
00001
00010
00011
00100
00101
00110
00111
01000
01001
01010
01011
01100
01101
01110
01111
10000

2.5. Algoritma Inverted Elias Delta
Inverted Elias Delta adalah kebalikan dari Elias Delta Code. Elias Delta Code adalah
sebuah algoritma kompresi yang dibuat oleh Peter Elias menggunakan kode yang
telah di buat sebelumnya, yaitu Elias Gamma Code (Salomon, 2007).
Pada Elias Gamma Code, ada tambahan kode dalam unary (!). Dalam kode
berikutnya # (delta), ditambahkan pada panjang kode dalam biner ($). Maka Elias
Delta Code, yang juga untuk bilangan bulat positif, sedikit lebih kompleks (Salomon,
2007). Untuk membangun kode Inverted Elias Delta selalu diumpamakan dengan =
1,2,3, … dst. Untuk ≥ 1 , gunakan rumus dibawah ini (Salomon, 2007):
Universitas Sumatera Utara

12

=
)*
( )
+ = * ( )
+ =
)*
(+)
* (+ ) = ,- *)ℎ / (+ )
0* ) 1 * )
= (* (+ ) − 1 ) ∗ "0" + "+ " + "
Contoh 1 :
= 1
= 1(B)
+=1
+ = 1(B)
* (+ ) = 1
0* ) 1 * )
= (* (+ ) − 1 ) ∗ "0" + "+ " + "
= (1 − 1 ) ∗ "0" + "1"
= "0" + "1"
= 1
C D
0* ) 1 * ) = 0
Input Text File

56786 9 :;;7?@ 6A6= "

56786 9 :;;7?@ 6A6= "

Timer Start

Scanning File Content
Create Characters Map Code
and
Frequency For Each Character
Sort Z-A
Create Inverted Elias Delta Code Table
Replace File Content According
To Inverted Elias Delta Code Table
Generate Elias Delta Code
To ASCII Code
Save The Result To Output File

Timer Stop

Compression Ratio
Space Saving
Compression Speed

Gambar 2.2. Gambar Proses Kompresi dari Algoritma Inverted Elias DeltaCode
(Antoni, et al, 2014)

Tabel 2.2. Tabel Kode Elias Delta Code (Salomon, 2007)
1=1
2 = 0100
3 = 0101
4 = 01100
5 = 01101
6 = 01110
7 = 01111
8 = 0100000

11 = 0100011
12 = 0100100
13 = 0100101
14 = 0100110
15 = 0100111
16 = 01010000
17 = 01010001
18 = 01010010
Universitas Sumatera Utara

13

9 = 0100001
10 = 0100010

19 = 01010011
20 = 01010100

Sehingga didapat kodeInverted Elias Delta yaitu kebalikan dari Elias Delta Code.
Tabel 2.3. Tabel Kode Inverted Elias Delta (Salomon, 2007)
1=0
2 = 1011
3 = 1010
4 = 10011
5 = 10010
6 = 10001
7 = 10000
8 = 1011111
9 = 1011110
10 = 1011101

11 = 1011100
12 = 1011011
13 = 1011010
14 = 1011001
15 = 1011000
16 = 10101111
17 = 10101110
18 = 10101101
19 = 10101100
20 = 10101011

Input Text File
Timer Start
Generate File Content
To Binary
Restore to Beginning Bit String
Replace Bit String Base On
Inverted Elias Delta
Code Table
Save The Result To Output File
Timer Stop
Decompression Speed

Gambar 2.3. Gambar Proses Dekompresi Algoritma Elias Delta (Antoni, et al,
2014)

2.6. File Teks
File merupakan kumpulan informasi yang biasanya disimpan dalam sebuah disk
komputer, dimana informasi disimpan dalam bentuk file yang dikemudian hari dapat
diambil kembali (Hariyanto, 2008). Masukan dan keluaran data teks direpresentasikan
sebagai set karakter atau sistem kode yang dikenal oleh sistem komputer, dalam hal
ini penulis menggunakan kode ASCII (Suprapto, et al, 2008). ASCII (American
Universitas Sumatera Utara

14

Standard Code for Information Interchange) merupakan suatu standar internasional
dalam kode huruf dan simbol dan kode ASCII lebih bersifat universal. ASCII
digunakan oleh komputer dan alat komunikasi lain untuk menunjukkan tek (Suprapto,
et al, 2008). Dalam hal ini penulis menggunakan input-an format teks berupa teks
sederhana (Plain Text) berekstensi (*.txt). Saat ini perangkat lunak yang paling
banyak digunakan untuk memanipulasi format data ini adalah Notepad (Suprapto, et
al, 2008).

Gambar 2.4. Gambar Text File Sederhana

2.7. Unified Modeling Language (UML)
Unified Modeling Language (UML) merupakan kesatuan dari bahasa pemodelan yang
dikembangkan oleh Booch, Object Modeling Technique (OMT) dan Object Oriented
Software Engineering (OOSE) yang menjadikan proses analisis dan desain ke dalam
empat tahapan iteratif, yaitu identifikasi kelas-kelas dan objek-objek, identifikasi
semantik dari hubungan objek dan kelas tersebut, perincian interface dan
implementasi (Munawar, 2005). Dalam penelitian ini, hanya akan menggunakan 4
jenis UML di antaranya adalah Use Case Diagram, Activity Diagram, Sequence
Diagram dan Class Diagram.
1.

Use Case Diagram
Use case diagram adalah serangkainan scenario yang digabungkan bersamasama oleh tujuan umum pengguna (Munawar, 2005). Pada Use case diagram
pengguna biasanya disebut dengan actor, actor adalah sebuah peran yang bisa
dimainkan oleh pengguna dalam interaksinya dengan sistem (Munawar, 2005).

2.

Activity Diagram
Universitas Sumatera Utara

15

Activity diagram adalah teknik untuk mendeskripsikan logika procedural, aliran
kerja dalam banyak kasus (Munawar, 2005).
2.

Sequence Diagram
Sequence diagram digunakan untuk menggambarkan perilaku pada sebuah
scenario, pada diagram ini menunjukkan sejumlah contoh objek dan pesan yang
diletakkan diantara objek-objek di dalam use case diagram (Munawar, 2005).

3.

Class Diagram
Class diagram adalah sebuah spesifikasi yang menunjukkan adanya hubungan
antar class dalam sistem yang sedang dibangun (Hermawan, 2003).

2.8. Bahasa Pemograman C#
C# merupakan sebuah program yang lengkap untuk membangun desktop dan Mobile.
Pemograman C# atau sering disebut dengan C Sharp adalah sebuah bahasa
pemograman yang berorientasi objek yang dikembangkan oleh Microsoft (Seputra,
2013). C# menyediakan beberapa tool untuk otomatisasi proses development, yaitu
visual tool untuk melakukan beberapa operasi pemograman, desain umum, dan
tampilan antar muka (Mackenzie & Sharkey, 2004). C# bias digunakan untuk
membuat berbagai macam aplikasi, seperti pengolahan data, grafik, spreadsheet, atau
bahkan membuat compiler untuk sebuah bahasa pemograman (Nugroho, et al, 2013).
Penulis menggunakan Microsoft Visual Studio 2010.

Gambar 2.5. Gambar Tampilan Awal Microsoft Visual Studio 2010

Universitas Sumatera Utara

16

2.9.

Penelitian Yang Relevan

Berikut ini beberapa penelitian yang terkait dengan algoritma Subexponential Codes
dan Inverted Elias Delta, adalah sebagai berikut:
1.

Umri Erdiansyah (2014) dalam Skripsi yang berjudul Perbandingan Algoritma
Elias Delta Code dengan Levenstein untuk Kompresi File Teks. Dalam skripsi
ini, dapat disimpulkan bahwa hasil pengujian kompresi file teks dengan karakter
yang berbeda (heterogen) berdasarkan (RC), (CR), (RD) dan waktu kompresi
menunjukkan bahwa metode Elias Delta Code lebih baik dibandingkan dengan
metode Levenstein dengan rasio kompresi rata-rata sebesar 134.40%. Dan
dengan karakter yang sama dan karakter yang berbeda dengan metode
Levenstein dan Elias Delta Code menunjukkan bahwa Elias Delta memerlukan
waktu yang lebih sedikit untuk mengembalikan file teks hasil kompresi ke file
teks semula, dengan rata-rata 7.286 sekon untuk homogen dan 63.275 sekon
untuk heterogen (Erdiansyah, 2014).

2.

Antoni, Erna Budhiarti Nababan, dan Muhammad Zarlis (2014) dalam jurnal
yang berjudul Results Analysis of Text Data Compression On Elias Gamma
Code, Elias Delta Code and Levenstein Code. Dalam jurnal ini, maka dapat
disimpulkan bahwa rasio kompresi yang dihasilkan oleh algoritma Elias Gamma
memberikan rasio kompresi yang paling baik dalam penelitian ini, yang kedua
adalah algoritma Elias Delta dan yang terakhir adalah algoritma Levenstein.
Oleh karena itu, nilai penghematan ruang yang dihasilkan dari rasio kompresi
dengan mengurangi 100% dengan rasio kompresi dalam hal itu dihasilkan oleh
algoritma Elias Gamma, kemuadia algoritma Elias Delta dan yang terakhir
algoritma Levenstein. Besarnya rasio kompresi tergantung pada jumlah set
karakter dan jumlah terjadinya masing-masing karakter. Untuk kecepatan
kompresi, algoritma Elias Gamma membutuhkan waktu minimum dibandingkan
dengan Elias Delta dan Levenstein (Antoni, et al, 2014).

3.

Li, Lei. & Chakrabarty, K. (2004) dalam jurnal yang berjudul On Using
Exponential-Golomb Codes and Subexponential Codes for System-on-a-Chip
Test Data Compression* (Li & Chakrabarty, 2004).

Universitas Sumatera Utara