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