Analisis Hasil Kompresi Data Teks Pada Algoritma Elias Gamma Code, Elias Delta Code Dan Levenstein Code
TESIS
ANTONI
117038029
PROGRAM STUDI S2 TEKNIK INFORMATIKA
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
MEDAN
2014
(2)
TESIS
Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Magister Teknik Informatika
ANTONI 117038029
PROGRAM STUDI S2 TEKNIK INFORMATIKA
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
MEDAN 2014
(3)
Judul : ANALISIS HASIL KOMPRESI DATA TEKS PADA ALGORITMA ELIAS GAMMA CODE, ELIAS DELTA CODE DAN LEVENSTEIN CODE
Kategori : -
Nama : Antoni
Nomor Induk Mahasiswa : 117038029
Program Studi : S2 Teknik Informatika
Fakultas : ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
Komisi Pembimbing :
Pembimbing 2 Pembimbing 1
Dr. Erna Budhiarti Nababan, M.IT Prof. Dr. Muhammad Zarlis
Diketahui/disetujui oleh
Program Studi S2 Teknik Informatika Ketua,
Prof. Dr. Muhammad Zarlis
(4)
ANALISIS HASIL KOMPRESI DATA TEKS PADA ALGORITMA ELIAS GAMMA CODE, ELIAS DELTA CODE
DAN LEVENSTEIN CODE
TESIS
Saya mengakui bahwa tesis ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.
Medan, 21 Agustus 2014
Antoni
(5)
Sebagai sivitas akademika Universitas Sumatera Utara, saya yang bertanda tangan di bawah ini:
Nama : Antoni
NIM : 117038029
Program Studi : S2 Teknik Informatika
Jenis Karya Ilmiah : Tesis
Demi pengembangan ilmu pengetahuan, menyetujui untuk memberikan kepada Universitas Sumatera Utara Hak Bebas Royalti Non-Eksklusif (Non-Exclusive Royalty Free Right) atas tesis saya yang berjudul:
ANALISIS HASIL KOMPRESI DATA TEKS PADA ALGORITMA ELIAS GAMMA CODE, ELIAS DELTA CODE
DA N LEVENSTEIN CODE
Beserta perangkat yang ada (jika diperlukan). Dengan Hak Bebas Royalti Non-Eksklusif ini, Universitas Sumatera Utara berhak menyimpan, mengalih media, memformat, mengelola dalam bentuk database, merawat, dan mempublikasikan tesis saya tanpa meminta izin dari saya selama tetap mencantumkan nama saya sebagai penulis dan sebagai pemegang dan/atau sebagai pemilik hak cipta.
Demikian pernyataan ini dibuat dengan sebenarnya.
Medan, 21 Agustus 2014
Antoni
(6)
PANITIA PENGUJI TESIS
Ketua : Prof. Dr. Muhammad Zarlis
Anggota : 1. Dr. Erna Budhiarti Nababan, M.IT
2. Prof. Dr. Herman Mawengkang
3. Prof. Dr. Tulus
(7)
DATA PRIBADI
Nama Lengkap (berikut gelar) : Antoni, S.Kom
Tempat dan Tanggal Lahir : Panipahan, 4 Mei 1984
Alamat Rumah : Jl. P. Inpres Gg. Merpati No. 6 Lk. 7, Simpang Kantor
Kec. Medan Labuhan Telepon/Faks/HP : 085275710222
E-mail : [email protected]
Instansi Tempat Bekerja : SMP Dr. Wahidin Sudirohusodo Alamat Kantor : Jl. K.L. Yos Sudarso Km. 16,5
Pajak Rambe Kel. Martubung Kec. Medan Labuhan
DATA PENDIDIKAN
SD : SD Dr. Wahidin Sudirohusodo TAMAT: 1998 SLTP : SLTP Dr. Wahidin Sudirohusodo TAMAT: 2001 SMA : SMU Dr. Wahidin Sudirohusodo TAMAT: 2004 S1 : Teknik Informasi STMIK TIME TAMAT: 2008
(8)
Pertama-tama penulis memanjatkan puji syukur kehadirat Tuhan Yang Maha Esa atas segala limpahan rahmat dan karunia-Nya, sehingga penulis dapat menyelesaikan tesis ini dengan baik dan dalam keadaan sehat sentosa.
Tesis ini disusun sebagai salah satu syarat untuk memperoleh ijazah Magister Teknik Informatika pada Program Studi S2 Teknik Informatika, Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara (Fasilkom TI USU).
Dalam kesempatan ini, penulis hendak memberikan penghargaan dan mengucapkan terima kasih yang sebesar-besarnya kepada:
1. Bapak Prof. Dr. dr. Syahril Pasaribu, D.T.M.&H., M.Sc. (C.T.M.), Sp.A.(K.) selaku Rektor Universitas Sumatera Utara, atas kesempatan yang diberikan kepada penulis untuk mengikuti dan menyelesaikan pendidikan Pasca Sarjana. 2. Bapak Prof. Dr. Muhammad Zarlis, selaku Dekan Fakultas Ilmu Komputer dan
Teknologi Informasi Universitas Sumatera Utara, sekaligus Ketua Program Studi S2 Teknik Informatika dan selaku pembimbing utama yang telah memberikan arahan kepada penulis hingga selesainya tesis ini.
3. Ibu Dr. Erna Budhiarti Nababan, M.IT, selaku pembimbing kedua yang telah meluangkan waktu, tenaga, dan pikiran, serta kesabaran dalam menuntun dan mengarahkan penulis menjadi seorang peneliti sejati.
4. Bapak Prof. Dr. Herman Mawengkang, selaku penguji tesis yang senantiasa memberikan masukan dan arahan yang berarti kepada penulis dalam mengerjakan tesis ini agar dapat lebih baik lagi.
5. Bapak Prof. Dr. Tulus, selaku penguji tesis yang benar-benar memberikan masukan, arahan dan motivasi yang luar biasa kepada penulis dalam penelitian ini agar menjadi lebih baik lagi.
6. Bapak Dr. Syahril Efendi, S.Si, M.IT selaku penguji tesis yang telah memberikan arahan dan masukan yang berarti kepada penulis..
7. Bapak M. Andri Budiman, ST, M.Comp.Sc, MEM, selaku Sekretaris Program Studi S2 Teknik Informatika yang telah meluangkan waktu serta memberikan perhatian dan masukan yang luar biasa dalam pengerjaan tesis ini.
(9)
yang telah memberikan izin studi, membagi pengalaman beliau di bidang pendidikan, dan juga memberikan dukungan yang begitu luar biasa kepada penulis.
10. Ibu Madjakani Widjaja, yang senantiasa menjadi inspirator dan motivator bagi penulis serta memberikan doa dan dorongan kepada penulis sehingga tesis ini dapat terselesaikan dengan baik.
11. Kedua orang tuaku, saudara, dan istri tercinta, Suwarni, S. Kom yang telah memberikan kasih sayang, perhatian dan dengan penuh ketulusan mendoakan penulis agar selalu diberikan kekuatan lahir dan batin dalam menyelesaikan studi ini. Serta yang tak ketinggalan anakku, Crystallya yang menjadi sumber kekuatan bagi penulis untuk bisa menyelesaikan tesis ini dengan baik.
12. Perg. Dr. Wahidin Sudirohusodo, Medan Labuhan, tempat penulis mengabdikan diri sebagai Guru Bidang Studi Teknologi Informasi dan Komunikasi (TIK). 13. Rekan mahasiswa Program Studi S2 Teknik Informatika, Fasilkom TI USU
Angkatan 2011 atas kerja sama dan kekompakan selama studi dan penelitian. 14. Seluruh staf/pegawai dan sivitas akademika Program Studi S2 Teknik
Informatika, Fasilkom TI USU atas kerja sama-nya selama studi dan penelitian.
Penulis menyadari sepenuhnya bahwa masih adanya kekurangan dalam penyajian tesis ini. Oleh karena itu, penulis mengharapkan masukan dan saran yang bersifat membangun demi penyempurnaan tesis ini di masa mendatang. Akhir kata, penulis berharap tesis ini dapat bermanfaat bagi para pembaca yang memiliki minat di bidang ilmu komputer dan teknologi informasi.
Medan, 21 Agustus 2014
Antoni
(10)
Kompresi data merupakan suatu proses untuk mengubah sebuah input data stream (data asli) ke dalam aliran data yang lain yag berupa output atau stream lainnya (yang sudah terkompresi) yang memiliki ukuran yang lebih kecil. Salah satu fungsi utama kompresi data adalah memperkecil ukuran file dengan cara menggantikan karakter yang umumnya berukuran 8 bit dengan kode yang lebih pendek. Pada kompresi data, terdapat banyak algoritma yang dapat digunakan untuk mengolah input menjadi
output yang diinginkan, sehingga harus diperhatikan aspek seperti rasio kompresi,
space saving dan kecepatan kompresi dari masing-masing algoritma tersebut. Tujuan penelitian ini adalah untuk menganalisis dan membandingkan rasio kompresi, space saving dan kecepatan kompresi algoritma Elias Gamma Code, Elias Delta Code dan
Levenstein Code. Data yang digunakan adalah 5 buah dokumen dengan jumlah karakter yang berbeda-beda. Algoritma Elias Gamma Code digunakan untuk mengkodekan bilangan bulat positip, sementara Elias Delta Code merupakan kelanjutan dari Elias Gamma Code namun lebih kompleks. Sedangkan Levenstein Code digunakan jika nilai terbesar yang akan dikodekan tidak diketahui sebelumnya, atau untuk kompres data yang nilai kecil jauh lebih sering daripada nilai besar. Hasil perbandingan rata-rata rasio kompresi menunjukkan Elias Gamma Code sebesar 63.36%, Elias Delta Code sebesar 68.83% dan Levenstein Code sebesar 72.12%. Hasil perbandingan rata-rata space saving menunjukkan Elias Gamma Code sebesar 36.64%, Elias Delta Code sebesar 31.17% dan Levenstein Code sebesar 27.88%. Sementara untuk kecepatan kompresi Elias Gamma Code merupakan yang paling cepat, diikuti dengan Elias Delta Code lalu Levenstein Code.
Kata Kunci: Kompresi Data, Kode Elias Gamma, Kode Elias Delta, Kode Levenstein, Rasio Kompresi, Space Saving, Kecepatan Kompresi.
(11)
ABSTRACT
Data compression is the process of converting an input data stream (the source or the original raw data) into another data stream (the output, the bitstream, compressed stream) that has a smaller size. One of the main function of data compression is to reduce the file size by replacing characters that generally has 8 bits with shorter code. In the data compression, there is a lot of algorithms that can be used to process the input into desired output, thus it is very important to observe the compression ratio, space saving and compression speed of each of these algorithms. The purpose of this research is to analyze and compare the compression ratio, space saving and compressin speed of Elias Gamma Code, Elias Delta Code and Levenstein Code. The data used are 5 documents with a number of different characters. Elias Gamma Code for positive integers n is simple to encode dan decode and is also universal. Elias Delta Code is also for positive integers n but more complex from Elias Gamma Code. While Levenstein Code is used in applications where the largest encoded valus is not known ahead of time, or to compress data in which small values are much more frequent than large values. The result of the average compression ratio showed that Elias Gamma Code got 63.36%, Elias Delta Code got 68.83% and Levenstein Code got 72.12%. The result of the average space saving showed that Elias Gamma Code got 36.64%, Elias Delta Code got 31.17% and Levenstein Code got 27.88%. While for the compression speed showed that Elias Gamma Code is the fastest followed by Elias Delta Code then Levenstein Code.
Keywords: Data Compression, Elias Gamma Code, Elias Delta Code, Levenstein Code, Compression Ratio, Space Saving, Compression Speed.
(12)
Hal
HALAMAN JUDUL i
PERSETUJUAN ii
PERNYATAAN ORISINALITAS iii
PERSETUJUAN PUBLIKASI iv
PANITIA PENGUJI v
RIWAYAT HIDUP vi
UCAPAN TERIMA KASIH vii
ABSTRAK ix
ABSTRACT x
DAFTAR ISI xxxXXxi
DAFTAR TABEL xiv
DAFTAR GAMBAR xv
BAB 1 : PENDAHULUAN
: 1.1. Latar Belakang 1
: 1.2. Perumusan Masalah 4
: 1.3. Batasan Masalah 4
: 1.4. Tujuan Penelitian 4
: 1.5. Manfaat Penelitian 5
: 1.6. Sistematika Penulisan 5
BAB 2 : TINJAUAN PUSTAKA
: 2.1. Kompresi Data 6
2.1.1. Kompresi Lossy 7
2.1.2. Kompresi Lossless 8
: 2.2. Sistem Pengkodean 11
2.2.1. Fixed Length Encoding 11 2.2.2. Variable Length Encoding 11
2.2.3. Prefix Code 11
(13)
: 2.5. Algoritma Levenstein Code 17
: 2.6. Riset Terkait 20
: 2.7. Perbedaan dengan Riset yang Lain 22
: 2.8. Kontribusi Riset 22
BAB 3 : METODOLOGI PENELITIAN
: 3.1. Pendahuluan 23
: 3.2. Data Yang Digunakan 24
: 3.3. Analisis Data
3.3.1. Elias Gamma Code 24 3.3.2. Elias Delta Code 34 3.3.3. Levenstein Code 43
: 3.4. Alat Penelitian 52
BAB 4 : HASIL DAN PEMBAHASAN
: 4.1. Hasil Kompresi Algoritma Elias Gamma Code 55
: 4.2. Hasil Kompresi Algoritma Elias Delta Code 63
: 4.3. Hasil Kompresi Algoritma Levenstein Code 71
: 4.4. Analisis Perbandingan Hasil Kompresi 79 4.4.1. Perbandingan Rasio Kompresi dan Space Saving
4.4.1. Algoritma Elias Gamma Code, Elias Delta Code dan
4.4.1. Levenstein Code 79 4.4.2. Grafik Perbandingan Rasio Kompresi dan Space Saving
4.4.1. Algoritma Elias Gamma Code, Elias Delta Code dan
4.4.1. Levenstein Code 83 4.4.3. Perbandingan Waktu Kompresi Dan Waktu Dekompresi
4.4.1. Algoritma Elias Gamma Code, Elias Delta Code dan
(14)
: 5.1. Kesimpulan 87
: 5.2. Saran 88
DAFTAR PUSTAKA 89
(15)
Nomor Keterangan Halaman
2.1. 18 Kode Elias Gamma 12
2.2. Pemetaan Data Teks Dengan Kode Elias Gamma 13
2.3. 18 Kode Elias Delta 15
2.4. Pemetaan Data Teks Dengan Kode Elias Delta 17
2.5. 18 Kode Levenstein 18
2.6. Pemetaan Data Teks Dengan Kode Levenstein 19
2.7. Riset Terkait 21
3.1. Data Yang Digunakan 24
3.2. Hasil Pengurutan Karakter Set Kompresi Kode Elias Gamma 27 3.3. Penggantian Karakter Dengan Kode Elias Gamma 28 3.4. Hasil Pengurutan Karakter Set Kompresi Kode Elias Delta 36 3.5. Penggantian Karakter Dengan Kode Elias Delta 37 3.6. Hasil Pengurutan Karakter Set Kompresi Kode Levenstein 45 3.7. Penggantian Karakter Dengan Kode Levenstein 46
4.1. Hasil Kompresi Dengan Kode Elias Gamma 63
4.2. Hasil Kompresi Dengan Kode Elias Delta 71
4.3. Hasil Kompresi Dengan Kode Levenstein 79
4.4. Perbandingan Hasil Kompresi Elias Gamma Code, Elias
Delta Code dan Levenstein Code pada Dokumen U10k.txt 79 4.5. Perbandingan Hasil Kompresi Elias Gamma Code, Elias
Delta Code dan Levenstein Code pada Dokumen U20k.txt 80 4.6. Perbandingan Hasil Kompresi Elias Gamma Code, Elias
Delta Code dan Levenstein Code pada Dokumen U30k.txt 80 4.7. Perbandingan Hasil Kompresi Elias Gamma Code, Elias
Delta Code dan Levenstein Code pada Dokumen U45k.txt 81 4.8. Perbandingan Hasil Kompresi Elias Gamma Code, Elias
Delta Code dan Levenstein Code pada Dokumen U60k.txt 81 4.9. Hasil Kompresi Elias Gamma Code, Elias Delta Code dan
Levenstein Code 82
4.10. Rata-Rata Rasio Kompresi dan Space Saving Elias Gamma
Code, Elias Delta Code dan Levenstein Code 82 4.11. Waktu Kompresi/Dekompresi Algoritma Elias Gamma
(16)
Nomor Keterangan Halaman
2.1. Skema Lossy Compression 8
2.2. Skema Lossless Compression 9
3.1. Diagram Kompresi Algoritma Elias Gamma Code 25 3.2. String Bit Kode Elias Gamma Pada dokumen.txt 28
3.3. Pemeriksaan Panjang String Bit 29
3.4. Hasil Penambahan Pada String Bit 29
3.5. Hasil Generate String Bit Kode Elias Gamma ke ASCII 30 3.6. Diagram Dekompresi Algoritma Elias Gamma Code 31
3.7. Hasil Generate ASCII ke Binary 32
3.8. Pengembalian Binary ke String Bit Semula 32
3.9. Hasil Dekompresi Kode Elias Gamma 33
3.10. Diagram Kompresi Algoritma Elias Delta Code 34 3.11. String Bit Kode Elias Delta Pada dokumen.txt 37
3.12. Pemeriksaan Panjang String Bit 38
3.13. Hasil Penambahan Pada String Bit 38
3.14. Hasil Generate String Bit Kode Elias Delta ke ASCII 39 3.15. Diagram Dekompresi Algoritma Elias Delta Code 40
3.16. Hasil Generate ASCII ke Binary 41
3.17. Pengembalian Binary ke String Bit Semula 41
3.18. Hasil Dekompresi Kode Elias Delta 42
3.19. Diagram Kompresi Algoritma Elias Levenstein Code 43 3.20. String Bit Kode Levenstein Pada dokumen.txt 46
3.21. Pemeriksaan Panjang String Bit 47
3.22. Hasil Penambahan Pada String Bit 47
3.23. Hasil Generate String Bit Kode Levenstein ke ASCII 48 3.24. Diagram Dekompresi Algoritma Levenstein Code 49
3.25. Hasil Generate ASCII ke Binary 50
3.26. Pengembalian Binary ke String Bit Semula 50
3.27. Hasil Dekompresi Kode Levenstein 51
4.1. Proses Kompresi Dokumen U10k.txt Dengan Kode Elias
Gamma 55
4.2. Waktu Dekompresi Kode Elias Gamma Pada Dokumen
U10k.txt 56
4.3. Proses Kompresi Dokumen U20k.txt Dengan Kode Elias
Gamma 57
4.4. Waktu Dekompresi Kode Elias Gamma Pada Dokumen
U20k.txt 58
4.5. Proses Kompresi Dokumen U30k.txt Dengan Kode Elias
Gamma 58
4.6. Waktu Dekompresi Kode Elias Gamma Pada Dokumen
(17)
Gamma 60 4.8. Waktu Dekompresi Kode Elias Gamma Pada Dokumen
U45k.txt 61
4.9. Proses Kompresi Dokumen U60k.txt Dengan Kode Elias
Gamma 61
4.10. Waktu Dekompresi Kode Elias Gamma Pada Dokumen
U60k.txt 62
4.11. Proses Kompresi Dokumen U10k.txt Dengan Kode Elias Delta 63 4.12. Waktu Dekompresi Kode Elias Delta Pada Dokumen U10k.txt 64 4.13. Proses Kompresi Dokumen U20k.txt Dengan Kode Elias Delta 65 4.14. Waktu Dekompresi Kode Elias Delta Pada Dokumen U20k.txt 66 4.15. Proses Kompresi Dokumen U30k.txt Dengan Kode Elias Delta 66 4.16. Waktu Dekompresi Kode Elias Delta Pada Dokumen U30k.txt 67 4.17. Proses Kompresi Dokumen U45k.txt Dengan Kode Elias Delta 68 4.18. Waktu Dekompresi Kode Elias Delta Pada Dokumen U45k.txt 69 4.19. Proses Kompresi Dokumen U60k.txt Dengan Kode Elias Delta 69 4.20. Waktu Dekompresi Kode Elias Delta Pada Dokumen U60k.txt 70 4.21. Proses Kompresi Dokumen U10k.txt Dengan Kode Levenstein 71 4.22. Waktu Dekompresi Kode Levenstein Pada Dokumen U10k.txt 72 4.23. Proses Kompresi Dokumen U20k.txt Dengan Kode Levenstein 73 4.24. Waktu Dekompresi Kode Levenstein Pada Dokumen U20k.txt 74 4.25. Proses Kompresi Dokumen U30k.txt Dengan Kode Levenstein 74 4.26. Waktu Dekompresi Kode Levenstein Pada Dokumen U30k.txt 75 4.27. Proses Kompresi Dokumen U45k.txt Dengan Kode Levenstein 76 4.28. Waktu Dekompresi Kode Levenstein Pada Dokumen U45k.txt 77 4.29. Proses Kompresi Dokumen U60k.txt Dengan Kode Levenstein 77 4.30. Waktu Dekompresi Kode Levenstein Pada Dokumen U60k.txt 78 4.31. Grafik Perbandingan Rasio Kompresi Elias Gamma Code, Elias
Delta Code dan Levenstein Code 83
4.32. Grafik Perbandingan Space Saving Elias Gamma Code, Elias
Delta Code dan Levenstein Code 84
4.33. Grafik Rata-Rata Nilai Ratio Kompresi dan Space Saving Elias
(18)
Kompresi data merupakan suatu proses untuk mengubah sebuah input data stream (data asli) ke dalam aliran data yang lain yag berupa output atau stream lainnya (yang sudah terkompresi) yang memiliki ukuran yang lebih kecil. Salah satu fungsi utama kompresi data adalah memperkecil ukuran file dengan cara menggantikan karakter yang umumnya berukuran 8 bit dengan kode yang lebih pendek. Pada kompresi data, terdapat banyak algoritma yang dapat digunakan untuk mengolah input menjadi
output yang diinginkan, sehingga harus diperhatikan aspek seperti rasio kompresi,
space saving dan kecepatan kompresi dari masing-masing algoritma tersebut. Tujuan penelitian ini adalah untuk menganalisis dan membandingkan rasio kompresi, space saving dan kecepatan kompresi algoritma Elias Gamma Code, Elias Delta Code dan
Levenstein Code. Data yang digunakan adalah 5 buah dokumen dengan jumlah karakter yang berbeda-beda. Algoritma Elias Gamma Code digunakan untuk mengkodekan bilangan bulat positip, sementara Elias Delta Code merupakan kelanjutan dari Elias Gamma Code namun lebih kompleks. Sedangkan Levenstein Code digunakan jika nilai terbesar yang akan dikodekan tidak diketahui sebelumnya, atau untuk kompres data yang nilai kecil jauh lebih sering daripada nilai besar. Hasil perbandingan rata-rata rasio kompresi menunjukkan Elias Gamma Code sebesar 63.36%, Elias Delta Code sebesar 68.83% dan Levenstein Code sebesar 72.12%. Hasil perbandingan rata-rata space saving menunjukkan Elias Gamma Code sebesar 36.64%, Elias Delta Code sebesar 31.17% dan Levenstein Code sebesar 27.88%. Sementara untuk kecepatan kompresi Elias Gamma Code merupakan yang paling cepat, diikuti dengan Elias Delta Code lalu Levenstein Code.
Kata Kunci: Kompresi Data, Kode Elias Gamma, Kode Elias Delta, Kode Levenstein, Rasio Kompresi, Space Saving, Kecepatan Kompresi.
(19)
ABSTRACT
Data compression is the process of converting an input data stream (the source or the original raw data) into another data stream (the output, the bitstream, compressed stream) that has a smaller size. One of the main function of data compression is to reduce the file size by replacing characters that generally has 8 bits with shorter code. In the data compression, there is a lot of algorithms that can be used to process the input into desired output, thus it is very important to observe the compression ratio, space saving and compression speed of each of these algorithms. The purpose of this research is to analyze and compare the compression ratio, space saving and compressin speed of Elias Gamma Code, Elias Delta Code and Levenstein Code. The data used are 5 documents with a number of different characters. Elias Gamma Code for positive integers n is simple to encode dan decode and is also universal. Elias Delta Code is also for positive integers n but more complex from Elias Gamma Code. While Levenstein Code is used in applications where the largest encoded valus is not known ahead of time, or to compress data in which small values are much more frequent than large values. The result of the average compression ratio showed that Elias Gamma Code got 63.36%, Elias Delta Code got 68.83% and Levenstein Code got 72.12%. The result of the average space saving showed that Elias Gamma Code got 36.64%, Elias Delta Code got 31.17% and Levenstein Code got 27.88%. While for the compression speed showed that Elias Gamma Code is the fastest followed by Elias Delta Code then Levenstein Code.
Keywords: Data Compression, Elias Gamma Code, Elias Delta Code, Levenstein Code, Compression Ratio, Space Saving, Compression Speed.
(20)
BAB 1
PENDAHULUAN
1.1. Latar Belakang
Kompresi data adalah suatu proses untuk mengubah sebuah input data stream (stream
sumber atau data mentah asli) ke dalam aliran data yang lain yang berupa output atau
stream lainnya (data yang sudah terkompresi) yang memiliki ukuran yang lebih kecil (Salomon & Giovanni, 2010).
Seiring dengan perkembangannya data yang berkembang dan diproses saat ini menjadi semakin besar dari waktu ke waktu. Terdapat berbagai tipe data yang dapat dimuat yakni teks, gambar, audio (bunyi, suara, musik) dan video. Keempat macam data tersebut umumnya dikenal dengan multi media. Perkembangan teknologi yang semakin maju dan penambahan jumlah pengguna komputer yang semakin banyak menyebabkan ledakan data serta perpindahan data dari satu perangkat ke perangkat lain. Data-data tersebut umumnya dikompresi terlebih dahulu agar proses pertukaran tidak memakan waktu yang terlalu lama.
Kompresi data merupakan proses mengubah aliran data input (sumber atau data mentah asli) menjadi aliran data lain (output atau terkompresi) yang memiliki ukuran yang lebih kecil. Sebuah stream adalah salah satu file atau buffer dalam memori.
Kompresi data populer karena dua alasan: pertama, orang-orang suka untuk mengumpulkan data dan benci membuang apa pun. Tidak peduli seberapa besar perangkat penyimpanan seseorang, cepat atau lambat akan meluap. Kompresi data tampaknya berguna karena penundaan tak terhindarkan ini. Kedua, orang benci untuk menunggu waktu yang lama untuk transfer data. Ketika duduk di depan komputer, menunggu halaman Web untuk ditampilkan atau proses download sebuah file, kita tentu merasa bahwa sesuatu yang lebih dari beberapa detik merupakan waktu yang terasa lama untuk ditunggu. (Salomon, 2004)
Mengkompresi data dilakukan dengan mengubah representasi dari tidak efisien (data yang panjang) menjadi efisien (data yang pendek). Kompresi dengan demikian hanya mungkin karena data biasanya diwakili dalam komputer dalam format yang
(21)
lebih panjang dari yang benar-benar diperlukan. Alasan yang tidak efisien (panjang) adalah bahwa representasi data yang biasanya digunakan membuat suatu proses menjadi lebih mudah untuk memproses data dan pengolahan data lebih umum serta lebih penting daripada kompresi data. Kode ASCII untuk karakter adalah contoh karakter yang baik untuk merepresentasikan data yang lebih panjang daripada yang benar-benar diperlukan. Kode ASCII menggunakan 7-bit karena kode yang berukuran tetap adalah kode yang mudah diproses. Sebuah kode variabel-size akan lebih efisien digunakan karena karakter-karakter tertentu digunakan lebih dari yang lain sehingga dapat digantikan dengan kode-kode yang lebih pendek.
Terdapat dua teknik yang dapat dilakukan dalam melakukan kompresi data yaitu
Lossy Compression dan Lossless Compression. Lossy Compression adalah kompresi data di mana hasil dekompresi dari data yang terkompresi tidak sama dengan data aslinya karena ada informasi yang hilang, tetapi masih dapat ditolerir oleh persepsi mata. Kompresi data lossy akan menjadi efektif apabila diaplikasikan pada gambar, film, dan suara digital. Sedangkan, Lossless Compression merupakan kompresi data dimana hasil dekompresi dari data yang terkompresi sama dengan data aslinya dan tidak ada informasi yang hilang. Kompresi data lossless disebut juga kompresi
reversibel karena data asli mungkin dapat dikembalikan dengan sempurna dengan dekompresi. Teknik kompresi data lossless digunakan ketika sumber data asli penting sehingga tidak dapat kehilangan detail apapun. Jenis kompresi ini digunakan untuk menyimpan database, spreadsheet, atau untuk memproses file teks. (Mengyi, 2006)
Contoh algoritma dengan teknik lossy compression adalah Wavelet, Chain Code, dan Run-Length Encoding (RLE). Sedangkan contoh algoritma dengan teknik lossless compression adalah Shannon-Fano, Huffman dan Universal Code (Misalnya Elias Code, Levenstein Code).
Sukiman & Chandra (2013) melakukan penelitian terhadap algoritma Elias Gamma Code dengan melakukan pemodelan data yang akan dikompresi untuk kemudian direpresentasikan dengan simbol-simbol tertentu dimana data yang disertakan memilki informasi seperti frekuensi mengenai setiap simbol. Sementara pengkodean dilakukan untuk menghasilkan representasi data terkompresi dengan mengacu pada model guna menentukan kode untuk setiap simbol. Pada proses pengkompresiannya juga dibentuk pohon encoding. Dengan metode tersebut didapat
(22)
hasil bahwa algoritma Elias Gamma Code mempunyai rentang rasio kompresi 60% – 80%.
Sukirman, et al. (2010) melakukan penelitian dengan mengoptimalkan proses pada transformasi DCT dan Kuantisasi. Proses yang dilakukan yaitu dengan cara menggabungkan proses DCT dan Kuantisasi. Dari hasil penggabungan tersebut didapatkan bahwa formulasi matematis pada DCT terkuantisasi mengandung jumlah operasi perkalian dan penambahan yang lebih kecil dibandingkan pada formulasi matematis DCT standar. Sehingga DCT terkuantisasi dapat meningkatkan rasio dan kualitas kompresi JPEG.
Wijaya & Widodo (2010) melakukan penelitian terhadapat objek citra digital dengan menggunakan algoritma Huffman, LZW (Lempel Ziv Welch) dan RLE ( Run-Length Encoding). Pengujian dilakukan terhadap waktu kompressi dan dekompressi pada objek citra dengan format bmp, jpg dan tiff. Dari pengujian tersebut algoritma Huffman memiliki kompabilitas tinggi untuk dapat mengkompresi setiap format objek citra. Sedangkan waktu kompresi dan dekompresi algoritma LZW (Lempel Ziv Welch) kurang begitu baik tetapi memiliki kinerja kompresi yang tinggi pada format
citra bmp. Sementara kemampuan kompabilitas yang dimiliki algoritma RLE ( Run-Length Encoding) tidak lebih baik dari algoritma Huffman dan LZW. Algoritma RLE hanya mampu mengkompresi citra dengan format bmp berjenis grayscale saja. Tetapi dalam hal ini memiliki performa kinerja yang cukup tinggi.
Arysanti & Livianthy (2010) melakukan pengujian pada data citra dengan menggunakan algoritma Huffman. Data citra yang diolah dalam proses pengkompresannya adalah data citra dengan format BMP. Selain objek citra, pengujian juga dilakukan pada data teks dengan format text document (*.txt) dan
Hyper Text Markup Language (*.htm). Pada penelitian ini hanya dilakukan pengujian pada tingkat efektivitas metode Huffman untuk kompresi data citra dan teks.
Berdasarkan latar belakang tersebut diatas, penulis hendak mencoba untuk membandingkan algoritma kompresi data dengan menggunakan teknik Lossless Compression yakni algoritma Elias Gamam Code, Elias Delta Code dan Levenstein Code. Dengan menggunakan ketiga algoritma tersebut penulis hendak membandingkan rasio kompresi, space saving dan kecepatan kompresi yang dihasilkan ketiga metode tersebut dalam melakukan kompresi terhadap data teks
(23)
dengan berbagai variasi. Adapun metode yang akan digunakan adalah dengan melakukan pemodelan serta pengkodean berdasarkan tabel kode pada tiap-tiap algoritma tanpa membentuk pohon encoding seperti pada penelitian sebelumnya. Atas dasar inilah, penulis tertarik untuk mengambil judul : ANALISIS HASIL KOMPRESI DATA TEKS PADA ALGORITMA ELIAS GAMMA CODE, ELIAS DELTA CODE DAN LEVENSTEIN CODE.
1.2. Perumusan Masalah
Algoritma yang sesuai untuk melakukan kompresi file input menjadi output yang diharapkan harus mempertimbangkan beberapa aspek seperti rasio kompresi, space saving dan kecepatan kompresi. Pada penelitian ini rumusan masalah adalah bagaimana membentuk kode ASCII serta mengembalikan binary pada kode ASCII menjadi string bit dengan pemodelan dan pengkodean berdasarkan pada tabel kode algoritma Elias Gamma Code, EliasDelta Code dan LevensteinCode.
1.3. Batasan Masalah
Rumusan masalah diatas dibatasi dengan beberapa hal sebagai berikut: 1. Data yang digunakan untuk kompresi berupa data teks.
2. Nilai yang hendak dianalisa adalah rasio kompresi, space saving dan kecepatan kompresi.
3. Algoritma yang digunakan dalam penelitian ini adalah Elias Gamma Code, Elias Delta Code dan Levenstein Code.
1.4. Tujuan Penelitian
Adapun tujuan penelitian ini adalah untuk mengetahui tingkat perbandingan rasio kompresi, space saving dan kecepatan kompresi antara algoritma Elias Gamma Code, Elias Delta Code dan Levenstein Code.
(24)
1.5. Manfaat Penelitian
Adapun manfaat yang diharapkan dari penelitian ini adalah sebagai berikut :
1. Mengetahui perbandingan hasil kompresi data teks antara algoritma Elias Gamma Code, Elias Delta Code dan Levenstein Code dalam hal rasio kompresi, space saving dan kecepatan kompresi.
2. Memahami cara kerja algoritma Elias Gamma Code, Elias Delta Code dan
Levenstein Code.
3. Hasil penelitian dapat menjadi rujukan para pembaca dalam memahami algoritma Elias Gamma Code, Elias Delta Code dan Levenstein Code.
1.6. Sistematika Penulisan
Sistematika penulisan tugas akhir ini adalah sebagai berikut: Bab 1. Pendahuluan
Bab ini meliputi latar belakang masalah, perumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian serta sistematika penulisan.
Bab 2. Tinjauan Pustaka
Bab ini akan menguraikan tinjauan pustaka yang berkaitan dengan algoritma kode Elias Gamma, kode Elias Delta dan kode Levenstein.
Bab 3. Metodologi Penelitian
Bab ini berisi metode penelitian yang akan digunakan, data yang akan dipakai, analisis data serta alat yang digunakan dalam melakukan penelitian.
Bab 4. Hasil dan Analisis
Bab ini akan memaparkan hasil penelitian. Bab 5. Kesimpulan dan Saran
Bab ini berisi kesimpulan dan saran yang dapat diambil dari pembuatan tugas akhir ini.
(25)
BAB 2
TINJAUAN PUSTAKA
2.1. Kompresi Data
Dalam ilmu komputer, pemampatan data atau kompresi data adalah sebuah cara untuk memadatkan data sehingga hanya memerlukan ruangan penyimpanan lebih kecil sehingga lebih efisien dalam menyimpannya atau mempersingkat waktu pertukaran data tersebut. Kompresi Data adalah proses pengkodean (encoding) informasi dengan menggunakan bit yang lebih sedikit dibandingkan dengan kode yang sebelumnya dipakai dengan menggunakan skema pengkodean tertentu. Kompresi data, terutama untuk proses komunikasi, dapat bekerja jika kedua pihak antara pengirim dan penerima data komunikasi memiliki skema pengkodean yang sama.
Gambar-gambar yang terdapat di berbagai situs internet pada umumnya merupakan hasil kompresi ke dalam format GIF atau JPEG. File video MPEG adalah hasil proses kompresi pula. Penyimpanan data berukuran besar pada server pun sering dilakukan melalui kompresi. Hal ini dilakukan agar kapasitas pada server tempat penyimpanan dapat menampung lebih banyak data.
Kompresi Data merupakan cabang ilmu komputer yang bersumber dari Teori Informasi. Teori Informasi sendiri adalah salah satu cabang Matematika yang berkembang sekitar akhir dekade 1940-an. Tokoh utama dari Teori Informasi adalah Claude E. Shannon dari Bell Laboratory. Dalam tulisannya di tahun 1948, “A Mathematical Theory of Communication”, (Claude E. Shannon). Teori Informasi memfokuskan pada berbagai metode tentang informasi termasuk penyimpanan dan pemrosesan pesan. Teori Informasi mempelajari pula tentang redudansi (informasi tak berguna/pengulangan informasi) pada pesan. Semakin banyak redudansi semakin besar pula ukuran pesan, upaya mengurangi redudansi inilah yang akhirnya melahirkan subyek ilmu tentang Kompresi Data.
(26)
Dalam kompresi data, tujuan utama yang perlu diperhatikan adalah rasio kompresi yang semakin baik, proses kompresi dan pengembalian yang cepat. Rasio kompresi secara matematis dapat ditulis sebagai berikut:
� � � � � = �� � � �� x %
Selain rasio kompresi, hal yang perlu diukur adalah space saving. Space saving (penghematan ruang) didefinisikan sebagai pengurangan dalam ukuran relatif terhadap ukuran uncompressed. (Ujianto dan Hartati, 2010)
��� ��� � = − �� ��� ��� x % Atau
��� ��� � = − � � � � � x %
Teori Informasi menggunakan terminologi entropy sebagai pengukur berapa
banyak informasi yang dapat diambil dari sebuah pesan. Kata “entropy” berasal dari
ilmu termodinamika. Semakin tinggi entropy dari sebuah pesan semakin banyak informasi yang terdapat di dalamnya. Entropy dari sebuah simbol didefinisikan sebagai nilai logaritma negatif dari probabilitas kemunculannya. Entropy dari keseluruhan pesan adalah jumlah dari keseluruhan entropy dari seluruh symbol.
Terdapat dua jenis kompresi data yaitu Kompresi Lossy dan Kompresi
Lossless.
2.1.1. Kompresi Lossy
Kompresi data yang menghasilkan file data hasil kompresi yang tidak dapat dikembalikan menjadi file data sebelum dikompresi secara utuh. Kompresi lossy
menyebabkan adanya perubahan data dibandingkan sebelum dilakukan proses kompresi. Ketika data hasil kompresi di-decode kembali, data hasil decoding tersebut tidak dapat dikembalikan menjadi sama dengan data asli tetapi ada bagian data yang hilang. Dengan kata lain ada beberapa info yang hilang pada saat proses kompresi. Oleh sebab itu kompresi jenis ini tidak baik untuk kompresi data yang kritis seperti data teks. Sebagai gantinya kompresi lossy memberikan derajat kompresi lebih tinggi. (2.2) (2.1)
(27)
Kompresi jenis ini sangat baik bila digunakan pada file multi media seperti file
gambar, suara dan film. File gambar, suara dan film secara alamiah masih bisa digunakan walaupun tidak berada pada kondisi yang sama sebelum dilakukan kompresi. Contoh penggunaan kompresi lossy adalah pada format file JPEG, MP3, dan MPEG.
Gambar 2.1. Skema Lossy Compression
2.1.2. Kompresi Lossless
Kompresi data yang menghasilkan file data hasil kompresi yang dapat dikembalikan menjadi file data asli sebelum dikompresi secara utuh tanpa perubahan apapun. Kompresi lossless memiliki derajat kompresi yang lebih rendah tetapi dengan akurasi data yang terjaga antara sebelum dan sesudah proses kompresi. Kompresi lossless
bekerja dengan menemukan pola yang berulang di dalam pesan yang akan dikompres tersebut dan melakukan proses pengkodean pola tersebut secara efisien. Kompresi ini juga dapat berarti proses mengurangi redundancy. Kompresi jenis ini ideal untuk kompresi teks seperti basis data, dokumen atau spreadsheet. Pada kompresi jenis ini tidak diijinkan ada bit yang hilang dari data pada proses kompresi. Algoritma yang termasuk dalam kompresi lossless diantaranya adalah Elias Gamma Code, Elias Delta Code dan Levenstein Code.
(28)
Secara umum kompresi data terdiri dari dua kegiatan besar, 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 daripada stream of symbols. Keputusan untuk mengindentikan simbol tertentu dengan kode tertentu adalah inti dari proses modeling. Secara umum dapat diartikan bahwa sebuah model 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.
Melakukan proses encoding dengan menggunakan ASCII atau EBDIC yang merupakan standar dalam proses komputasi memberikan kelemahan mendasar apabila dilihat dari paradigma kompresi data. ASCII dan EBDIC menggunakan jumlah bit
yang sama untuk setiap karakter, hal ini menyebabkan banyak bit yang ”terbuang”
untuk merepresentasikan karakter-karakter yang sebenarnya jarang muncul pada sebuah pesan.
Jika coding adalah roda dari sebuah mobil maka modeling adalah mesinnya. Sebaik apapun algoritma untuk melakukan coding tanpa model yang baik kompresi data tidak akan pernah terwujud. Kompresi data Lossless pada umumnya diimplementasikan menggunakan salah satu dari dua tipe modeling, yaitu statistical
atau dictionary-based. Statistical-modeling melakukan prosesnya menggunakan probabilitas kemunculan dari sebuah simbol sedangkan dictionary-based
menggunakan kode-kode untuk menggantikan sekumpulan simbol. 1. Statistical Modeling
Pada bentuk paling sederhananya, statistical-modeling menggunakan tabel statis yang berisi probabilitas kemunculan suatu karakter atau symbol. Tabel ini pada awalnya bersifat universal, sebagai contoh pada bahasa Inggris karakter yang paling sering muncul adalah huruf “e” maka karakter ini memiliki probabilitas tertinggi pada file teks yang berbahasa Inggris.
(29)
Menggunakan tabel universal pada akhirnya tidak memuaskan para ahli kompresi data karena apabila terjadi perubahan pada subyek yang dikompresi dan tidak sesuai dengan tabel universal maka akan terjadi penurunan rasio kompresi secara signifikan.
Akhirnya muncul modeling dengan menggunakan tabel yang adaptif, di mana tabel tidak lagi bersifat statis tetapi bisa berubah sesuai dengan kode. Pada prinsipnya dengan model ini, sistem melakukan penghitungan atau
scan pada keseluruhan data setelah itu barulah membangun tabel probabilitas kemunculan dari tiap karakter atau symbol.
Model ini kemudian dikembangkan lagi menjadi adaptive statistical modeling dimana sistem tidak perlu melakukan scan ke seluruh symbol
untuk membangun tabel statistik, tetapi secara adaptif melakukan perubahan tabel pada proses scan karakter per karakter.
2. Dictionary Based Modeling
Jika statistical model pada umumnya melakukan proses encode simbol satu per satu mengikuti siklus: baca karakter hitung probabilitas buat kodenya maka dictionary-based modeling menggunakan mekanisme yang berbeda. Dictionary-based modeling membaca input data dan membandingkannya dengan isi dictionary. Jika sekumpulan string sesuai dengan isi dictionary maka indeks dari dictionary entry-lah yang dikeluarkan sebagai output dan bukan kodenya.
Sebagai perumpamaan dari dictionary-based dapat digunakan makalah ilmiah sebagai contoh. Saat kita membaca makalah ilmiah kita sering membaca nomor-nomor referensi yang bisa kita cocokkan dengan daftar pustaka di belakang. Hal ini mirip dengan proses pada dictionary-based modeling.
2.2. Sistem Pengkodean
Sistem pengkodean adalah aturan untuk mengubah informasi tertentu (seperti tulisan, kata, atau frase) atau simbol lainnya menjadi bentuk lain. Proses pengubahan tersebut dalam ilmu telekomunikasi disebut dengan encoding.
(30)
2.2.1. Fixed Length Encoding
Sistem pengkodean simbol yang menggunakan panjang bit yang sama untuk setiap simbol. Panjang bit minimal yang diperlukan oleh sistem pengkodean ini bergantung pada variasi simbol yang akan dikodekan dan sama dengan nilai entropy maksimum simbol.
2.2.2. Variable Length Encoding
Sistem pengkodean simbol yang menggunakan panjang bit yang berbeda-beda antara simbol yang satu dengan simbol yang lainnya. Salah satu jenisnya adalah panjang simbol ditentukan berdasarkan probabilitas kemunculan dari simbol tersebut dalam suatu deretan simbol. Jenis encoding inilah yang menjadi basis pada proses kompresi data yang berbasis pada statistika.
2.2.3. Prefix Code
Berdasarkan pada pertimbangan untuk mengkodekan simbol dengan menggunakan bit string yang lebih sedikit dibandingankan dengan menggunakan kode standar yang menggunakan panjang bit tetap maka dibuatlah sistem pengkodean simbol dengan menggunakan panjang bit yang variabel. Namun masalah terjadi saat menggunakan kode yang panjangnya variabel yaitu adanya ambiguitas/kerancuan maka saat mengkodekan deretan bit string tertentu menjadi beberapa simbol yang berbeda karena tidak uniquely decodable. Oleh karena itulah digunakan kode yang memiliki properti prefix code yaitu kode dari suatu simbol tidak akan pernah menjadi prefix dari seluruh kode simbol yang selainnya.
2.3. Algoritma Elias Gamma Code
Elias Gamma Code merupakan salah satu contoh universal code yang dipelopori oleh Peter Elias, yang mana hanya dapat mengkodekan bilangan bulat positip. Elias Gamma Code kebanyakan digunakan ketika pengkodean integer yang mempunyai
upper-bound tidak dapat diperiksa sebelumnya. Adapun aturan untuk mengkodekan sebuah bilangan dengan menggunakan Elias Gamma Code adalah sebagai berikut:
(31)
1. Tulis bilangan tersebut dalam bentuk biner.
2. Kurangi 1 dari jumlah bit yang ditulis pada langkah pertama dan tambahkan sesuai dengan banyaknya bilangan nol. Proses yang ekivalen untuk menyatakan proses yang pada point nomor dua adalah sebagai berikut:
a. Pisahkan integer menjadi pangkat 2 tertinggi (2N) yang dapat dan
ditampungnya sisakan digit biner N dari integer tersebut.
b. Kodekan N dalam bentuk unary, jika N adalah nol maka diikuti oleh satu.
c. Tambahkan sisa digit biner N untuk merepresentasikan N
Sedangkan aturan untuk melakukan proses decode suatu integer dengan menggunakan Elias Gamma Code dapat dilakukan dengan cara sebagai berikut: a. Lakukan pembacaan kode sampai angka 1 ditemukan. Nyatakan jumlah angka 0 dengan N.
b. Lakukan pembacaan N berikutnya sebagai integer dari L. Hitung n = 2N + L
Tabel Elias Gamma Code yang menunjukkan 18 kode Gamma dapat dilihat pada tabel 2.1 dibawah ini.
Tabel 2.1. 18 Kode Elias Gamma
1 = 20 + 0 = 1 10 = 23 + 2 = 0001010 2 = 21 + 0 = 010 11 = 23 + 3 = 0001011 3 = 21 + 1 = 011 12 = 23 + 4 = 0001100 4 = 22 + 0 = 00100 13 = 23 + 5 = 0001101 5 = 22 + 1 = 00101 14 = 23 + 6 = 0001110 6 = 22 + 2 = 00110 15 = 23 + 7 = 0001111 7 = 22 + 3 = 00111 16 = 24 + 0 = 000010000 8 = 23 + 0 = 0001000 17 = 24 + 1 = 000010001
(32)
Pengkodean dengan Elias Gamma Code tidak melakukan pengkodean pada bilangan bulat nol ataupun negatif. Salah satu cara untuk menangani nol adalah menambahkan 1 sebelum pengkodean dan kemudian mengurangi dengan 1 setelah dilakukan proses decoding. Salah satu cara yang lain adalah dengan 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.
Elias Gamma Code sangat cocok digunakan untuk mengkodekan bilangan bulat positip bahkan dalam kasus-kasus dimana bilangan bulat positip terbesar tidak diketahui sebelumnya. Selain itu, kode ini tumbuh perlahan-lahan sehingga merupakan kandidat yang baik untuk mengkompresi data integer dimana bilangan bulat kecil sering muncul dan bilangan bulat besar jarang muncul.
Sebagai contoh dari pada algoritma Elias Gamma Code dapat dilihat di bawah:
String = “ADI MEMBACA BUKU DI TAMAN”
CHAR SET = ∑ = {A, D, I, M, E, B, C, SP, U, K, T, N}
Tabel 2.2. Pemetaan Data Teks Dengan Kode Elias Gamma
NO CHAR FREQ KODE GAMMA BIT FREQ * BIT
1 A 5 1 1 5
2 SP 4 010 3 12
3 M 3 011 3 9
4 D 2 00100 5 10
5 I 2 00101 5 10
6 B 2 00110 5 10
7 U 2 00111 5 10
8 E 1 0001000 7 7
9 C 1 0001001 7 7
10 K 1 0001010 7 7
11 T 1 0001011 7 7
12 N 1 0001100 7 7
(33)
Input Stream = 25 x 8 = 200 Output Stream = 101
� � � � � = x % = . %
��� ��� � = % − . % = . %
2.4. Algoritma Elias Delta Code
Elias Delta Code merupakan satu dari tiga Elias Code yang dipelopori oleh Peter Elias. Jika pada Elias Gamma Code, Peter Elias menambahkan panjang pada unary (α) makanya pada Elias Delta Code ditambahkan pada binary (β). Elias Delta Code juga digunakan untuk melakukan pengkodean pada bilangan bulat positip, namun sedikit lebih kompleks daripada Elias Gamma Code. Adapun aturan untuk mengkodekan sebuah bilangan dengan menggunakan Elias Delta Code adalah sebagai berikut :
1. Tuliskan n dalam bilangan biner (binary). Bit yang paling kiri (paling signifikan) akan menjadi 1.
2. Hitung jumlah bit-nya, hapus bit paling kiri dari n dan tambahkan perhitungan dalam bilangan biner (binary) pada bagian kiri dari n setelah bit
paling kiri dari n dihapus.
3. Kurangi 1 dari perhitungan pada langkah ke-2 dan tambahkan jumlah nol ke kode.
Ketika langkah-langkah ini diterapkan pada integer ke-17, hasilnya adalah : 17 = 100012 (lima bit). Hapus angka 1 yang paling kiri dan tambahkan 5 = 1012
sehingga hasilnya 101|0001. Tiga bit sudah ditambahkan, kemudian tambahkan 2 nol untuk mendapatkan kode delta 00|101|0001.
Untuk menghitung panjang kode delta n, dapat dilihat bawah langkah 1 menghasilkan (dari Persamaan (1.1)) M = 1 + [log2 n] bits. Agar lebih sederhana,
tanda [ dan ] dihilang, amati persamaan berikut:
(34)
Hitungan pada langkah ke-2 adalah M, yang panjangnya adalah C oleh karena itu C = 1 + log2, M = 1 + log2 (log2(2n)) bit. Oleh karena itu pada langkah kedua
ditambahkan C bit dan menghapus bit paling kiri dari n. Pada langkah ketiga ditambahkan C – 1 = log2, M = log2(log2(2n))nol.
Selain dengan langkah-langkah pengkodean di atas, pengkodean Elias Delta juga dapat dilakukan dengan menggunakan kode Elias Gamma. Berikut adalah langkah-langkahnya:
1. Tentukan bilangan bulat N yang terbesar sehingga 2N≥ n < 2N+1 dan tuliskan
n = 2N + L. Perhatikan bahwa L merupakan bilangan bulat N yang paling besar.
2. Lakukan pengkodean N + 1 dengan Elias Gamma Code.
3. Tambahkan nilai biner dari L, sebagai integer dari N-bit pada hasil dari langkah kedua.
Ketika langkah-langkah ini diterapkan pada n = 17, hasilnya adalah : 17 = 2N + L = 24 + 1. Kode gamma dari N + 1 = 5 adalah 00101, dan tambahkan L = 0001 sehingga hasilnya adalah 00101|0001.
Tabel Elias Delta Code yang menunjukkan 18 kode delta, dimana L ditulis dengan huruf miring dapat dilihat pada tabel 2.3 di bawah ini.
Tabel 2.3. 18 Kode Elias Delta
1 = 20 + 0|L| = 0 1 10 = 23 + 2 |L| = 3 00100010
2 = 21 + 0 |L| = 10100 11 = 23 + 3 |L| = 3 00100011
3 = 21 + 1 |L| = 10101 12 = 23 + 4 |L| = 3 00100100
4 = 22 + 0 |L| = 201100 13 = 23 + 5 |L| = 3 00100101
5 = 22 + 1 |L| = 2 01101 14 = 23 + 6 |L| = 3 00100110
6 = 22 + 2 |L| = 2 01110 15 = 23 + 7 |L| = 3 00100111
7 = 22 + 3 |L| = 2 01111 16 = 24 + 0 |L| = 3 001010000
8 = 23 + 0 |L| = 3 00100000 17 = 24 + 1 |L| = 3 001010001
(35)
Untuk melakukan decode dengan Elias Delta Code, berikut adalah langkah-langkahnya:
1. Baca bit dari kode sampai proses decode dengan Elias Gamma Code dapat dilakukan. Proses ini dapat dilakukan dengan beberapa langkah berikut ini: 1.1. Hitung jumlah nol terdepan dari kode tersebut lalu gantikan
perhitungan tersebut dengan C.
1.2. Periksa bit bagian kiri 2C + 1 (C nol, diikuti dengan 1, lalu diikuti dengan bit C selebihnya). Ini merupakan decodeElias Gamma Code M + 1.
2. Baca bit M berikutnya. Sebut ini sebagai L. 3. Bilangan bulat yang di decode adalah 2M + L.
Pada kasus dimana n = 17, kode deltanya adalah 001010001. Lewati dua nol, sehingga C = 2. Nilai bit paling kiri dari 2C + 1 = 5 adalah 00101 = 5, jadi M + 1 = 5. Pembacaan akan dilakukan berikutnya pada M = 4 bit 0001, dan diakhirnya dengan nilai decode 2M + L = 24 + 1 = 17.
Sebagai contoh dari pada algoritma Elias Delta Code dapat dilihat di bawah:
String = “ADI MEMBACA BUKU DI TAMAN”
(36)
Tabel 2.4. Pemetaan Data Teks Dengan Kode Elias Delta
NO CHAR FREQ KODE DELTA BIT FREQ * BIT
1 A 5 1 1 5
2 SPASI 4 0100 4 16
3 M 3 0101 4 12
4 D 2 01100 5 10
5 I 2 01101 5 10
6 B 2 01110 5 10
7 U 2 01111 5 10
8 E 1 00100000 8 8
9 C 1 00100001 8 8
10 K 1 00100010 8 8
11 T 1 00100011 8 8
12 N 1 00100100 8 8
25 113
Input Stream = 25 x 8 = 200 Output Stream = 113
� � � � � = x % = . %
��� ��� � = % − . % = . %
2.5. Algoritma Levenstein Code
Algoritma Levenstein Code atau Levensthein Coding merupakan pengkodean
universal untul bilangan bulat non-negatif yang dikembangkan oleh Vladimir Levenshein pada tahun 1968. Algoritma Levenstein Code merupakan algoritma yang prosesnya melalui tahapan-tahapan tertentu baik pada saat pengkodean maupun pembacaan sandi.
Proses pengkodean pada algoritma Levenstein Code. Kode nol pada Levenstein Code adalah satu 0. Untuk mengkodekan angka positip n, lakukan langkah-langkah berikut:
(37)
1. Atur jumlah variabel C menjadi 1.
2. Tuliskan representasi biner dari nomor tanpa awalan “1” ke kode awal. 3. Misalkan M adalah jumlah bit yang dituliskan pada langkah kedua.
4. Jika M tidak sama dengan 0, tambahkan C dengan 1. Ulangi langkah kedua dengan M dimasukkan sebagai nomor baru.
5. Jika M = 0, tambahkan C “1” bit dan 0 ke awal kode.
Tabel Levenstein Code yang menunjukkan 18 kode Levenstein dapat dilihat pada tabel 2.5 di bawah ini.
Tabel 2.5. 18 Kode Levenstein
n Kode Levenstein n Kode Levenstein
0 0 9 1110 1 001
1 10 10 1110 1 010
2 110 0 11 1110 1 011
3 110 1 12 1110 1 100
4 1110 0 00 13 1110 1 101
5 1110 0 01 14 1110 1 110
6 1110 0 10 15 1110 1 111
7 1110 0 11 16 11110 0 00 0000
8 1110 1 000 17 11110 0 00 0001
Tabel di atas menunjukkan beberapa kode Levenstein. Pada tabel tersebut masing-masing bagian dari kode Levenstein dipisahkan dengan tanda spasi. Hal ini dimaksud agar lebih memudahkan dalam mengindikasi bagian-bagian dari kode Levenstein. Sebagai contoh, jika dilanjutkan maka kode Levenstein untuk 18 adalah 11110 | 0 | 0010, untuk 19 adalah 11110 | 0 | 0011, dan seterusnya.
Untuk melakukan pembacaan sandi bilangan bulat pada Levenstein Code dapat dilakukan dengan langkah-langkah sebagai berikut :
1. Lakukan perhitungan pada jumlah bitC “1” sampai “0” ditemukan.
2. Jika hasil perhitungannya adalah C= 0, maka nilainya adalah nol, lalu berhenti. Jika tidak lanjutkan ke langkah ketiga.
(38)
3. Aturlah nilai N = 1, lalu ulangi langkah empat (C-1) kali.
4. Lakukan pembacaan bit N, tambahkan 1, lalu berikan nilai yang dihasilkan ke N (sehingga menghapus nilai sebelumnya dari N). String yang diberikan ke N pada iterasi terakhir merupakan hasil dari pembacaan sandi.
Sebagai contoh dari pada algoritma Levenstein Code dapat dilihat di bawah:
String = “ADI MEMBACA BUKU DI TAMAN”
CHAR SET = ∑ = {A, D, I, M, E, B, C, SPASI, U, K, T, N}
Tabel 2.6. Pemetaan Data Teks Dengan Kode Levenstein
NO CHAR FREQ KODE LEVENSTEIN BIT FREQ * BIT
1 A 5 0 1 5
2 SPASI 4 10 2 8
3 M 3 1100 4 12
4 D 2 1101 4 8
5 I 2 1110000 7 14
6 B 2 1110001 7 14
7 U 2 1110010 7 14
8 E 1 1110011 7 7
9 C 1 11101000 8 8
10 K 1 11101001 8 8
11 T 1 11101010 8 8
12 N 1 11101011 8 8
25 114
Input Stream = 25 x 8 = 200 Output Stream = 114
� � � � � = x % = %
(39)
2.6. Riset Terkait
Sukiman & Chandra (2013) melakukan penelitian terhadap algoritma Elias Gamma Code dengan melakukan pemodelan data yang akan dikompresi untuk kemudian direpresentasikan dengan simbol-simbol tertentu dimana data yang disertakan memilki informasi seperti frekuensi mengenai setiap simbol. Sementara pengkodean dilakukan untuk menghasilkan representasi data terkompresi dengan mengacu pada model guna menentukan kode untuk setiap simbol. Dengan metode tersebut didapat hasil bahwa algoritma Elias Gamma Code mempunyai rentang rasio kompresi 60% – 80%.
Sukirman, et. al. (2010) melakukan penelitian dengan mengoptimalkan proses pada transformasi DCT dan Kuantisasi. Proses yang dilakukan yaitu dengan cara menggabungkan proses DCT dan Kuantisasi. Dari hasil penggabungan tersebut didapatkan bahwa formulasi matematis pada DCT terkuantisasi mengandung jumlah operasi perkalian dan penambahan yang lebih kecil dibandingkan pada formulasi matematis DCT standar. Sehingga DCT terkuantisasi dapat meningkatkan rasio dan kualitas kompresi JPEG.
Wijaya & Widodo (2010) melakukan penelitian terhadapat objek citra digital dengan menggunakan algoritma Huffman, LZW (Lempel Ziv Welch) dan RLE ( Run-Length Encoding). Pengujian dilakukan terhadap waktu kompressi dan dekompressi pada objek citra dengan format bmp, jpg dan tiff. Dari pengujian tersebut algoritma Huffman memiliki kompabilitas tinggi untuk dapat mengkompresi setiap format objek citra. Sedangkan waktu kompresi dan dekompresi algoritma LZW (Lempel Ziv Welch) kurang begitu baik tetapi memiliki kinerja kompresi yang tinggi pada format citra bmp. Sementara kemampuan kompabilitas yang dimiliki algoritma RLE ( Run-Length Encoding) tidak lebih baik dari algoritma Huffman dan LZW. Algoritma RLE hanya mampu mengkompresi citra dengan format bmp berjenis grayscale saja. Tetapi dalam hal ini memiliki performa kinerja yang cukup tinggi.
Arysanti & Livianthy (2010) melakukan pengujian pada data citra dengan menggunakan algoritma Huffman. Data citra yang diolah dalam proses pengkompresannya adalah data citra dengan format BMP. Selain objek citra, pengujian juga dilakukan pada data teks dengan format text document (*.txt) dan
(40)
Hyper Text Markup Language(*.htm). Pada penelitian ini hanya dilakukan pengujian pada tingkat efektivitas metode Huffman untuk kompresi data citra dan teks.
Untuk riset-riset yang terkait dengan penelitian ini dapat dilihat pada tabel 2.7 di bawah ini.
Tabel 2.7. Riset Terkait Peneliti
Tahun
Metodologi
Penelitian Kelebihan / Kekurangan Sukiman & Chandra
(2013)
Elias Gamma Code
Mempunyai kecepatan kompresi yang cukup baik. Namun hanya dapat merepresentasikan 7 karakter pertama dengan jumlah bit di bawah 8 bit.
Sukirman, et. Al. (2010)
DCT Terkuantisasi
Terjadi peningkatan kecepatan waktu eksekusi serta rasio dan kualitas hasil kompresi meningkat bila dibandingkan dengan DCT standar.
Wijaya & Widodo (2010)
Huffman, LZW dan RLE
Huffman memiliki kompabilitas yang tinggi dalam mengolah citra bmp, jpg dan tiff serta kecepatan yang relatif cepat.
LZW (Lempel Ziv Welch) mempunyai performa yang kurang baik namun memiliki kinerja kompresi yang tinggi pada format citra bmp.
Dibanding Huffman dan LZW, RLE (Run Length Encoding) tidak lebih baik dari keduanya. Namun performa dan kinerja RLE dalam mengkompresi citra bmp jenis
grayscale cukup tinggi.
Arysanti & Livianthy
(2010) Huffman
Metode huffman efektif digunakan untuk mengkompresi data citra/karakter yang sedikit dengan frekuensi kemunculan yang besar.
(41)
2.7. Perbedaan dengan Riset yang Lain
Dalam penelitian ini, pengkompresian data akan dilakukan pada data berupa teks (*.txt) dengan menggunakan algoritma Elias Gamma Code, Elias Delta Code dan
Levenstein Code dengan mengacu pada rasio kompresi dan kecepatan kompresi.
2.8. Kontribusi Riset
Dari hasil penelitian diharapkan dapat diketahui perbedaan tingkat rasio kompresi,
space saving dan tingkat kecepatan kompresi antara algoritma Elias Gamma Code,
Elias Delta Code dan Levenstein Code dalam mengkompresi data teks. Serta memberikan pemahaman cara kerja algoritma Elias Gamma Code, Elias Delta Code
(42)
BAB 3
METODOLOGI PENELITIAN
3.1. Pendahuluan
Metodologi penelitian merupakan sekumpulan proses terstruktur mengenai peraturan, kegiatan, dan prosedur yang digunakan oleh pelaku suatu disiplin ilmu dalam melaksanakan penelitian. (Zarlis, et al., 2013)
Kompresi terdiri dari dua tahapan yakni pemodelan dan pengkodean. Suatu model untuk data yang akan dikompresi merepresentasikan suatu simbol tertentu dalam data yang menyertakan informasi seperti frekuensi mengenai setiap simbol. Pengkodean merupakan proses menghasilkan representasi data terkompresi, menggunakan model untuk menentukan suatu kode untuk setiap simbol. Skema pengkodean yang efisien berhubungan dengan kode pendek hingga simbol umum dan kode panjang hingga simbol yang jarang dipakai, dengan tujuan untuk mengoptimalkan panjang kode.
Elias Gamma Code, Elias Delta Code maupun Levenstein Code semuanya merupakan universal code. Pada Elias Gamma Code pengkodean dilakukan pada bilangan bulat positip. Selain Elias Gamma Code, Peter Elias juga mempelopori Elias Delta Code yang juga digunakan untuk mengkodekan bilangan bulat positip, namun lebih kompleks ketimbang Elias Gamma Code. Sementara Levenstein Code digunakan untuk mengkodekan bilangan bulat non-negatif. Dari ketiga algoritma tersebut, Elias Gamma Code merupakan yang paling sederhana jika dibandingkan Elias Delta Code
maupun Levenstein Code. Untuk itu pada penelitian ini, akan dicari tahu seberapa efektif ketiga algoritma tersebut dalam mengkompresi data teks. Dalam penelitian ini yang akan menjadi acuan adalah nilai rasio kompresi, space saving dan kecepatan kompresi.
Pada penelitian ini, penulis menggunakan metode pemodelan dan pengkodean. Selain itu penulis juga melakukan studi literatur (riset pustaka). Historical research
(43)
sama dengan riset pustaka. Historical research dilakukan dengan membaca buku-buku dan literatur serta mengikuti pola dari literatur maupun buku-buku yang dibaca.
3.2. Data Yang Digunakan
Pada penelitian ini penulis akan menggunakan file dokumen teks yang terdapat huruf kecil, huruf besar (kapital), tanda baca dan angka (numerik) dengan jumlah karakter yang berbeda-beda. Untuk file dokumen yang digunakan dalam proses kompresi dapat dilihat pada tabel 3.1 berikut.
Tabel 3.1. Jenis File Dokumen Yang Akan Dikompresi
No Nama Dokumen Variasi Teks
1 Dokumen U10k.txt File teks dengan jumlah karakter di bawah 10.000 2 Dokumen U20k.txt File teks dengan jumlah karakter di bawah 20.000 3 Dokumen U30k.txt File teks dengan jumlah karakter di bawah 30.000 4 Dokumen U45k.txt File teks dengan jumlah karakter di bawah 45.000 5 Dokumen U60k.txt File teks dengan jumlah karakter di bawah 60.000
3.3. Analisa Data 3.3.1. Elias Gamma Code
Langkah-langkah kompresi dengan algoritma Elias Gamma Code, dapat dilihat pada gambar 3.1 berikut.
(44)
Gambar 3.1. Diagram Kompresi Algoritma Elias Gamma Code
Bentuk Tabel Kode Elias Gamma Masukkan File
Teks
Pembacaan / Scanning
Isi File
Bentuk Peta Kode Karakter dan Frekuensi Kemunculan
Tiap Karakter
Ganti Karakter Pada File
Sesuai dengan Tabel Kode
Simpan Hasil ke File Output
Generate Kode Elias Gamma ke ASCII
Timer Stop Timer Start
Sort Z-A
Rasio Kompresi
Space Saving
(45)
Langkah pertama dalam melakukan kompresi file adalah dengan memasukkan
file teks dokumen.txt. Isi file dokumen.txt adalah SEKELOMPOK KAWANAN GAJAH SEDANG MANDI DI KALI. Setelah file teks diterima maka Timer akan mulai melakukan pencatatan waktu yang diperlukan untuk melakukan proses kompresi mulai awal hingga selesai.
Langkah selanjutnya adalah dengan melakukan pembacaan isi file (scanning). Pada tahap ini akan dilakukan pembentukan karakter set yaitu karakter-karakter yang terdapat pada isi file. Setelah karakter set diperoleh maka frekuensi kemunculan untuk tiap-tiap karakter akan dihitung. Berikut adalah hasil scanning terhadap file
dokumen.txt:
Karakter set = {S, E, K, L, O, M, P, SPASI, A, W, N, G, J, H, D, I} Frekuensi Karakter =
S = 2 A = 8
E = 3 W = 1
K = 4 N = 4
L = 2 G = 2
O = 2 J = 1
M = 2 H = 1
P = 1 D = 3
SPASI = 6 I = 3
Setelah karakter set dan frekuensi kemunculan tiap karakter diketahui maka selanjutnya karakter set akan diurutkan berdasarkan frekuensi kemunculannya mulai dari karakter dengan frekuensi kemunculan terbesar ke karakter dengan frekuensi kemunculan terkecil. Jika terdapat lebih dari satu karakter dengan frekuensi kemunculan yang sama maka diurutkan berdasarkan abjad. Untuk hasil pengurutan karakter set dan frekuensi karakter dapat dilihat pada tabel 3.2 di bawah ini.
(46)
Tabel 3.2. Hasil Pengurutan Karakter Set Kompresi Kode Elias Gamma No Karakter Frekuensi Karakter
1 A 8
2 SPASI 6
3 K 4
4 N 4
5 D 3
6 E 3
7 I 3
8 G 2
9 L 2
10 M 2
11 O 2
12 S 2
13 H 1
14 J 1
15 P 1
16 W 1
Langkah selanjutnya adalah dengan membentuk tabel kode Elias Gamma. Untuk kode-kode yang terbentuk pada tabel kode Elias Gamma dapat dilihat pada tabel 2.1. Setelah itu karakter-karakter yang terdapat pada file dokumen yang akan dikompresi diganti dengan kode yang terdapat pada tabel kode Elias Gamma. Setelah diganti, hitung jumlah bit untuk tiap karakter. Untuk hasil pergantian karakter pada
(47)
Tabel 3.3. Penggantian Karakter Dengan Kode Elias Gamma No Karakter Frekuensi
Karakter
Kode Elias Gamma
Bit Frekuensi x Bit
1 A 8 1 1 8
2 SPASI 6 010 3 18
3 K 4 011 3 12
4 N 4 00100 5 20
5 D 3 00101 5 15
6 E 3 00110 5 15
7 I 3 00111 5 15
8 G 2 0001000 7 14
9 L 2 0001001 7 14
10 M 2 0001010 7 14
11 O 2 0001011 7 14
12 S 2 0001100 7 14
13 H 1 0001101 7 7
14 J 1 0001110 7 7
15 P 1 0001111 7 7
16 W 1 000010000 9 9
Total Char 45 Total Bit 203
Setelah diketahui kode untuk masing-masing karakter maka akan diperoleh sebuah string bit untuk dokumen.txt dengan isi dokumen adalah SEKELOMPOK KAWANAN GAJAH SEDANG MANDI DI KALI seperti yang terlihat pada gambar 3.2 di bawah ini:
Gambar 3.2. StringBit Kode Elias Gamma Pada dokumen.txt 00011000011001100110000100100010110001010000111 10001011011010011100001000010010010010001000010 00100011101000110101000011000011000101100100000 10000100001010100100001010011101000101001110100 111000100100111
(48)
Selanjutnya adalah melakukan generate string bit kode Elias Gamma pada dokumen.txt menjadi kode ASCII. Namun sebelum melakukan generate dilakukan pemeriksaan terhadap panjang string bit dokumen.txt terlebih dahulu. Berikut adalah langkah-langkah dalam melakukan pemeriksaan terhadap panjang stringbit :
1. Jika sisa bagi panjang string bit terhadap 8 adalah 0 maka tambahkan 00000001. Nyatakan dengan Bit Akhir.
2. Jika sisa bagi panjang string bit terhadap 8 adalah n (1, 2, 3, 4, 5, 6, 7) maka tambahkan 0 sebanyak 7 – n +”1” di akhir string bit. Nyatakan dengan L. Lalu tambahkan bilangan biner dari 9 - n. Nyatakan dengan Bit Akhir.
Langkah-langkah pemeriksaan string bit dapat dilihat pada gambar 3.3. dan gambar 3.4 di bawah ini:
Gambar 3.3. Pemeriksaan Panjang StringBit Kode Elias Gamma
Gambar 3.4. Hasil Penambahan Pada StringBit Kode Elias Gamma 00011000011001100110000100100010110001010000111 10001011011010011100001000010010010010001000010 00100011101000110101000011000011000101100100000 10000100001010100100001010011101000101001110100 111000100100111
Jumlah Total 203 bit N = MOD (203,8) = 3 L = 7 –3 + “1” = 00001 Bit Akhir = 9 – n = 6 >> 00000110
00011000011001100110000100100010110001010000111 10001011011010011100001000010010010010001000010 00100011101000110101000011000011000101100100000 10000100001010100100001010011101000101001110100 1110001001001110000100000110
(49)
Hasil generate kode Elias Gamma menjadi kode ASCII dapat dilihat pada gambar 3.5 di bawah ini:
Gambar 3.5. Hasil Generate StringBit Kode Elias Gamma Ke ASCII
Hasil generate pada gambar 3.5 akan disimpan pada fileoutput lalu Timer akan berhenti melakukan pencatatan waktu. Rasio kompresi dan space saving dari proses kompresi yang ditandai dengan dimulainya perhitungan waktu hingga diberhentikannya waktu adalah sebagai berikut:
Input Stream = 45 x 8 = 360 Output Stream = 203
� � � � � = x % = . %
��� ��� � = % − . % = . %
00011000 01100110 01100001 00100010 11000101 00001111 00010110 11010011 10000100 00100100 10010001 00001000 10001110 10001101 01000011 00001100 01011001 00000100 00100001 01010010 00010100 11101000 10100111 01001110 00100100 11100001 00000110 00000000 00000000 00000000 0000000
(50)
Langkah-langkah dekompresi dengan algoritma Elias Gamma Code, dapat dilihat pada gambar 3.6 di bawah ini.
Gambar 3.6. Diagram Dekompresi Algoritma Elias Gamma Code
Langkah pertama dalam melakukan dekompresi file adalah dengan memasukkan file hasil kompresi. Saat file dimasukkan Timer akan mulai melakukan pencatatan waktu yang dilanjutkan dengan melakukan generate terhadap isi file ke
binary. Hasil generata isi file menjadi binary dapat dilihat pada gambar 3.7 di bawah ini:
Masukkan File
Teks
Generate Isi File Ke
Binary
Ganti String Bit Sesuai Dengan Tabel Kode Elias
Gamma
Simpan Hasil ke File Output
Timer Stop Timer Start
Kembalikan Ke String Bit Semula
(51)
Gambar 3.7. Hasil Generate ASCII Ke Binary
Selanjutnya adalah dengan mengembalikan binary menjadi string bit semula. Untuk mengembalikan binary menjadi string bit semula dapat dilakukan melalui langkah-langkah berikut ini:
1. Lakukan pembacaan pada 8 bit terakhir, hasil pembacaan berupa bilangan desimal. Nyatakan hasil pembacaan dengan n.
2. Hilangkan bit pada bagian akhir sebanyak 7 + n.
Hasil pengembalian binary menjadi string bit semula dapat dilihat pada gambar 3.8 di bawah ini:
Gambar 3.8. Pengembalian Binary Ke StringBit Semula Kode Elias Gamma 00011000011001100110000100100010110001010000111
10001011011010011100001000010010010010001000010 00100011101000110101000011000011000101100100000 10000100001010100100001010011101000101001110100 1110001001001110000100000110
00011000011001100110000100100010110001010000111 10001011011010011100001000010010010010001000010 00100011101000110101000011000011000101100100000 10000100001010100100001010011101000101001110100 1110001001001110000100000110
desimal (n) = 6
00011000011001100110000100100010110001010000111 10001011011010011100001000010010010010001000010 00100011101000110101000011000011000101100100000 10000100001010100100001010011101000101001110100 111000100100111
(52)
Setelah diperoleh string bit seperti semula, langkah selanjutnya adalah dengan menggantikan kode pada stringbit berdasarkan Tabel 3.3 agar diperoleh isi dokumen seperti sebelum mengalami kompresi. Berikut adalah langkah-langkah untuk mengganti stringbit berdasarkan tabel kode Elias Gamma:
1. Lakukan pembacaan string bit dari awal hingga ketemu 1. Catat posisi angka 1 dan nyatakan sebagai p. Nyatakan jumlah 0 dengan n.
2. Lanjutkan pembacaan stringbit setelah angka 1 sebanyak n.
3. Ganti kode hasil pembacaann dengan karakter berdasarkan tabel 3.3. Hasil penggantian string bit berdasarkan tabel 3.3. ataupun hasil dekompresi dengan kode Elias Gamma dapat dilihat pada gambar 3.9. di bawah ini:
Gambar 3.9. Hasil Dekompresi Kode Elias Gamma
Hasil dekompresi pada gambar 3.9 akan disimpan pada file output lalu Timer
akan berhenti melakukan pencatatan waktu. Hasil pencatatan waktu oleh Timer akan dijadikan sebagai pembanding kecepatan dekompresi.
00011000011001100110000100100010110001010000111 10001011011010011100001000010010010010001000010 00100011101000110101000011000011000101100100000 10000100001010100100001010011101000101001110100 111000100100111
SEKELOMPOK KAWANAN GAJAH SEDANG MANDI DI KALI
(53)
3.3.2. Elias Delta Code
Langkah-langkah kompresi dengan algoritma Elias Delta Code, dapat dilihat pada gambar 3.10 di bawah ini:
Gambar 3.10. Diagram Kompresi Algoritma Elias Delta Code
Masukkan File Teks
Pembacaan / Scanning
Isi File
Bentuk Peta Kode Karakter dan Frekuensi Kemunculan
Tiap Karakter
Bentuk Tabel Kode Elias Delta
Ganti Karakter Pada File
Sesuai dengan Tabel Kode
Simpan Hasil ke File Output
Generate Kode Elias Delta ke ASCII
Timer Stop Timer Start
Sort Z-A
Rasio Kompresi
Space Saving
(54)
Langkah pertama dalam melakukan kompresi file adalah dengan memasukkan
file teks dokumen.txt. Isi file dokumen.txt adalah SEKELOMPOK KAWANAN GAJAH SEDANG MANDI DI KALI. Setelah file teks diterima maka Timer akan mulai melakukan pencatatan waktu yang diperlukan untuk melakukan proses kompresi mulai awal hingga selesai.
Langkah selanjutnya adalah dengan melakukan pembacaan isi file (scanning). Pada tahap ini akan dilakukan pembentukan karakter set yaitu karakter-karakter yang terdapat pada isi file. Setelah karakter set diperoleh maka frekuensi kemunculan untuk tiap-tiap karakter akan dihitung. Berikut adalah hasil scanning terhadap file
dokumen.txt:
Karakter set = {S, E, K, L, O, M, P, SPASI, A, W, N, G, J, H, D, I} Frekuensi Karakter =
S = 2 A = 8
E = 3 W = 1
K = 4 N = 4
L = 2 G = 2
O = 2 J = 1
M = 2 H = 1
P = 1 D = 3
SPASI = 6 I = 3
Setelah karakter set dan frekuensi kemunculan tiap karakter diketahui maka selanjutnya karakter set akan diurutkan berdasarkan frekuensi kemunculannya mulai dari karakter dengan frekuensi kemunculan terbesar ke karakter dengan frekuensi kemunculan terkecil. Jika terdapat lebih dari satu karakter dengan frekuensi kemunculan yang sama maka diurutkan berdasarkan abjad. Untuk hasil pengurutan karakter set dan frekuensi karakter dapat dilihat pada tabel 3.4 di bawah ini:
(55)
Tabel 3.4. Hasil Pengurutan Karakter Set Kompresi Kode Elias Delta No Karakter Frekuensi Karakter
1 A 8
2 SPASI 6
3 K 4
4 N 4
5 D 3
6 E 3
7 I 3
8 G 2
9 L 2
10 M 2
11 O 2
12 S 2
13 H 1
14 J 1
15 P 1
16 W 1
Langkah selanjutnya adalah dengan membentuk tabel kode Elias Delta. Untuk kode-kode yang terbentuk pada tabel kode Elias Delta dapat dilihat pada tabel 2.3. Setelah itu karakter-karakter yang terdapat pada file dokumen yang akan dikompresi diganti dengan kode yang terdapat pada tabel kode Elias Delta. Setelah diganti, hitung jumlah bit untuk tiap karakter. Untuk hasil pergantian karakter pada file dokumen dengan kode Elias Delta dapat dilihat pada tabel 3.5 di bawah ini:
(1)
Gambar 4.33 berikut menunjukkan grafik rata-rata rasio kompresi dan Space Saving algoritma Gamma Code, Elias Delta Code dan Levenstein Code.
Gambar 4.33. Grafik Rata-Rata Nilai Rasio Kompresi dan Space Saving Elias Gamma Code, Elias Delta Code dan Levenstein Code
Pada Gambar 4.33, terlihat bahwa secara rata-rata nilai rasio kompresi algoritma Elias Gamma Code adalah yang paling rendah yakni 63.36%, disusul oleh Elias Delta Code dengan rata-rata rasio kompresi sebesar 68.83%. Sementara algoritma Levenstein Code mempunyai nilai rata-rata rasio kompresi yang paling besar yakni 72.12%. Sedangkan nilai rata-rata Space Saving algoritma Elias Gamma Code menempati urutan paling tinggi dalam melakukan penghematan ukuran file jika dibandingkan dengan Elias Delta Code dan Levenstein Code yakni sebesar 36.64%, algoritma Elias Delta Code sebesar 31.17% dan Levenstein Code sebesar 27.88%.
63.36%
68.83% 72.12%
36.64%
31.17%
27.88%
0% 10% 20% 30% 40% 50% 60% 70% 80%
Elias Gamma Code Elias Delta Code Levenstein Code
Rasio Kompresi
Space Saving
(2)
86
4.4.3. Perbandingan Waktu Kompresi dan Waktu Dekompresi Algoritma Elias Gamma Code, Elias Delta Code dan Levenstein Code
Tabel 4.11 menyajikan informasi waktu yang diperlukan algoritma Elias Gamma Code, Elias Delta Code dan Levenstein Code dalam melakukan proses kompresi maupun dekompresi terhadap semua dokumen txt.
Tabel 4.11. Waktu Kompresi dan Dekompresi Algoritma Elias Gamma Code, Elias Delta Code dan Levenstein Code
Algoritma Elias Gamma Code Elias Delta Code Levenstein Code
Nama File WK WD WK WD WK WD
Dokumen U10k.txt 0:00:07.945 0:00:04.339 0:00:08.902 0:00:07.534 0:00:09.447 0:00:07.737
Dokumen U20k.txt 0:00:23.076 0:00:08.165 0:00:25.169 0:00:10.774 0:00:26.191 0:00:15.873
Dokumen U30k.txt 0:00:46.199 0:00:13.964 0:00:47.490 0:00:20.933 0:00:51.115 0:00:30.789
Dokumen U45k.txt 0:02:10.959 0:00:33.921 0:02:22.107 0:00:46.636 0:02:26.748 0:01:20.544
Dokumen U60k.txt 0:01:05.112 0:03:57.837 0:04:15.431 0:02:12.581 0:04:28.266 0:02:34.794
Keterangan : WK = Waktu Kompresi WD = Waktu Dekompresi
Pada Tabel 4.11, terlihat bahwa waktu yang diperlukan algoritma Elias Gamma Code untuk melakukan kompresi pada file yang diuji sebagai algoritma yang membutuhkan waktu paling singkat. Sedangkan waktu yang diperlukan algoritma Levenstein Code untuk melakukan kompresi pada file yang diuji sebagai algoritma yang membutuhkan waktu yang paling lama. Sementara waktu yang dibutuhkan algoritma Elias Delta Code untuk melakukan kompresi pada file yang diuji berada diantara keduanya.
(3)
BAB 5
KESIMPULAN DAN SARAN
5.1. Kesimpulan
Penelitian ini menghasilkan beberapa kesimpulan sebagai berikut :
1. Rasio kompresi yang dihasilkan oleh algoritma Elias Gamma Code pada proses kompresi lebih kecil daripada Elias Delta Code dan Levenstein Code.
2. Space Saving yang dihasilkan oleh algoritma Elias Gamma Code pada proses kompresi lebih besar daripada Elias Delta Code dan Levenstein Code.
3. Semakin besar ukuran file yang dikompresi maka waktu yang dibutuhkan juga semakin lama.
4. Secara rata-rata algoritma Elias Gamma Code menghasilkan rasio kompresi yang terbaik yaitu 63.36%, diikuti algoritma Elias Delta Code yaitu 68.83% dan terakhir algoritma Levenstein Code yaitu sebesar 72.12%.
5. Secara rata-rata algoritma Elias Gamma Code menghasikan Space Saving terbaik yaitu 36.64%, diikut algoritma Elias Delta Code yaitu 31.17% dan terakhir algoritma Levenstein Code yaitu sebesar 27.88%.
Dengan demikian, penulis menarik kesimpulan bahwa rasio kompresi yang dihasilkan oleh algoritma Elias Gamma Code merupakan rasio kompresi terbaik, disusul dengan algoritma Elias Delta Code dan berada diurutan terakhir algoritma Levenstein Code. Oleh karena nilai Space Saving dihasilkan dari rasio kompresi yakni dengan mengurangi 100% dengan nilai rasio kompresi maka dalam hal ini Space Saving yang dihasilkan algoritma Elias Gamma Code juga merupakan yang terbaik, disusul dengan algoritma Elias Delta Code dan berada diurutan terakhir algoritma Levenstein Code. Besarnya ratio kompresi bergantung pada jumlah karakter set dan jumlah frekuensi kemunculan tiap karakter. Sementara untuk waktu kompresi,
(4)
88
algoritma Elias Gamma Code merupakan algoritma yang membutuhkan waktu paling singkat diantara algoritma Elias Delta Code dan Levenstein Code.
Algoritma Elias Gamma Code efisien digunakan untuk melakukan kompresi pada bilangan bulat kecil tapi tidak cocok untuk bilangan bulat besar sehingga akan lebih cocok jika menggunakan algoritma Elias Delta Code namun waktu yang diperlukan lebih lama dari algoritma Elias Gamma Code. Sementara Levenstein Code baik digunakan jika nilai terbesar yang akan dikodekan tidak diketahui sebelumnya, atau untuk kompres data yang nilai kecil jauh lebih sering daripada nilai besar namun waktu yang diperlukan untuk melakukan kompresi tidak secepat bila dibandingkan dengan algoritma Elias Gamma Code dan Elias Delta Code.
5.2. Saran
Adapun saran yang diajukan pada penelitian ini adalah sebagai berikut.
1. Untuk penelitian lebih lanjut, tipe file yang digunakan untuk proses kompresi dapat lebih bervariasi, misalnya file dengan ekstensi *.doc dan *.rtf.
2. Penelitian lebih lanjut dapat mengkombinasikan algoritma yang ada sehingga rasio kompresi yang dihasilkan dapat lebih baik lagi.
3. Waktu kompresi yang terlalu lama bila file yang akan dikompresi berukuran besar sehingga untuk penelitian berikut diharapkan agar waktu yang diperlukan untuk proses kompresi dapat lebih singkat.
(5)
DAFTAR PUSTAKA
Arysanti, S. dan Livianthy, I. L. Z. 2010. Analisis Metode Huffman Untuk Kompresi Data Citra dan Teks Pada Aplikasi Kompresi Data. Sekolah Tinggi Manajemen Informatika dan Komputer Global Informatika MDP. Palembang. Indonesia.
Cormen, T.H., Leiserson, C.E., Rivest, R.L. dan Stein, C. 2009. Introduction to Algorithms. Third Edition. The MIT Press: London.
David, S. 2004. Data Compression The Complete Reference. Third Edition. Department of Computer Science. California State University, Northridge, Springer-Verlag. New York.
David, S. 2007. Variable-length Codes for Data Compression. Computer Science Department. California State University, Northridge, Springer-Verlag, London. (2): 74-80
David, S. dan Giovanni M., 2010. Handbook of Data Compression. Fifth Edition. Computer Science Department. California State University, Northridge, Springer-Verlag, London.
Hankerson, D. R., Harris, G. A., Johnson, P. D., 2003. Introduction to Information Theory and Data Compression. Second Edition. Chapman and Hall/CRC. London. New York.
Hasibuan, Z. 2007. Metodologi Penelitian pada Bidang Ilmu Komputer dan Teknologi Informasi: Konsep, Teknik, dan Aplikasi. Fakultas Ilmu Komputer. Universitas Indonesia.
Mauro, B. 2004. Document and Image Compression. Siena : Taylor and Francis Ltd. London. United Kingdom.
Mengyi, P.I, 2006. Fundamental Data Compression. Linacre House, Jordan Hill, Oxford.
Sukirman, E., Ernastuti dan Madenda, S. 2010. Peningkatan Kinerja Algoritma Kompresi dan Dekompresi JPEG Melalui Penggabungan Proses DCT dan Kuantisasi. Fakultas Ilmu Komputer dan Teknologi Informasi. Universitas Gunadarma. Indonesia.
Sukiman dan Chandra, T. 2013. Aplikasi Kompresi File dengan Algoritma Elias Gamma. Jurnal CORE IT Vol. 1 No. 1. Teknik Informatika STMIK IBBI. Ujianto, E.I.H. dan Hartati, S. 2009. Lossless Image Compressin Overview. Sesindo
ITS. Surabaya. Indonesia.
Wijaya, A. dan Widodo, S. 2010. Kinerja dan Performa Algoritma Kompresi Lossless Terhadap Objek Citra Digital. Fakultas Teknologi Industri. Universitas Gunadarma. Indonesia.
Zarlis, M., Sitompul, O.S., Sawaluddin, Effendi, S., Sihombing, P. dan Nababan, E.B. 2013. Pedoman Penulisan Tesis. FasilkomTI. Universitas Sumatera Utara.
(6)
90
LAMPIRAN
DAFTAR PUBLIKASI ILMIAH PENULIS (TESIS)
No Judul Artikel Penulis Publikasi
(Seminar-Jurnal) Tahun Tempat
1.
2.