• Tidak ada hasil yang ditemukan

Analisis Hasil Kompresi Data Teks Pada Algoritma Elias Gamma Code, Elias Delta Code Dan Levenstein Code

N/A
N/A
Protected

Academic year: 2016

Membagikan "Analisis Hasil Kompresi Data Teks Pada Algoritma Elias Gamma Code, Elias Delta Code Dan Levenstein Code"

Copied!
109
0
0

Teks penuh

(1)

TESIS

ANTONI

117038029

PROGRAM STUDI S2 TEKNIK INFORMATIKA

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

(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

(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 : 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

(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

(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.

(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.

(12)

Hal

(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

: 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.

(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.

(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

(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

(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

(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,

(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

(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

(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

(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

(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

(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

(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

(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:

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

(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

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

(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

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

(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

(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,

(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. 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

(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.

(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

(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:

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

(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

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

(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

(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

(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

(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:

(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

(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

Gambar

Tabel 2.2. Pemetaan Data Teks Dengan Kode Elias Gamma
Tabel 2.3. 18 Kode Elias Delta
Gambar 3.12. Pemeriksaan Panjang String Bit Kode Elias Delta
gambar 3.14 di bawah ini :
+7

Referensi

Dokumen terkait

[r]

2014 SEWA/LELANG

[r]

Penyewa adalah orang yang menyewa tanah kas desa atau. orang yang ditetapkan sebagai pemenang

Penelitian ini mengangkat masalah submodul (A,B)-invarian dan submodul ketercapaian yang muncul dari suatu masalah dalam teori sistem linear atas daerah ideal utama (d.i.u) yang

bahwa berdasarkan pertimbangan sebagaimana dimaksud huruf a, perlu menetapkan Keputusan Bupati Bantul tentang Pembentukan Majelis dan Sekretariat Tuntutan

Pengaruh Model Kooperatif Tipe Make A Match Terhadap Hasil Belajar Matematika Siswa Kelas VII SMP Negeri 9 Lubuklinggau Pengaruh Model Pembelajaran Kooperatif Tipe Make

Oleh sebab itu tujuan penelitian ini adalah untuk mengetahui apakah ada pengaruh media lagu terhadap hasil belajar matematika pada materi sifat-sifat bangun datar