ANALISIS PERBANDINGAN KINERJA KOMBINASI ALGORITMA BWT-RLE-MTF-HUFFMAN DAN BWT-MTF- RLE-HUFFMAN PADA KOMPRESI FILE

ANALISIS PERBANDINGAN KINERJA KOMBINASI ALGORITMA BWT-RLE-MTF-HUFFMAN DAN BWT-MTF- RLE-HUFFMAN PADA KOMPRESI FILE SKRIPSI

Diajukan untuk Memenuhi Salah Satu Syarat Mencapai Gelar Strata Satu Jurusan Informatika

Disusun Oleh : ANDREAS DONY MARHENDRA STIAWAN M0508084 JURUSAN INFORMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SEBELAS MARET

SKRIPSI ANALISIS PERBANDINGAN KINERJA KOMBINASI ALGORITMA BWT-RLE-MTF-HUFFMAN DAN BWT-MTF- RLE-HUFFMAN PADA KOMPRESI FILE

Disusun Oleh : ANDREAS DONY MARHENDRA STIAWAN M0508084

Skripsi ini telah disetujui dan dipertahankan di hadapan dewan penguji, pada tanggal, 4 Desember 2012

SKRIPSI ANALISIS PERBANDINGAN KINERJA KOMBINASI ALGORITMA BWT-RLE-MTF-HUFFMAN DAN BWT-MTF- RLE-HUFFMAN PADA KOMPRESI FILE

Disusun Oleh : ANDREAS DONY MARHENDRA STIAWAN M0508084

Telah dipertahankan di hadapan Dewan Penguji pada tanggal : 4 Desember 2012

Susunan Dewan Penguji

MOTTO

“D an segala sesuat u yang kamu lakukan dengan perkat aan at au perbuat an, lakukanlah semuanya it u dalam nama Tuhan Yesus sambil mengucap syukur oleh D ia kepada Allah,

Bapa kit a”

(K olose 3 : 17)

“M usuh yang paling berbahaya di at as dunia ini adalah penakut dan bimbang. Teman yang

paling set ia, hanyalah keberanian dan keyakinan yang t eguh”

(Andrew Jackson)

“Banyak kegagalan dalam hidup ini dikarenakan orang-orang t idak menyadari bet apa dekat nya mereka dengan keberhasilan saat mereka menyerah”

(Thomas Alva E dison)

“K it a melihat kebahagiaan it u sepert i pelangi, t idak pernah berada di at as kepala kit a sendiri,

t et api selalu berada di at as kepala orang lain”

(Thomas H ardy)

PERSEMBAHAN

Karya ini kupersembahkan kepada :

 Tuhan Yesus Kristus, yang senantiasa memberikan cinta kasih dan anugerah karunia

yang berlimpah…  Bapak

berjuang dalam pemulihannya dan senantiasa menemani serta memberi semangat dalam penyusunan skripsi ini…

yang

sedang

 Ibu, Budhe, dan kakak-kakak yang selalu membimbing, mendukung dan mencurahkan

kasih sayang dan cintanya…  Teman-teman seperjuangan Informatika ’08

yang selalu kunantikan kebersamaan dan keceriaannya…

KATA PENGANTAR

Salam Sejahtera, Puji dan syukur atas segala limpahan rahmat dan anugerah Tuhan Yang Maha Esa sehingga penulis dapat menyelesaikan skripsi yang berjudul “Analisis Perbandingan Kinerja Kombinasi Algoritma BWT-RLE-MTF-Huffman dan BWT- MTF-RLE-Huffman pada Kompresi File”.

Penulis menyadari akan keterbatasan yang penulis miliki dalam penyusunan skripsi ini, sehingga begitu banyak bantuan dari berbagai pihak yang diberikan kepada penulis.

Melalui kesempatan ini penulis ingin mengucapkan terima kasih kepada semua pihak yang telah membantu, memberikan bimbingan, dukungan moral dan semangat dalam penyusunan skripsi ini. Terima kasih yang mendalam penulis ucapkan kepada :

1. Bapak Ir. Ari Handono Ramelan, M.Sc.(Hons), Ph.D., Dekan Fakultas

Matematika dan Ilmu Pengetahuan Alam Universitas Sebelas Maret.

2. Ibu Umi Salamah, S.Si, M.Kom., Ketua Jurusan Informatika Fakultas

Matematika dan Ilmu Pengetahuan Alam Universitas Sebelas Maret.

3. Ibu Esti Suryani, S.Si, M.Kom., Dosen Pembimbing I yang telah bersedia meluangkan waktunya untuk membimbing, mengarahkan, serta memberikan motivasi kepada penulis dalam penyusunan skripsi ini.

4. Bapak Abdul Aziz, S.Kom, M.Cs., Dosen Pembimbing II yang telah bersedia meluangkan waktunya untuk membimbing, mengarahkan, serta memberikan motivasi kepada penulis dalam penyusunan skripsi ini.

5. Bapak Wiharto, S.T, M.Kom., Pembimbing Akademik atas bimbingan dan kesabarannya dalam perkuliahan.

6. Kedua orang tua, kakak-kakak dan segenap keluarga yang senantiasa mendoakan dan memberikan banyak bantuan serta dukungan kepada penulis.

7. Teman-teman di Jurusan Informatika khususnya angkatan 2008 yang

8. Semua pihak yang telah membantu yang tidak dapat penulis sebutkan satu persatu dalam tulisan ini. Penulis menyadari bahwa dalam penyusunan skripsi ini masih jauh dari

sempurna. Oleh karena itu penulis mengharapkan saran dan kritik yang bersifat membangun untuk perbaikan di masa mendatang. Akhir kata penulis berharap semoga tulisan ini dapat berguna bagi penulis pada khususnya dan bagi para pembaca pada umumnya.

Surakarta, 12 Desember 2012

Penulis

ANALISIS PERBANDINGAN KINERJA KOMBINASI ALGORITMA BWT-RLE-MTF-HUFFMAN DAN BWT-MTF- RLE-HUFFMAN PADA KOMPRESI FILE ANDREAS DONY MARHENDRA STIAWAN

Jurusan Informatika. Fakultas MIPA. Universitas Sebelas Maret

ABSTRAK

Penerapan teknik-teknik kompresi data sering kali digunakan dalam penyimpanan (storage) data maupun dalam hal transmisi data (data transmission). Keuntungan data yang terkompresi diantaranya adalah penyimpanan data lebih hemat ruang, mempersulit pembacaan data oleh pihak yang tidak berkepentingan, memudahkan distribusi data, serta dapat mengurangi bottleneck pada transmisi data.

Berdasarkan keuntungan dari kompresi data, penulis dalam tugas akhir ini mencoba menerapkan beberapa algoritma kompresi data, serta dilakukan pengujian secara multiple files untuk tipe file (.txt), (.rtf), (.doc), (.exe), (.dll), (.tif), dan (.bmp). Algoritma yang digunakan merupakan kombinasi beberapa algoritma lossless compression, yaitu Burrows-Wheeler Transform (BWT), Run- Length Encoding (RLE), Move-To-Front (MTF) serta Huffman Coding. Pengujian dilakukan untuk mengetahui besar rasio kompresi, waktu kompresi dan waktu dekompresi. Serta dilakukan perbandingan kinerja pada 2 jenis kombinasi algoritma.

Penelitian menghasilkan suatu sistem kompresi data dan hasil perbandingan kinerja kompresi file menggunakan kombinasi BMRH (BWT – MTF – RLE – Huffman) dan BRMH (BWT – RLE – MTF – Huffman). Hasil pengujian diperoleh untuk kombinasi BMRH memiliki rasio kompresi 70.44 %, waktu kompresi 9.6 × 10 second/byte , dan waktu dekompresi 22.4 × 10 second/byte , sedangkan untuk kombinasi BRMH memiliki rasio kompresi 66.57 %, waktu kompresi 9.2 × 10 second/byte , dan waktu dekompresi 15.8 × 10 second/byte . Berdasarkan hasil yang didapat, maka kombinasi BMRH lebih unggul dalam performansi kompresi data dibanding kombinasi BRMH.

Kata Kunci : Burrows-Wheeler, Kompresi Data, Huffman, Lossless, Move-To-

COMPARATIVE ANALYSIS OF PERFORMANCE COMBINATION ALGORITHM BWT-RLE-MTF-HUFFMAN AND BWT-MTF-RLE-HUFFMAN ON FILE COMPRESSION ANDREAS DONY MARHENDRA STIAWAN

Department of Informatic. Mathematic and Science Faculty. Sebelas Maret University

ABSTRACT

Application of data compression techniques often be used in data storage and in data transmission. The advantages of compressed data include more efficient data storage space, complicate the reading of data by unauthorized parties, facilitate the distribution of data, and can reduce the bottleneck in data transmission.

Based on the advantage of data compression, the authors in this thesis try to apply some data compression algorithm, and tested in multiple files for the file type (.txt), (.rtf), (.doc), (.exe), (. dll. ), (.tif), and (.bmp). The algorithm used is a combination of several lossless compression algorithm, the Burrows-Wheeler Transform (BWT), Run-Length Encoding (RLE), Move-To-Front (MTF) and Huffman Coding. Tests performed to determine the compression ratio, compression time, and decompression time. As well, the performance of the two type algorithm combinations.

The study resulted in a system of data compression and file compression performance comparison results using a combination BMRH (BWT – MTF – RLE – Huffman) and BRMH (BWT – MTF – RLE – Huffman). The test results were obtained for the combination BMRH have 70.44% compression ratio, compression time 9.6 × 10 second / byte, and a decompression time 22.4 ×

10 second / bytes, whereas for the combination BRMH have 66.57% compression ratio, compression time of 9.2 × 10

second / byte, and a decompression time 15.8 × 10 second / byte. Based on the results obtained, the

combination BMRH superior in performance compared to a combination of data compression BRMH.

BAB 1 PENDAHULUAN

1.1 Latar Belakang Masalah

Penggunaan data digital yang semakin merambah di berbagai aspek sering menimbulkan masalah dalam hal ruang penyimpanan dan transmisi data. Oleh karena itu, pengembangan teknik kompresi perlu dilakukan. Pengembangan algoritma kompresi seringkali didasari algoritma yang sudah ada atau berusaha mengkombinasikan dua atau lebih algoritma. Beberapa algoritma dasar yang sering dikembangkan diantaranya adalah Run-Length Encoding (RLE) dan Huffman .

Huffman Coding merupakan algoritma kompresi lossless entropi yang menggunakan metode spesifik dengan memanfaatkan frekuensi kemunculan (probabilitas) simbol, yang kemudian disajikan dalam suatu prefix-tree dan kemudian dikodekan dalam kode biner (Al-laham & El Emary, 2007). Huffman Coding ini dapat digunakan dalam lingkup yang luas karena kesederhanaan, kecepatan serta fleksibel pada media kompresi apapun, juga biasa digunakan sebagai algoritma “back-end” pada beb erapa metode kompresi yang lainnya (Sharma, 2010). Lain halnya dengan Run-Length Encoding (RLE), RLE merupakan algoritma kompresi data yang paling sederhana yang memanfaatkan deretan simbol berulang yang panjangnya dikodekan dalam integer. Masalah yang muncul dalam RLE terletak pada worst case yang dapat menghasilkan output data yang lebih besar dari input data. Untuk meminimalkan masalah tersebut maka dapat dikombinasikan

seperti Huffman Coding (Shanmugasundaram & Lourdusamy, 2011). Penelitian tentang kompresi data saat ini sering mengkombinasikan algoritma satu dengan yang lainnya untuk mendapatkan performansi kompresi yang lebih tinggi. Michael Dipperstein (2010) menyatakan bahwa Burrows- Wheeler (BWT) sebagai pendukung dalam kompresi karena BWT mengkonversi data menjadi suatu format yang umumnya lebih kompresibel dengan metode

dengan algoritma

(MTF) dapat meningkatkan kompresi dari metode statistical encoder / entropy seperti metode dasar Huffman atau Arithmetic Coding. Bahkan Burrows & Wheeler (1994) dalam penelitiannya mencoba melakukan penambahan algoritma MTF setelah algoritma BWT format data yang dihasilkan menjadi lebih kompresibel oleh metode RLE maupun statistical encoder (seperti Huffman, Arithmetic , dan Shannon-Fano) bahkan dengan ordo “0” sekalipun.

Berdasarkan pemaparan masalah dan pertimbangan dari keunggulan metode-metode tersebut maka pada kesempatan ini penulis mencoba melakukan penelitian dengan mempertimbangkan pernyataan sebelumnya dari Michael Dipperstein (2010) dan penelitian dari Telaumbanua (2011) mengenai keunggulan kombinasi BWT – RLE dan MTF – Huffman kemudian menggabungkan kedua kombinasi tersebut menjadi satu kesatuan yaitu, BRMH (BWT – RLE – MTF – Huffman ). Penulis juga mengangkat kombinasi kedua dengan mempertimbangkan pernyataan Burrows & Wheeler (1994) mengenai keunggulan menggabungkan BWT dan MTF kemudian digabungkan dengan algoritma RLE serta memanfaatkan Huffman coding sebagai “back-end” dalam kombinasi seperti yang diungkapkan Sharma (2010) dan Shanmugasundaram & Lourdusamy (2011). Oleh karena itu penulis mengangkat kombinasi BMRH (BWT – MTF – RLE – Huffman ) sebagai kombinasi kedua dalam penelitian ini.

Kombinasi algoritma BRMH dan BMRH tersebut nantinya akan dilakukan pengujian kinerja berdasarkan rasio kompresi, waktu kompresi dan dekompresi untuk mengetahui tingkat efektivitas dalam kompresi kemudian dilakukan analisis perbandingan antara BRMH dan BMRH.

1.2 Rumusan Masalah

Berdasarkan latar belakang masalah yang telah diuraikan di atas, berikut ini adalah beberapa rumusan masalah yang akan dibahas lebih lanjut dalam penelitian ini :

1. Bagaimana proses encoding dan decoding yang diterapkan dalam kombinasi BMRH (BWT – MTF – RLE – Huffman) dan BRMH (BWT – RLE –

2. Pola Kombinasi algoritma manakah antara BMRH (BWT – MTF – RLE – Huffman ) dan BRMH (BWT – RLE – MTF – Huffman) yang lebih baik dalam kompresi file dilihat dari segi kecepatan kompresi dan dekompresi serta rasio kompresi?

1.3 Batasan Masalah

Batasan masalah yang digunakan dalam penulisan ini adalah :

1. File uji kompresi yang akan digunakan dalam kasus ini adalah file berekstensi Text (.txt), Rich Text Format (.rtf), Document (.doc), Application (.exe), Bitmap (.bmp), Tagged Image Format (.tif) dan Application Extension / Library (.dll).

2. Ruang lingkup dalam penelitian ini hanya sebatas dalam cakupan Data Compression.

1.4 Tujuan Penelitian

Tujuan yang ingin dicapai dalam tugas akhir ini adalah :

1. Merancang dan mengimplementasikan kombinasi algoritma kompresi BMRH (BWT – MTF – RLE – Huffman) dan BRMH (BWT – RLE – MTF – Huffman ) .

2. Mengetahui hasil perbandingan pengaplikasian kedua metode kombinasi tersebut ditinjau dari rasio performansi kompresi, waktu kompresi dan waktu dekompresi pada beberapa jenis ekstensi file.

1.5 Manfaat Penelitian

Manfaat dari penelitian ini diharapkan dapat memberikan pemilihan pola kombinasi algoritma yang optimal antara BWT – MTF – RLE – Huffman dan BWT – RLE – MTF – Huffman berdasarkan batasan yang telah dipaparkan serta dari hasil pengukuran rasio kompresi dan waktu kompresi.

1.6 Sistematika Penulisan

Sistematika penulisan yang digunakan dalam penyusunan skripsi ini adalah sebagai berikut :

BAB I PENDAHULUAN

Bab ini menjelaskan latar belakang masalah, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, dan sistematika penulisan.

BAB II TINJAUAN PUSTAKA

Bab ini menguraikan teori-teori yang menjadi landasan topik penelitian ini, yaitu meliputi definisi-definisi serta model alur kompresi yang terkait dengan masalah yang diteliti, penelitian terkait yang mendukung penelitian ini.

BAB III METODE PENELITIAN

Bab ini berisi tentang metode atau langkah-langkah dalam penyelesaian masalah, meliputi metode dan algoritma yang digunakan dalam penelitian, serta metode pengujian.

BAB IV HASIL DAN PEMBAHASAN

Bab ini berisi hasil pembahasan hasil pengujian yang telah dilakukan dan dilakukan analisis dan perbandingan hasil pengujian tersebut dengan memperhatikan variabel-variabel terkait.

BAB V PENUTUP

Bab ini menguraikan kesimpulan dari keseluruhan tahapan sebelumnya dan saran- saran sebagai bahan pertimbangan untuk pengembangan penelitian selanjutnya.

BAB 2 TINJAUAN PUSTAKA

2.1 Landasan Teori

Bagian landasan teori ini menjelaskan konsep-konsep dasar yang diangkat oleh penulis dan akan dijelaskan secara mendalam baik berupa lingkup kasus maupun metode-metode yang digunakan dalam penyelesaian masalah.

2.1.1 Kompresi Data

Kompresi Data merupakan cabang ilmu komputer yang bersumber dari Teori Informasi. Teori Informasi mengfokuskan pada berbagai metode tentang informasi termasuk penyimpanan dan pemrosesan pesan. Teori Informasi mempelajari pula tentang redundancy (informasi tak berguna) pada pesan. Semakin banyak redundancy semakin besar pula ukuran pesan, upaya mengurangi redundancy inilah yang akhirnya melahirkan subyek ilmu tentang Kompresi Data (Widhiartha, 2008).

Apabila dilihat secara perilaku dan hasil output yang dihasilkan teknik kompresi data dapat dibagi menjadi dua kategori besar, yaitu :

1. Kompresi Lossless Kompresi lossless adalah kompresi yang menjaga keakuratan data dimana perubahan atau hilangnya informasi bahkan beberapa bit saja pada data selama proses kompresi tidak bisa ditoleransi. Sehingga teknik kompresi ini bersifat reversible yaitu hasil kompresi bisa dikembalikan ke bentuk semula. Teknik ini lebih cocok diaplikasikan pada file database, teks, gambar medis, atau foto hasil satelit dimana hilangnya beberapa detail pada data dapat berakibat fatal. Contoh algoritma lossless adalah Arithmetic Coding , Huffman Coding, dan lain-lain. Gambar 2.1 berikut menunjukkann contoh perilaku dalam kompresi lossless.

Gambar 2.1. Alur Perilaku Kompresi Lossless (Pu Ida Mengyi, 2006)

2. Kompresi Lossy Kompresi lossy adalah kompresi yang menekankan pada perubahan atau hilangnya beberapa informasi atau bit pada data, sehingga hasil kompresi tidak bisa lagi dikembalikan ke bentuk semula (irreversible). Namun, hasil kompresi masih bisa mempertahankan informasi utama pada data. Kompresi ini cocok diaplikasikan pada file suara, gambar atau video. Umumnya teknik ini menghasilkan kualitas hasil kompresi yang rendah, namun rasio kompresinya cenderung tinggi. Contoh algoritma kompresi lossy adalah Fractal Compression, Wavelet Compression , Wyner-Ziv Coding (WZC), dan lain-lain. Gambar 2.1 berikut menunjukkan contoh perilaku dalam kompresi lossy.

Gambar 2.2. Alur Perilaku Kompresi Lossy (Pu Ida Mengyi, 2006) Secara garis besar klasifikasi metode kompresi data dapat dilihat pada Gambar 2.3.

Gambar 2.3. Klasifikasi Teknik Kompresi Data (Fauzi, 2003) Selain secara teknik kompresi dan output, kompresi data dapat dikategorikan Berdasarkan tipe peta kode yang digunakan untuk mengubah pesan awal (isi file input) menjadi sekumpulan codeword, metode kompresi terbagi menjadi dua kelompok (Linawati & Panggabean, 2004), yaitu :

1. Metode statik : menggunakan peta kode yang selalu sama. Metode ini membutuhkan dua fase (two-pass) : fase pertama untuk menghitung probabilitas kemunculan tiap simbol / karakter dan menentukan peta kodenya, dan fase kedua untuk mengubah pesan menjadi kumpulan kode yang akan ditransmisikan. Contoh: algoritma Huffman statik.

2. Metode dinamik (adaptif) : menggunakan peta kode yang dapat berubah dari waktu ke waktu. Metode ini disebut adaptif karena peta kode mampu beradaptasi terhadap perubahan karakteristik isi file selama proses kompresi berlangsung. Metode ini bersifat one-pass, karena hanya diperlukan satu kali pembacaan terhadap isi file. Contoh: algoritma LZW. Berdasarkan teknik pengkodean / pengubahan symbol yang digunakan,

metode kompresi dapat dibagi ke dalam tiga kategori (Linawati & Panggabean, 2004), yaitu :

1. Metode symbolwise : menghitung peluang kemunculan dari tiap symbol dalam file input, lalu mengkodekan satu simbol dalam satu waktu, dimana simbol yang lebih sering muncul diberi kode lebih pendek dibandingkan simbol yang lebih jarang muncul, contoh: algoritma Huffman.

2. Metode dictionary : menggantikan karakter / fragmen dalam file input dengan indeks lokasi dari karakter / fragmen tersebut dalam sebuah kamus (dictionary), contoh: algoritma LZW.

3. Metode predictive : menggunakan model finite-context atau finite-state untuk memprediksi distribusi probabilitas dari simbol-simbol selanjutnya; contoh: algoritma DMC.

2.1.2 Burrows-Wheeler Transform (BWT)

Algoritma BWT merupakan algoritma proses melakukan transformasi terhadap blok data teks menjadi suatu bentuk baru yang tetap mengandung karakter yang sama, hanya saja urutannya yang berbeda.

Transformasi ini cenderung mengelompokan karakter secara berurut sehingga peluang untuk menemukan karakter yang sama secara berurutan akan meningkat sehingga akan lebih mudah dikompresi oleh algoritma kompresi seperti Run-Length Encoding, Move-To-Front, atau Huffman Coding.

BWT mengambil sekumpulan data dan mengurutkannya dengan menggunakan algoritma sorting. Algoritma ini menghasilkan data yang sama dengan data awal, tetapi berbeda dalam letak dan urutannya. Oleh karena blok data yang dihasilkan lebih terurut maka akan memudahkan dalam proses kompresi serta dapat meningkatkan kinerja dari suatu algoritms kompresi. Menurut Burrows dan Wheeler (1994), karena algoritma BWT hanya melakuan perubahan urutan karakter dari data sebelumnya, maka algoritma ini bersifat reversible, dimana bentuk awal suatu data bisa didapatkan kembali tanpa ada kerusakan pada data tersebut. Berikut adalah alur fungsi algoritma BWT dalam suatu pseudocode (Pu Ida Mengyi, 2006) : BWT mengambil sekumpulan data dan mengurutkannya dengan menggunakan algoritma sorting. Algoritma ini menghasilkan data yang sama dengan data awal, tetapi berbeda dalam letak dan urutannya. Oleh karena blok data yang dihasilkan lebih terurut maka akan memudahkan dalam proses kompresi serta dapat meningkatkan kinerja dari suatu algoritms kompresi. Menurut Burrows dan Wheeler (1994), karena algoritma BWT hanya melakuan perubahan urutan karakter dari data sebelumnya, maka algoritma ini bersifat reversible, dimana bentuk awal suatu data bisa didapatkan kembali tanpa ada kerusakan pada data tersebut. Berikut adalah alur fungsi algoritma BWT dalam suatu pseudocode (Pu Ida Mengyi, 2006) :

create a table, rows are all possible rotations of s sort rows alphabetically return (last column of the table)

function inverseBWT (string s) create empty table

repeat length(s) times

insert s as a column of table before first column of the table // first insert creates first column

sort rows of the table alphabetically return (row that ends with the 'EOF' character)

Sebagai contoh untuk melakukan transformasi (encoding) pada string “BANANA” dapat dilihat pada langkah -langkah berikut (Dipperstein, 2010) :

1. Melakukan rotasi (cyclic shift) pada string “BANANA” sebanyak N-1 kali, sehingga diperoleh matrik yang berordo NxN :

Gambar 2.4. Matriks String “BANANA” (Dipperstein, 2010)

2. Mengurutkan matriks hasil rotasi secara lexicographic pada baris-baris matriks. :

Gambar 2.5. Matriks String “BANANA” Diurutkan Secara lexicographic

3. Berdasarkan Gambar 2.6 tersebut diperoleh string L yang dibentuk dari karakter terakhir setiap baris matriks, dan index I yang menyatakan posisi string yang asli, sehingga hasil encoding adalah (L, I) yang dalam hal ini adalah (NNBAAA, 3).

Gambar 2.6. Hasil Encoding Matriks String “BANANA” (Dipperstein, 2010)

Proses Decoding (pembalikkan transformasi) pada algoritma BWT sedikit berbeda dengan encoding. Jika pada encoding sebuah matriks dibuat secara utuh, akan tetapi pada decoding, matriks yang dibuat hanya terdiri dari kolom pertama

F dan kolom terakhir L. Dimana F diperoleh dengan cara mengurutkan L secara lexicographic . Dalam pembalikkan diperlukan paasangan L dan I yang akan digunakan sebagai masukan untuk membentuk string asli S sepanjang N karakter dengan langkah-langkah sebagai berikut (Dipperstein, 2010) :

1. Membentuk karakter pertama dari rotasi Langkah ini akan membentuk kolom pertama F dari matriks M. Hal ini dapat dilakukan dengan cara mengurutkan karakter-karakter string L membentuk string F. Mengingat setiap kolom matriks M merupakan permutasi dari string asli S maka baik L maupun F juga merupakan permutasi dari string S. Oleh karena string F adalah kolom pertama dari matriks M maka setiap karakter dalam F juga terurut. Maka string F yang diperoleh yaitu F = ‘AAABNN

2. Membentuk kembali string asli S 2. Membentuk kembali string asli S

Gambar 2.7. Proses Pembentukan String Asli S (Dipperstein, 2010) Tahapan proses ini akan diperoleh satu vektor tranformasi T yaitu suatu array yang setiap elemennya menunjukkan korelasi atau pemetaan dari elemen-elemen string F ke string L secara berkesinambungan. Pemetaan dari string F ke L dilakukan sampai seluruh elemen F dipetakan ke L. Langkah ini akan diulang sampai seluruh elemen F dipetakan. Berdasarkan tahapan proses tersebut maka string asli S dapat disusun kembali. Berikut pembalikkan transformasi sorting dengan diketahui L = ”NNBAAA” dan I = 3.

Tabel 2.1. Pembalikkan Transformasi BWT Berdasarkan Pengurutan (Dipperstein, 2010)

Berdasarkan tabel pembalikan transformasi di atas maka didapat hasil string semula yaitu “BANANA” dengan melihat indeks I = “3” dari hasil sorting .

2.1.3 Run-Length Encoding (RLE)

Run-Length Encoding merupakan algoritma yang memanfaatkan karakter- karakter yang berulang secara berurutan pada data yaitu dengan mengkodekannya dengan sebuah string yang terdiri dari jumlah perulangan karakter yang terjadi, diikuti dengan sebuah karakter yang berulang tersebut (Dipperstein, 2010).

keberhasilan kompresi algoritma RLE. Secara garis besar format kode yang dihasilkan oleh algoritma RLE dituliskan sebagai berikut :

Gambar 2.8. Format Kode Algoritma RLE (Telaumbanua, 2011) Keterangan gambar di atas yaitu, dimana m adalah penanda (marker byte), n adalah jumlah deret karakter yang berulang, dan s sebuah karakter yang berulang tersebut.

Sebagai contoh apabila string: “ AAAABBCDEEEEEFGHHHIJ” dikompresi

hasilnya adalah : “^4 A^2B^1C^1D^5E^1F^1G^3H^1I^1J”. Karena panjang kode yang dihasilkan oleh RLE untuk setiap deret karakter minimal 3 byte, maka jumlah perulangan karakter harus lebih dari 3 (tiga) kali agar pengkodean bisa dilakukan. Satu hal yang perlu diperhatikan untuk penanda m adalah, sebaiknya yang dipilih adalah karakter yang jarang digunakan pada data (seperti tanda #, ^, |, atau ~). Berikut adalah langkah-langkah yang dilakukan dalam encoding RLE (Khairi, 2010) :

1. Cek apakah terdapat deretan karakter yang sama secara berurutan lebih dari tiga karakter, jika memenuhi dilakukan pemampatan.

2. Berikan bit penanda (marker Byte) pada file pemampatan, bit penanda digunakan secara konsisten pada proses kompresi. Bit penanda ini berfungsi untuk menandai bahwa karakter selanjutnya adalah karakter pemampatan sehingga tidak membingungkan pada saat mengembalikan file yang sudah dimampatkan ke file aslinya.

3. Tambahkan deretan bit untuk menyatakan jumlah karakter yang sama berurutan.

4. Tambahkan deretan bit yang menyatakan karakter yang berulang. Algoritma decoding pada RLE cukup sederhana yaitu mengembalikan karakter asli berdasarkan jumlah perulangan setiap karakter pada hasil kompresi. Proses decoding dilakukan langkah-langkah berikut ini (Khairi, 2010) :

1. Lihat karakter pada hasil pemampatan satu-persatu dari awal sampai akhir, jikaditemukan bit penanda, lakukan proses pengembalian.

2. Lihat karakter setelah bit penanda, konversikan ke bilangan desimal untuk menentukan jumlah karakter yang berurutan.

3. Lihat karakter berikutnya, kemudian lakukan penulisan karakter tersebut sebanyak bilangan yang telah diperoleh pada karakter sebelumnya (point 2).

kompresi adalah “^4 A^2B^1C^1D^5E^1F^1G^3H^1I^1J”

hasil dekompresi “ AAAABBCDEEEEEFGHHHIJ”. Pada umumnya algoritma RLE optimal digunakan pada file-file yang memiliki karakter-karakter yang cenderung homogen. Oleh karena itu, jika algoritma tersebut dipergunakan secara universal maka perlu dilakukan pengelompokan atau transformasi karakter-karakter / simbol-simbol yang sejenis.

maka

2.1.4 Move-To-Front (MTF)

Move-To-Front (MTF) coding adalah algoritma transformasi yang tidak mengkompres data, tetapi dapat membantu untuk membuat data menjadi lebih seragam (Campos, 1999). Move-To-Front (MTF) menggunakan teknik yang mengkodekan aliran simbol berdasarkan pada kode adaptasi. Simbol dikodekan oleh posisinya sendiri di daftar setiap simbol dalam alfabet. Awalnya daftar diurutkan secara lexicographic (atau cara lain yang ditentukan). Setelah simbol dalam aliran data dikodekan, simbol tersebut dipindahkan dari posisi semula ke depan daftar dan simbol terdepan dipindahkan satu posisi ke belakang (Langer, 2008). Misalnya diambil suatu input string “cbad” dengan ketentuan symbol list :

List :0

Pada saat melakukan encode input, symbol list digunakan untuk Pada saat melakukan encode input, symbol list digunakan untuk

Input Character : “c” List :0

Sebagai contoh detail diberikan daftar urutan alfabet sebagai acuan dalam pengkodean, yaitu (' ','.','a','e','h','i','s','t') dengan input "ssat tt hiies ." berikut proses encoding berlangsung :

Tabel 2.2. Proses Encoding Algoritma Move-To-Front (Dipperstein, 2010)

Berdasarkan proses encoding input "ssat tt hiies ." di atas didapat hasil output berupa kode “603731016707647”. Berbeda dengan proses decoding BWT, Proses decoding Move-To-Front (MTF) lebih singkat dan cukup jelas. Proses ini secara teknis seperti proses encoding , tapi lebih intensif memakan waktu (Langer, 2008). Pada proses ini posisi sebuah simbol dalam daftar simbol setiap alfabet yang nantinya digunakan Berdasarkan proses encoding input "ssat tt hiies ." di atas didapat hasil output berupa kode “603731016707647”. Berbeda dengan proses decoding BWT, Proses decoding Move-To-Front (MTF) lebih singkat dan cukup jelas. Proses ini secara teknis seperti proses encoding , tapi lebih intensif memakan waktu (Langer, 2008). Pada proses ini posisi sebuah simbol dalam daftar simbol setiap alfabet yang nantinya digunakan

Tabel 2.3. Proses Decoding Algoritma Move-To-Front (Dipperstein, 2010)

2.1.5 Huffman Coding

Algoritma Huffman adalah salah satu metode yang paling terkenal dalam kompresi teks, algoritma ini dibuat oleh David Huffman pada tahun 1952. Algoritma Huffman menggunakan prinsip pengkodean yang mirip dengan kode Morse , yaitu tiap karakter dikodekan hanya dengan rangkaian beberapa bit, dimana karakter yang sering muncul dikodekan dengan rangkaian bit yang pendek dan karakter yang jarang muncul dikodekan dengan rangkaian bit yang lebih panjang (Septin, 2010).

Kode Huffman merupakan kode prefiks yang direpresentasikan pada pohon biner yang diberi kode bit, cabang sebelah kiri diberi kode bit 0 sebagai identitas, dan cabang sebelah kanan diberi kode bit 1. Kode prefiks adalah himpunan yang berisi sekumpulan kode biner dimana tidak ada kode biner yang menjadi awalan bagi kode biner yang lain. Kode biner Huffman ini tidak mungkin

Algoritma kompresi Huffman menghasilkan kode bit yang lebih sedikit atau efisien untuk karakter-karakter yang sering muncul dalam data teks. Untuk membuktikan hal tersebut, maka dibuatlah pohon biner Huffman. Kode tersebut diperoleh dengan cara memyusun sebuah pohon biner Huffman untuk masing- masing simbul berdasarkan nilai probabilitasnya. Simpul yang memiliki probabilitas terbesar akan dekat dengan root dan simpul yang memiliki probabilitas terkecil akan terletak jauh dari root (Dipperstein, 2010). Langkah- langkah pembuatan pohon biner Huffman adalah (Dipperstein, 2010) :

1. Pengurutan keluaran sumber berdasarkan frekuensi kemunculan.

2. Menggabungkan dua keluaran yang memiliki frekuensi terendah.

3. Memberikan nilai kode bit 0 di sebelah kiri dan kode bit 1 di sebelah kanan.

4. Apabila sebuah keluaran merupakan hasil dari penggabungan dua keluaran, maka berikan kode bit 0 dan 1 untuk kode word-nya, lakukan proses ini hingga terbentuk akar.

Berikut ini adalah contoh penerapan algoritma kompresi Huffman. Sebuah file berisi karakter “MATA -MATA” dimana jika diuraikan berdasarkan kode ASCII, maka akan terlihat sebagai berikut :

Tabel 2.4. Konversi Karakter dalam Kode Biner ASCII (Septin, 2010)

Sehingga menjadi : M

Setelah membaca setiap karakter yang ada dalam teks, kemudian dihitung

Tabel 2.5. Frekuensi Kemunculan Karakter (Septin, 2010)

Penghitungan selesai, langkah berikutnya adalah membuat pohon Huffman.

Gambar 2.9. Pohon algoritma Huffman (Septin, 2010)

Didapat kode baru untuk masing-masing karakter adalah sebagai berikut :

Tabel 2.6. Kode Bit Hasil Kompresi (Septin, 2010)

Maka hasil kompresi yang didapat adalah : M

A 001

1 01 1 = 17 bit Rasio kompresi = Bit sesudah kompresi : Bit sebelum dikompresi

= 17 bit

: 72 bit

(Septin, 2010)

Dekompresi teks dapat dilakukan dengan dua cara, yang pertama dengan menggunakan pohon biner Huffman dan yang kedua dengan menggunakan tabel kode biner Huffman. Langkah-langkah mengdekompresi suatu kode biner yang merupakan hasil dari proses kompresi dengan menggunakan pohon biner Huffman adalah sebagai berikut :

1. Baca sebuah bit dari kode biner.

2. Menelusuri pohon mulai dari atas atau akar, periksa ke kanan dan kekiri.

3. Ulangi langkah 1 dan 2 sampai bertemu daun. Kodekan rangkaian bit yang telah dibaca dengan karakter daun.

4. Ulangi dari langkah 1 sampai semua bit di dalam kode biner terbaca semua dan berubah menjadi karakter-karakter yang sesuai pada daun. Sebagai contoh mengkompresi string biner yang bernilai “001”

Gambar 2.10. Proses Dekompresi dengan Pohon Algoritma Huffman (Septin, 2010)

Setelah menelusuri pohon dari akar, maka akan ditemukan bahwa string yang mempunyai kode bit “001” adalah karakter M. Cara yang kedua adalah dengan menggunakan tabel kode biner Huffman.

Dari tabel 2.6 tampak bahwa kode bit untuk sebuah karakter tidak boleh menjadi awalan dari kode bit karakter yang lain untuk menghindari keraguan (ambiguitas) dalam proses dekompresi atau decoding. Karena tiap kode bit Dari tabel 2.6 tampak bahwa kode bit untuk sebuah karakter tidak boleh menjadi awalan dari kode bit karakter yang lain untuk menghindari keraguan (ambiguitas) dalam proses dekompresi atau decoding. Karena tiap kode bit

2.2 Penelitian Terkait

Penelitian ini mengacu pada beberapa penelitian maupun studi sejenis yang telah dilakukan sebelumnya mengenai kompresi data. Berikut uraian singkat dari penelitian maupun studi tersebut.

2.2.1 Analisis Perbandingan Algoritma Kompresi Lempel Ziv Welch, Arithmetic Coding, Dan Run-Length Encoding Pada File Teks, oleh Plipus Telaumbanua (Telaumbanua, 2011)

Penelitian Plipus Telaumbanua ini membandingkan tiga algoritma kompresi data yaitu Lempel Ziv Welch (LZW), Arithmetic Coding, dan Run- Length Encoding (RLE), dimana algoritma RLE dibantu oleh algoritma Burrows- Wheeler Transform (BWT) untuk memaksimalkan kinerjanya. Algoritma- algoritma tersebut dipilih karena semuanya dalam kategori algoritma lossless, dan mewakili masing-masing teknik pengkodean. Parameter yang digunakan untuk perbandingan adalah kompleksitas algoritma, rasio kompresi, dan waktu untuk proses kompresi dan dekompresi, sedangkan file uji yang digunakan adalah file plaintext ASCII (*.txt) dengan berbagai ukuran dan pola masukan.

Penyelesaian yang disimpulkan yaitu pada keseluruhan file uji yang digunakan, file yang memiliki banyak deretan karakter yang sama sangat baik dikompresi algoritma BWT – RLE, namun sangat buruk untuk file yang isinya tidak beraturan (acak) serta memiliki kompleksitas yang paling besar. Sama halnya seperti BWT – RLE, algoritma LZW juga buruk untuk file yang isinya acak, namun sangat efektif untuk file yang memiliki pola karakter yang sama, seperti file source code dan file teks biasa. Sedangkan algoritma Arithmetic Coding sangat cocok untuk semua file uji, baik dalam keadaan acak maupun tidak (Telaumbanua, 2011). Gambar 2.11. menunjukkan alur pikir yang dilakukan oleh Plipus Telaumbanua :

Gambar 2.11. Alur Pikir Penelitian oleh Plipus Telaumbanua (Telaumbanua, 2011)

2.2.2 Implementasi Run Length Pada Kompresi File Text Dengan Menggunakan Transformasi Burrows Wheeler, oleh Muhammad Husli Khairi (Khairi, 2010)

Pokok bahasan dalam penelitian Muhammad Husli Khairi ini melakukan uji kasus tentang penyempurnaan metode kompresi Run-Length Encoding dengan algoritma Transformasi Burrows-Wheeler dengan tujuan untuk meningkatkan efektivitas kompresi dan menutupi kekurangan algoritma RLE sendiri.

Penelitian Khairi ini menitikberatkan implementasinya dalam program komputer dengan platform atau bahasa pemrograman Visual Basic 6.0 dengan data uji yang digunakan berupa file-file ekstensi (*.doc), (*.rft), (*.txt), dan file (*.html) yang selanjutnya dilakukan dilakukan analisis waktu baik dalam encoding dan decoding serta efektivitas kompresi dilihat dari rasio kompresi yang dihasilkan.

Hasil analisis menunjukkan bahwa transformasi Burrows-Wheeler mampu Hasil analisis menunjukkan bahwa transformasi Burrows-Wheeler mampu

Gambar 2.12. Alur Pikir Penelitian oleh Muhammad Husli Khairi (Khairi, 2010)

2.2.3 Compression Using Huffman Coding, oleh Mamta Sharma (Sharma, 2010)

Jurnal internasional yang ditulis oleh Mamta Sharma ini membahas mengenai algoritma Huffman yang dianalisa dan dijelaskan secara mendalam dilihat dari berbagai aspek meliputi teknik dasar Huffman, fungsi utama yang digunakan, pengaplikasian, kelebihan dan kekurangan, serta sedikit penjelasan singkat mengenai Adaptive Huffman Coding.

Pada jurnal ini juga dilakukan survey perbandingan dengan teknik kompresi lainnya yang umum seperti Aritmethic Coding, LZW dan Run-Length Encoding yang dianalisis dan dibandingkan lebih lanjut dalam hal kelebihan dan kekurangan serta pengaplikasian algoritma-algoritma tersebut dalam file image digital seperti JPEG, TIFF, GIF, BMP, dan PCX dengan menunjukkan algoritma

Setelah dilakukan pembelajaran mengenai berbagai teknik untuk kompresi dan membandingkan berdasarkan penggunaannya dalam berbagai aplikasi dan kelebihan serta kekurangan. Disimpulkan bahwa pengkodean Arithmetic Coding efisien jika lebih sering muncul urutan piksel dengan bit yang rendah dan mengurangi ukuran file secara signifikan. RLE merupakan algoritma yang mudah dalam implementasi dan cepat dalam eksekusi. Algoritma LZW lebih efektif digunakan untuk TIFF, GIF dan File Tekstual, sedangkan algoritma Huffman lebih cocok digunakan dalam kompresi JPEG. Keunggulannya Huffman menghasilkan kode yang optimal tetapi relatif lambat (Sharma, 2010).

2.2.4 A Comparative Study Of Text Compression Algorithm, oleh Senthil Shanmugasundaram dan Robert Lourdusamy (Shanmugasundaram & Lourdusamy, 2011)

Penelitian dari Senthil Shanmugasundaram dan Robert Lourdusamy ini membahas mengenai survei terhadap algoritma dasar kompresi data lossless yang berbeda. Hasil percobaan dan perbandingan algoritma kompresi lossless menggunakan teknik Statistical Compression dan teknik Dictionary Based Compression dilakukan pada data teks. Teknik pengkodean statistik yang diperbandingkan diantaranya algoritma seperti Shannon-Fano coding, Huffman coding , Adaptive Huffman coding, Run-Length Encoding serta Arithmetic coding. Pola Lempel Ziv yang merupakan teknik Dictionary Based juga dibandingkan dan dibagi menjadi dibagi menjadi dua bagian: yang merupakan derivasi dari LZ77 (LZ77, LZSS, LZH dan LZB) dan yang merupakan derivasi dari LZ78 (LZ78, LZW dan LZFG).

Penelitian dilakukan untuk mengevaluasi efisiensi dari algoritma kompresi yang diukur dengan dua parameter. Salah satunya adalah hasil file size dari kompresi dicapai dan yang lainnya adalah waktu yang digunakan oleh algoritma encoding dan decoding. Kemudian dilakukan uji kinerja praktis dari teknik yang disebutkan di atas pada beberapa ukuran file teks, setelah itu menemukan hasil berbagai teknik pengkodean statistik maupun teknik-teknik Lempel-Ziv yang

Dari hasil survei dan perbandingan yang telah dilakukan maka didapat algoritma-algoritma yang memiliki efisiensi yang cukup tinggi diantaranya Arithmetic Coding (untuk teknik Statistical Compression), LZB (untuk teknik Dictionary Based Compression derivasi LZ77), serta LZFG (untuk teknik Dictionary Based Compression derivasi LZ78) (Shanmugasundaram & Lourdusamy, 2011).

2.2.5 Comparative Study Between Various Algorithms of Data Compression Techniques, oleh Mohammed Al-laham dan Ibrahiem M. M. El Emary (Al-laham & El Emary, 2007)

Penelitian Al-laham dan El Emary ini membahas mengenai survei terhadap algoritma-algoritma teknik kompresi data. Penelitian ini menitikberatkan pada pola data yang menonjol kompresi, diantaranya yang cukup populer yaitu .DOC, .TXT, .BMP, .TIF, .GIF, dan .JPG. Dengan menggunakan beberapa algoritma kompresi yang berbeda, didapatkan beberapa hasil dan sehubungan dengan hasil tersebut ditarik kesimpulan mengenai algoritma yang efisien untuk digunakan pada jenis file tertentu yang akan dilakukan proses kompresi dengan mempertimbangkan rasio kompresi dan ukuran file terkompresi..

Beberapa algoritma yang digunakan dalam penelitian ini adalah algoritma LZW, Huffman, LZH (LZW – Huffman) serta HLZ (Huffman – LZW). Hasil yang di dapat berdasarkan parameter ukuran output hasil kompresi dan rasio kompresi didapat bahwa algoritma Huffman dan algoritma LZH (kategori algoritma kombinasi) lebih unggul untuk kompresi file .DOC, .TXT, dan .BMP dibandingkan algoritma LZW dan HLZ. Sedangkan untuk file .TIF, .GIF, dan .JPG semua algoritma yang diujikan menampilkan performansi yang buruk (Al- laham & El Emary, 2007).

2.3 Rencana Penelitian

Penulis menggunakan beberapa penelitian di atas sebagai acuan. Penulis pada kesempatan kali ini mencoba untuk melakukan perbandingan algoritma

Transformasi Burrows-Wheeler dan Run-Length Encoding yang sebelumnya dilakukan oleh Khairi (2010) dikombinasikan kembali dengan algoritma Huffman Coding dan Move-To-Front atas dasar saran penelitian Telaumbanua (2011) serta menggunakan penelitian Sharma (2010), Shanmugasundaram dan Lourdusamy (2011), serta Al-laham dan El Emary (2007) sebagai pertimbangan dalam menerapkan teknik-teknik kompresi.

Penulis dalam kasus ini akan mencoba menganalisis kombinasi-kombinasi algoritma dalam kasus ini kombinasi BWT – RLE – MTF – Huffman (BRMH) serta kombinasi BWT – MTF – RLE – Huffman (BMRH) untuk dapat diimplementasikan dan dilakukan pengujian pada file. Dua kombinasi algoritma tersebut kemudian akan dibandingkan kinerjanya berdasarkan rentang waktu proses encoding dan decoding serta rasio kompresi (dengan rasio kompresi sebagai acuan utama) yang menunjukkan perbandingan ukuran file antara file asli dan file hasil kompresi untuk mengompresi file (*.txt), (*.rtf), (*.doc), (*.dll), (*.exe), (*.tif) dan (*.bmp) dalam berbagai macam ukuran.

BAB 3 METODE PENELITIAN

3.1 Studi Literatur

Studi ini dilaksanakan dengan melakukan studi kepustakaan dengan cara mencari dan membaca berbagai literatur serta karya-karya penelitian mengenai Data Compression terutama yang berkonsentrasi pada algoritma-algoritma Burrows-Wheeler Transform (BWT), Run-Length Encoding (RLE), Move-To- Front (MTF) dan Huffman, serta data-data yang berhubungan dengan sistem yang akan dibuat. Literatur pendukung ini dapat berupa jurnal, paper, makalah, artikel, buku, atau sumber lainnya. Output yang ingin dihasilkan dari tahap ini adalah rangkuman dasar teori serta tinjauan penelitian sebelumnya.

3.2 Analisis dan Perancangan

Tahap ini dilakukan analisis dan perancangan kombinasi algoritma. Perancangan sistem dilakukan dengan menggunakan diagram alir (flowchart) agar lebih memperjelas alur dan cara kerja sisitem yang akan dibangun. Pembangunan sistem menggunakan bahasa pemrograman Visual C++ dan memanfaatkan source library algoritma BWT, RLE, MTF dan Huffman dari Michael Dipperstein (Dipperstein, 2010). Analisis dan perancangan sistem tidak menjadi fokus utama dalam penelitian ini, melainkan hanya sebagai alat bantu pengujian. Perancangan sistem meliputi perancangan desain awal implementasi baik dalam hal perancangan fungsi-fungsi dan algoritma-algoritma yang nantinya akan diimplementasikan dalam suatu sistem juga dalam proses pengujian dan pengolahan data. Gambar 3.2 berikut tampilan alur pikir proses penelitian secara keseluruhan.

Gambar 3.1. Alur Pikir Proses Penelitian

3.2.1 Analisis Proses Sistem dan Kombinasi Algoritma

Tahap ini merupakan tahap penentuan hal-hal penting seperti merumuskan cara pendeklarasian kombinasi-kombinasi algoritma yang akan diimplementasikan dan parameter-parameter yang diperlukan untuk implementasi (rasio kompresi serta waktu kompresi dan dekompresi). Pada kasus ini kombinasi yang akan diuji serta dibahas lebih lanjut adalah kombinasi BWT – RLE – MTF – Huffman serta kombinasi BWT – MTF – RLE – Huffman. Pada tahap ini juga dilakukan penentuan dan pengumpulan file uji (file (*.txt), (*.rtf), (*.doc), (*.dll), (*.exe), (*.tif) dan (*.bmp)) sebagai dasar dalam tahap pengujian dan perbandingan. Tahap ini merupakan tahap untuk mengkaji dan membatasi masalah yang akan diimplementasikan dalam sistem.

3.2.2 Perancangan Proses Sistem

Perancangan proses dilakukan dengan menggunakan diagram alir (flowchart). Terdapat dua proses utama yang dijalankan, yaitu kompresi dan dekompresi. Sesuai dengan batasan masalah proses yang akan dibahas dalam kasus ini adalah proses kompresi dan dekompresi untuk kombinasi algoritma BMRH dan BRMH yang terdiri dari 2 algoritma transformasi, yaitu BWT (Burrows-Wheeler Transform) dan MTF (Move-To-Front) serta 2 algoritma Kompresi, yaitu RLE (Run-Length Encoding) dan Huffman Coding.

Algoritma BWT yang digunakan pada kasus ini merupakan algoritma block-sorting dengan ukuran 128 KB. Algoritma BWT ini bersifat transformatif yang mendukung RLE dalam kompresi. Dengan kata lain algoritma ini tidak melakukan pengurangan atau penambahan informasi pada file input, hanya saja pada file input terjadi proses sorting / pengurutan karakter pada tiap ukuran blok. Oleh karena itu, ukuran yang dihasilkan masih tetap sama (bila ada perbedaan hanya terpaut beberapa byte) hanya saja letak karakter dalam suatu file yang berbeda. Selain algoritma BWT, algoritma MTF juga bersifat transformatif. MTF melakukan transformasi input file dengan memindahkan suatu stream karakter input ke depan stream. Algoritma ini bersifat mendukung Huffman yang memanfaatkan kode numerik serta frekuensi kemunculan karakter dalam kompresi.

Implementasi RLE sama sederhananya dengan MTF dan merupakan algoritma kompresif. Algoritma ini memanfaatkan input file yang memiliki kesamaan karakter secara berturut-turut. Apabila berdiri sendiri algoritma ini kurang fleksibel dalam kompresi bahkan kurang menguntungkan. Oleh karena itu digunakan algoritma BWT sebelum dioperasikan dengan RLE karena BWT bersifat mengelompokkan karakter sejenis.

3.2.2.1 Tahap Kompresi

Proses Kompresi merupakan proses dimana suatu file dilakukan proses encoding sehingga dihasilkan suatu output yang memiliki ukuran yang lebih Proses Kompresi merupakan proses dimana suatu file dilakukan proses encoding sehingga dihasilkan suatu output yang memiliki ukuran yang lebih

Gambar 3.2. Flowchart Proses Gambar 3.3. Flowchart Proses

Tahap Kompresi ini, sebuah file (*.txt), (*.rtf), (*.doc), (*.dll), (*.exe), (*.tif) dan (*.bmp) akan dikompresi menggunakan kombinasi algoritma BMRH dan BRMH sehingga akan menghasilkan sebuah output file yang berekstensi (.bmrh) untuk kombinasi BMRH dan (.brmh) untuk kombinasi BRMH.

Kombinasi BMRH dan BRMH diimplementasikan secara berantai dan akan menghasilkan suatu output file. Apabila file input telah dioperasikan dengan suatu algoritma selanjutnya output yang dihasilkan oleh algoritma sebelumnya kemudian dijadikan input oleh berikutnya. Operasi tersebut terus dilakukan hingga algoritma terakhir atau dengan kata lain kombinasi algoritma telah mencapai operasi terakhir sesuai dengan flowchart pada Gambar 3.2 dan Gambar

3.3. File output akhir tersebut akan dilakukan pengolahan data yang nantinya menjadi tolok ukur dalam pengujian suatu kombinasi algoritma. Ciri khas file yang telah melalui proses kompresi ini tentunya memiliki ukuran yang lebih kecil dari ukuran aslinya dan oleh karena algoritma yang digunakan bersifat lossless maka informasi dan data didalam file juga akan berubah dan tidak dapat dibaca / parsign program yang mendukung.

3.2.2.2 Tahap Dekompresi

Proses Dekompresi merupakan proses dimana suatu file terkompresi dilakukan proses decoding sehingga dihasilkan suatu output yang memiliki ukuran yang lebih besar dari file terkompresi atau dengan kata lain memiliki ukuran dan informasi yang identik dengan file aslinya (file yang belum terkompresi). Proses dekompresi yang dibahas dalam kasus ini ditunjukkan oleh Gambar 3.4 untuk kombinasi BMRH dan Gambar 3.5 untuk kombinasi BRMH.

Gambar 3.4. Flowchart Proses Gambar 3.5. Flowchart Proses Dekompresi Kombinasi BMRH

Dekompresi Kombinasi BRMH

Tahap Kompresi ini, sebuah file terkompresi (.bmrh) dan (.brmh) akan Tahap Kompresi ini, sebuah file terkompresi (.bmrh) dan (.brmh) akan