TESIS
ANTONI
117038029
PROGRAM STUDI S2 TEKNIK INFORMATIKA
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
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
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
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
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
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
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 : antoni.sun@hotmail.com
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
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
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
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.
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.
Hal
: 2.5. Algoritma Levenstein Code 17
: 2.6. Riset Terkait 20
: 2.7. Perbedaan dengan Riset yang Lain 22
: 2.8. Kontribusi Riset 22
: 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
: 5.1. Kesimpulan 87
: 5.2. Saran 88
DAFTAR PUSTAKA 89
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
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
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
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.
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.
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
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
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
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,
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
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
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)
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.
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
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
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
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
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
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:
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:
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
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”
Tabel 2.4. Pemetaan Data Teks Dengan Kode Elias Delta
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
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
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
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
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,
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. dapat merepresentasikan 7 karakter pertama dengan jumlah bit di kualitas hasil kompresi meningkat bila dibandingkan dengan DCT standar. mempunyai performa yang kurang baik namun memiliki kinerja kompresi yang tinggi pada format mengkompresi citra bmp jenis
grayscale cukup tinggi.
Arysanti & Livianthy
(2010) Huffman
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
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.
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. 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
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:
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
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
Tabel 3.3. Penggantian Karakter Dengan Kode Elias Gamma
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
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
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
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
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:
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
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