Perbandingan Algoritma Fibonacci Code dan Algoritma Inverted Elias Gamma Code Dalam Kompresi File Teks

5

BAB 2
TINJAUAN PUSTAKA

2.1. Kompresi Data
Kompresi data adalah proses mengubah sebuah aliran data input menjadi aliran data
baru yang memiliki ukuran lebih kecil. Aliran yang dimaksud adalah berupa file
ataupun buffer dalam memori. Kebutuhan terhadap kompresi data dipengaruhi oleh
dua alasan, yaitu kecenderungan manusia untuk mengumpulkan data dan kebutuhan
terhadap proses transfer data yang cepat. Karena itu metode-metode untuk
mengkompresi data semakin berkembang. (Salomon, 2007)
Terdapat banyak metode untuk kompresi data. Metode-metode tersebut lahir
dari ide yang berbeda-beda, cocok untuk berbagai tipe data, dan menghasilkan output
yang berbeda-beda. Namun, prinsip dasar yang menjadi dasar tiap metode adalah
sama, yaitu mengkompresi data dengan menghilangkan redundancy dari data asli.
(Salomon, 2007)
Proses Kompresi dan Dekompresi data dapat ditunjukkan melalui diagram blok seperti
pada Gambar 2.1.
Uncompressed


Kompresi

data

Compressed
data

Dekompresi

Compressed
data

Uncompressed
data

Gambar 2.1. Diagram Blok Proses Kompresi dan Dekompresi Data

Universitas Sumatera Utara

6


Kompresi data dibagi menjadi dua kategori yaitu:
1. Kompresi data bersifat loseless. Algoritma kompresi tergolong lossless jika
memungkinkan data yang sudah dikompres dapat direkonstruksi kembali persis
sesuai dengan data original. Teknik ini menjamin tidak ada kehilangan sedikitpun
detil atau kerusakan pada data. Lossless compression disebut juga dengan
reversible compression karena data asli bisa dikembalikan dengan sempurna. Akan
tetapi rasio kompresinya sangat rendah, misalnya pada gambar seperti GIF dan
PNG. Contoh data yang cocok adalah gambar medis, teks, program, spreadsheet
dan lain-lain. Beberapa algoritma yang tergolong dalam jenis ini adalah algoritma
Shannon-Fano, algoritma Run Length Coding, algoritma Variable Length Binary
Encoding, algoritma Fixed Length Binary Encoding, algoritma Huffman, algoritma
LZW, dan algoritma Arithmetic Coding ( Pareker, 2014).
2. Kompresi data bersifat lossy. Algoritma kompresi tergolong lossy jika tidak
memungkinkan data yang sudah dikompres dapat direkonstuksi kembali persis
sesuai dengan data asli. Hal ini memanfaatkan keterbatasan panca indera manusia.
Maka, sebuah perkiraan yang mendekati keadaan original dalam membangun
kembali data merupakan hal yang diperlukan untuk mencapai keefektifan
kompresi. Contoh data yang cocok adalah gambar, suara dan video. Adapun
beberapa algoritma yang tergolong dalam jenis ini adalah algoritma Wavelet

Compression, CELP, JPEG, MPEG-1 dan WMA.
2.1.1. Parameter Analisis Kompresi
Pada suatu teknik yang digunakan dalam proses kompresi data terdapat beberapa
faktor atau variabel yang biasa digunakan untuk menganalisa kualitas dari suatu
teknik kompresi data tersebut yaitu :
1. Ratio of Compression (RC)
Ratio of Compression (RC) adalah nilai perbandingan antara ukuran bit data
sebelum dikompresi dengan ukuran bit data yang telah dikompresi. Secara
matematis dapat dituliskan sebagai berikut (Salomon, 2010):
…………………..….....………………(1)

Universitas Sumatera Utara

7

2. Compression Ratio (CR)
Compression Ratio (CR) adalah persentase perbandingan antara data yang sudah
dikompresi dengan data yang belum dikompresi. Secara matematis dapat dituliskan
sebagai berikut (Salomon, 2010):
……...……….……...…(2)


3. Redudancy (Rd)
Redudancy (Rd) adalah kelebihan yang terdapat di dalam data sebelum
dikompresi. Jadi setelah dikompresi dapat dihitung Redudancy data yaitu persentasi
dari hasil selisih antara ukuran data sebelum dikompresi dengan data setelah
dikompresi (Salomon, 2010).
Rd = 100% ─

…………………………………….……………….……...…..(3)

4. Waktu kompresi dan dekompresi
Waktu kompresi dan dekompresi adalah waktu yang dibutuhkan untuk melakukan
proses kompresi dan dekompresi. Semakin kecil waktu yang diperoleh maka
semakin efisien metode yang digunakan dalam proses kompresi dan dekompresi itu
2.2. File Teks
File teks adalah karakter-karakter dari string yang menjadi satu kesatuan. Teks yang
memuat banyak karakter di dalamnya selalu menimbulkan masalah pada media
penyimpanan dan kecepatan waktu pada saat transmisi data. File teks merupakan file
yang berisi informasi-informasi dalam bentuk teks. Data yang berasal dari dokumen
pengolah kata, angka yang digunakan dalam perhitungan, nama dan alamat dalam

basis data merupakan contoh masukan data teks yang terdiri dari karakter, angka dan
tanda baca.
Masukan dan keluaran data teks direpresentasi sebagai set karakter atau sistem
kode yang dikenal oleh sistem komputer. Ada tiga macam set karakter yang umum
digunakan untuk masukan dan keluaran pada komputer, yaitu ASCII, Unicode, dan
EBCDIC, ASCII (American Standard Code for Information Interchange) merupakan
suatu standar internasional dalam kode huruf dan symbol seperti Hex, dan Unicode

Universitas Sumatera Utara

8

tetapi ASCII bersifat lebih universal. ASCII digunakan oleh komputer dan alat
komunikasi lain untuk menunjukkan teks. Kode ASCII memiliki komposisi bilangan
biner sebanyak 8 bit, dimulai dari 00000000 dan 11111111. Total kombinasi yang
dihasilkan sebanyak 256, dimulai dari kode 0 hingga 255 dalam sistem bilangan
desimal. Unicode adalah suatu standar industri yang dirancang untuk mengizinkan
teks dan symbol dari semua sistem tulisan di dunia untuk ditampilkan dan
dimanipulasi secara konsisten oleh komputer, EBCDIC ( Extended Binary Code
Decimal Interchange Code) merupakan set karakter yang diciptakan oleh komputer

merk IBM. EBCDIC terdiri dari 256 karakter yang masing-masing berukuran 8 bit.

2.2.1. Format Teks
Tipe teks merupakan tipe dasar yang sudah sangat dikenal dalam kehidupan seharihari. Tipe teks terdiri dari tipe karakter (char) dan tipe string. Tipe karakter (char)
terdiri atas satu huruf, angka, tanda baca, atau karakter khusus seperti “c”,”1”,”#” dan
sebagainya. Tipe string terdiri atas nol atau lebih karakter seperti “teks” dan
“algoritma” dan sebagainya.
Secara umum, format data teks dibagi menjadi dua bagian, yaitu (Purnomo, 2005) :
1. Teks sederhana (Plain text )
Format data teks (*txt) merupakan contoh format teks jenis ini yang paling popular.
2. Teks terformat (format text)
Merupakan teks yang terformat dan mengandung styles. Format data dokumen
Micrososft Word (*.doc) merupakan contoh format teks jenis ini yang paling
popular.

Contoh format data teks di atas beserta perangkat lunak yang biasa digunakan
diantaranya adalah (Erdiansyah, 2014):
1. Format data teks (*.txt)
Format data teks merupakan format teks yang digunakan untuk menyimpan huruf,
angka, karakter control (tabulasi, pindah baris, dan sebagainya) atau symbol-simbol

lain yang biasa digunakan dalam tulisan seperti titik, koma, tanda petik, dan
sebagainya. Satu huruf, angka, karakter control atau symbol pada arsip teks

Universitas Sumatera Utara

9

memakan tempat satu byte. Berbeda dengan jenis teks terformat yang satu huruf
saja dapat memakan tempat beberapa byte menyimpan format dari huruf tersebut
seperti font, ukuran, tebal atau tidak dan sebagainya. Kelebihan dari format data
teks ini adalah ukuran datanya yang kecil karena tiadanya fitur untuk memformat
tampilan teks. Saat ini perangkat lunak yang paling banyak digunakan untuk
memanipulasi format data ini adalah Notepad.
2. Format data dokumen (*.doc)
Doc merupakan ekstensi arsip dokumen perangkat lunak Microsoft Word yang
paling banyak digunakan dalam Menulis laporan, makalah dan sebagainya. Doc
merupakan jenis teks terformat yang tidak hanya dapat mengatur tampilan teks
seperti styles (font, ukuran huruf, dan sebagainya), namun juga dapat menyisipkan
gambar. Kekurangan format teks dokumen ini terletak pada ukuran datanya yang
besar.

3. Rich text format (*.rtf)
Format teks ini dikembangkan oleh Microsoft yang dapat dibaca oleh berbagai
macam platform, seperti Windows, Linux, Mac OS dan sebagainya.
2.3. Algoritma
Abu Ja’far Muhammad Ibnu Musa Al-Khwarizmi: Ahli matematika dan astronomi
Persia, penulis buku “Aljabar wal muqabala” beberapa abad yang lalu (diperkirakan
wafat pada tahun 850), dianggap sebagai pencetus pertama algoritma karena di dalam
buku tersebut Abu Ja’far menjelaskan langkah-langkah dalam menyelesaikan berbagai
persoalan aritmetika (aljabar). Kemungkinan besar kata algoritma diambil dari kata
al-kwarizmi yang kemudian berubah menjadi agorism, selanjutnya menjadi algorithm.
Defenisi algoritma adalah teknik penyusunan langkah-langkah penyelesaian masalah
dalam bentuk kalimat dengan jumlah kata terbatas tetapi tersusun secara logis dan
sistematis (Ariani, R 2013).
2.4. Algoritma Fibonacci Code
Leonardo Pisano Fibonacci adalah seorang ahli matematika Italia, Dia dianggap
sebagai Matematikawan terbesar dari abad Pertengahan, Dia berperan penting dalam
menghidupkan kembali matematika kuno. Dalam bukunya yang berjudul Liber Abaci,
memperkenalkan Eropa dengan notasi Hindu-Arab untuk bilangan (Salomon, 2007).

Universitas Sumatera Utara


10

Leonardo Pisano Fibonacci lahir sekitar tahun 1170 dan meninggal sekitar
tahun 1250 di Pisa, Italia. Dia menulis teks matematika, antara lain memperkenalkan
Eropa dengan notasi Hindu- Arab untuk bilangan. Meskipun buku-bukunya harus
ditulis dengan tangan, tetapi teks tentang natematika beredar luas (Suzyanna, 2011).
Sekarang deret Fibonacci adalah salah satu objek matematika terkenal.
Bilangan Fibonacci didefinisikan sebagai barisan bilangan yang suku-sukunya
merupakan penjumlahan 2 suku sebelumnya. Bilangan Fibonacci dapat ditunjukkan
sebagai barisan bilangan:
0,1,1,2,3,5,8,13,21,34,55,89,144,233,…
Langkah-langkah dalam pembuatan sebuah kode Fibonacci adalah sebagai berikut:
1. Tentukan sebuah bilangan bulat positif n yang lebih besar atau sama dengan 1
2. Temukan bilangan Fibonacci f terbesar yang lebih kecil atau sama dengan n,
kurangkan nilai n dengan f dan catat sisa pengurangan nilai n dengan f.
3. Jika bilangan yang dikurangkan adalah bilangan yang terdapat dalam deret
Fibonacci F(i), tambahkan angka “1” pada i-2 dalam kode Fibonacci yang akan
dibentuk.
4. Ulangi langkah 2, tukar nilai n dengan sisa pengurangan nilai n dengan f sampai

sisa pengurangan nilai n dengan f adalah 0.
5. Tambahkan angka “1” pada posisi paling kanan kode Fibonacci yang akan
dibentuk.

2.5. Algoritma Inverted Elias Gamma Code
Elias Gamma Code (n) adalah algoritma yang dibuat oleh Peter Elias pada tahun
1975. Algoritma ini adalah kode umum yang digunakan untuk meng-encode
(kompresi) dan decode (dekompresi) bilangan bulat positif (n) meskipun pada
bilangan bulat yang besar (Sitepu, 2014).
Elias Gamma kebanyakan digunakan ketika pengkodean integer yang mempunyai
upper-bound tidak dapat diperiksa sebelumnya. Adapun aturan untuk kompresi sebuah
bilangan dengan menggunakan Elias Gamma adalah sebagai berikut :

Universitas Sumatera Utara

11

1. Tentukan nilai bilangan positif n.
2. Ubah nilai n ke dalam bentuk bilangan biner kemudian biner tersebut di
invertedkan (β(n)).

3. Hitung panjang dari | β(n) | dan tetapkan sebagai nilai M.
4. Tentukan kode unary ɥ (M) dengan cara (M-1)* “0” + “1”.
5. Buatkan kode Elias Gamma dengan menggabungkan bilangan β(n) dan ɥ(M).
6. Hapus bit yang paling kiri.
Pengkodean Gamma tidak melakukan pengkodean pada bilangan bulat nol
ataupun negatif. Salah satu cara untuk menangani nol adalah menambahkan 1 sebelum
pengkodeaan dan kemudian mengurangi dengan 1 setelah dilakukan proses decoding.
Salah yang lain adalah memberi prefix pada semua kode bukan nol dengan 1 dan
kemudian kode nol sebagai suatu 0 tunggal. Salah satu cara untuk mengkodekan
semua integer adalah membentuk suatu bijeksi, yaitu pemetaan bilangan bulat (0, 1, 1, 2, - 2, 3, -3, ...) hingga (1, 2, 3, 4, 5, 6, 7, ...) sebelum pengkodean dimulai.
Banyak algoritma kompresi menggunakan nilai bilangan bulat, seperti RLE
yang melakukan penggantian terhadap karakter yang berulang dengan kode tertentu
dan LZ77 melakukan pencocokan panjang string yang berdasarkan atas posisi offset.
Setiap algoritma perlu untuk merepresentasikan nilai integer yang memberikan
kelebihan jika dapat diatur pengurangan jumlah bit diperlukan untuk hal ini. Dari
penjelasan ini tampak mengenai pengkode dari bilangan-bilangan buat ini sagat
penting. Metode encoding apa yang dipilih bergantung kepada distribusi dan jangkuan
dari nilai. Jika nilai yang terdistribusi rata-rata pada jangkauan seluruhnya, suatu
representasi biner langsung merupakan pilihan yang optimal. Jumlah bit yang
diperlukan tentunya juga bergantugn kepada jangkauan ini. Jika tidak terdapat batas
atas terdefinisi pada nilai integer tersebut, kode biner langsung tidak dapat digunakan
dan salah dari pengkodean Elias seperti Elias Gamma harus dipilih. Elias Gamma
mengasumsikan bahwa nilai bilangan bulat yang kecil lebih dapat diproses. Pada
kenyataan ini mengasumsikan (atau kelebihan dari) suatu distribusi yang proporsional.
Nilai yang menggunakan n bit harus dua kali lebih menguntungkan dibandingkan nilai
yang menggunakan n + 1 bit. Dalam pengkodean ini jumlah bit nol sebelum bit satu
pertama (suatu kode unary) mendefinisikan seberapa banyak bit untuk didapatkan
(Antoni, 2014).

Universitas Sumatera Utara

12

2.6. Kompleksitas Algoritma
Kompleksitas algoritma adalah ukuran yang dibutuhkan untuk melakukan komputasi
pada algoritma yang digunakan. Secara informal, algoritma dapat menyelesaikan
permasalahan dalam waktu yang singkat yang memiliki kompleksitas waktu yang
rendah, sementara algoritma yang membutuhkan waktu yang

lama untuk

menyelesaikan masalah mempunyai kompleksitas yang tinggi. Kompleksitas waktu
dinyatakan oleh T(n) yang diukur dari jumlah proses komputasi yang dibutuhkan agar
algoritma dapat berjalan sebagai fungsi dari ukuran masukan (n). Ukuran masukan n
adalah jumlah data yang diproses oleh sebuah algoritma (Azizah, 2013).

2.7. Penelitian yang Relevan
Berikut ini beberapa penelitian yang terkait dengan algoritma Fibonacci Code dan
Inverted Elias Gamma:
1. Erdiansyah, Umri (2015) dalam skripsi yang berjudul Perbandingan Algoritma
Elias Delta
Code dengan Leveinstein untuk Kompresi File Teks. Dalam skripsi dapat
disimpulkan bahwa secara rata-rata algoritma Elias Delta Code menghasilkan rasio
file hasil yang lebih baik daripada algoritma Leveinstein, selain itu algoritma Elias
Delta Code membutuhkan waktu yang tersingkat daripada algoritma Leveinstein.
2. Siagian, Prahara (2015) dalam skripsi yang berjudul Analisis Perbandingan
KinerjaAlgoritma Fixed Length Binary Encoding (FLBE) dengan Algoritma
Sequitur dalam Kompresi File Teks. Pada skripsi ini dapat disimpulkan bahwa
Algoritma Sequitur membutuhkan waktu yang lebih lama untuk melakukan proses
kompresi. Ini disebabkan oleh karena algoritma Sequitur memiliki nested looping
yang lebih banyak dibandingkan algoritma FLBE.

Universitas Sumatera Utara