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

11

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 ambiguitaskerancuan maka saat mengkodekan deretan bit string tertentu menjadi beberapa simbol yang berbeda karena tidak uniquely decodable. Oleh karena itulah digunakan kode yang memiliki properti prefix code yaitu kode dari suatu simbol tidak akan pernah menjadi prefix dari seluruh kode simbol yang selainnya.

2.3. Algoritma

Elias Gamma Code Elias Gamma Code merupakan salah satu contoh universal code yang dipelopori oleh Peter Elias, yang mana hanya dapat mengkodekan bilangan bulat positip. Elias Gamma Code kebanyakan digunakan ketika pengkodean integer yang mempunyai upper-bound tidak dapat diperiksa sebelumnya. Adapun aturan untuk mengkodekan sebuah bilangan dengan menggunakan Elias Gamma Code adalah sebagai berikut: Universitas Sumatera Utara 12 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 2 N yang dapat dan ditampungnya sisakan digit biner N dari integer tersebut. b. Kodekan N dalam bentuk unary, jika N adalah nol maka diikuti oleh satu. c. Tambahkan sisa digit biner N untuk merepresentasikan N Sedangkan aturan untuk melakukan proses decode suatu integer dengan menggunakan Elias Gamma Code dapat dilakukan dengan cara sebagai berikut: a. Lakukan pembacaan kode sampai angka 1 ditemukan. Nyatakan jumlah angka 0 dengan N. b. Lakukan pembacaan N berikutnya sebagai integer dari L. Hitung n = 2N + L Tabel Elias Gamma Code yang menunjukkan 18 kode Gamma dapat dilihat pada tabel 2.1 dibawah ini. Tabel 2.1. 18 Kode Elias Gamma 1 = 2 + 0 = 1 10 = 2 3 + 2 = 0001010 2 = 2 1 + 0 = 010 11 = 2 3 + 3 = 0001011 3 = 2 1 + 1 = 011 12 = 2 3 + 4 = 0001100 4 = 2 2 + 0 = 00100 13 = 2 3 + 5 = 0001101 5 = 2 2 + 1 = 00101 14 = 2 3 + 6 = 0001110 6 = 2 2 + 2 = 00110 15 = 2 3 + 7 = 0001111 7 = 2 2 + 3 = 00111 16 = 2 4 + 0 = 000010000 8 = 2 3 + 0 = 0001000 17 = 2 4 + 1 = 000010001 9 = 2 3 + 1 = 0001001 18 = 2 4 + 2 = 000010010 Universitas Sumatera Utara 13 Pengkodean dengan Elias Gamma Code tidak melakukan pengkodean pada bilangan bulat nol ataupun negatif. Salah satu cara untuk menangani nol adalah menambahkan 1 sebelum pengkodean dan kemudian mengurangi dengan 1 setelah dilakukan proses decoding. Salah satu cara yang lain adalah dengan memberi prefix pada semua kode bukan nol dengan 1 dan kemudian kode nol sebagai suatu 0 tunggal. Salah satu cara untuk mengkodekan semua integer adalah membentuk suatu bijeksi, yaitu pemetaan bilangan bulat 0, 1, -1, 2, -2, 3, - 3, …. hingga 1, 2 , 3, 4, 5, 6, 7, …. sebelum pengkodean dimulai. Elias Gamma Code sangat cocok digunakan untuk mengkodekan bilangan bulat positip bahkan dalam kasus-kasus dimana bilangan bulat positip terbesar tidak diketahui sebelumnya. Selain itu, kode ini tumbuh perlahan-lahan sehingga merupakan kandidat yang baik untuk mengkompresi data integer dimana bilangan bulat kecil sering muncul dan bilangan bulat besar jarang muncul. Sebagai contoh dari pada algoritma Elias Gamma Code dapat dilihat di bawah: String = “ADI MEMBACA BUKU DI TAMAN” CHAR SET = ∑ = {A, D, I, M, E, B, C, SP, U, K, T, N} Tabel 2.2. Pemetaan Data Teks Dengan Kode Elias Gamma NO CHAR FREQ KODE GAMMA BIT FREQ BIT 1 A 5 1 1 5 2 SP 4 010 3 12 3 M 3 011 3 9 4 D 2 00100 5 10 5 I 2 00101 5 10 6 B 2 00110 5 10 7 U 2 00111 5 10 8 E 1 0001000 7 7 9 C 1 0001001 7 7 10 K 1 0001010 7 7 11 T 1 0001011 7 7 12 N 1 0001100 7 7 25 101 Universitas Sumatera Utara 14 Input Stream = 25 x 8 = 200 Output Stream = 101 � � � � � = x = . ��� ��� � = − . = .

2.4. Algoritma