KOMPRESI DATA
Dasar-dasar Kompresi Lossless
Coding Letter/Symbol Codeword π 1 π 2 01 π 3 11 Code adalah sekumpulan rangkaian bit-bit. Codeword adalah representasi bit per simbol. Code terdiri atas kumpulan codewords. Contoh: Maka, kode 110001011101, terdiri dari berapa codeword? 7. Bagaimana urutan simbolnya? Letter/Symbol Codeword π 1 π 2 01 π 3 11
Jenis Code Fixed-Length Code Variable-Length Code
Fixed-Length Code Setiap simbol/karakter (letter) direpresentasikan oleh codeword yang panjangnya tetap (fixed) Contoh: representasi ASCII Setiap codeword memiliki panjang 8 bit Banyaknya bit dalam sebuah pesan teks = banyaknya karakter * 8 bit
Variable-Length Code Digunakan untuk mengurangi jumlah bit yang diperlukan dalam merepresentasikan pesan teks Simbol/karakter yang sering muncul -> codeword pendek Simbol/karakter yang jarang muncul -> codeword panjang Codeword sebuah simbol dapat berbeda pada pesan yang berbeda Rata-rata jumlah bit per symbol pada sebuah kode disebut rate of the code atau average length
Encode vs Decode Encode -> mengubah simbol/karakter pada message menjadi kode Decode -> mengubah kembali kode ke simbol/karakter awal
Karakteristik Kode (Code) Ideal Idealnya, setiap pesan dapat di-encode menjadi kode yang memiliki karakteristik: Memiliki codeword yang unik (tiap simbol direpresentasikan oleh kode yang berbeda-beda, tidak ada kode yang sama) Tidak menyebabkan ambiguitas dalam men-decode (unique decodable) Instantaneous Decodable (tidak harus menunggu kode berikutnya untuk mengecek codewords) Average Length kecil
Menguji Unique Decodability Misalkan ada 2 buah codewords a dan b, dengan panjang a=k bits dan panjang b=n bis, k<n Jika k buah bit pertama dari b adalah a, maka a adalah prefix dari b Sisa bit pada b disebut dangling suffix Misal a=010, b=01011 a prefix dari b Dangling suffix=11
Menguji Unique Decodability List semua codewords pada kode yang akan diuji Jika ada codeword yang menjadi prefix dari codeword lainnya, tambahkan dangling suffix tersebut ke list Lakukan kembali pengecekan prefix pada langkah 2 Pengecekan berhenti jika: Dangling suffix yang harus ditambahkan merupakan codeword -> not unique decodable Tidak terjadi kondisi point sebelumnya dan tidak ada lagi penambahan dangling suffix yang unik -> unique decodable
Contoh Codes[1] Terdapat 4 simbol a1, a2, a3, a4 dengan probabilitas masing-masing: P(a1) = Β½, P(a2) = ΒΌ, P(a3) = P(a4) = 1/8 Entropi? Average Length?
Contoh Codes[1] Lanj. a1 a2 a3 a4 Average Length Code 1 1 10 1.125 P(a1) = Β½, P(a2) = ΒΌ, P(a3) = P(a4) = 1/8 Jika di-encode ke dalam beberapa macam code sbb: Code mana yang memiliki karakteristik ideal? a1 a2 a3 a4 Average Length Code 1 1 10 1.125 Code 2 00 11 1.25 Code 3 01 011 0111 1.875 Code 4 110 111 1.75
Code 1 Code 1 = {0, 0, 1, 10} Average length paling kecil, tetapi codewords tidak unik, karena a1 = a2 Code 1 tidak ideal, dapat menyebabkan ambiguitas
Code 2 Code 2 = {0, 1, 00, 11} Codewords unik Punya potensi masalah Contoh: encode rangkaian simbol a2 a1 a1 Hasil encode 100 Hasil decode: a2 a1 a1 atau a2 a3 ? Terjadi ambiguitas -> tidak unique decodable
Code 3 Code 3 = {0, 01, 011, 0111} Codewords unik Unique decodable Semua codewords berawal β0β, yang membedakan adalah jumlah bit β1β Contoh: 01100101011101011 didecode menjadi? Bukan instantaneous code (Ketika mendapati codeword tertentu, belum dapat dipastikan bahwa codeword yang dimaksud adalah codeword tersebut, harus menunggu bit selanjutnya)
Code 4 Code 4 = { 0, 10, 110, 111} Codewords unik Unique decodable Tiga codewords berakhir β0β Satu codeword terdiri atas 3 bit bernilai 1 Contoh: 10011111010010 didecode menjadi? Instantaneous code
Prefix-Free Code Berdasarkan unique decodability test, sebuah kode tidak unique decodable jika terdapat dangling suffix yang merupakan codeword pada kode tersebut Langkah aman utk menjamin sebuah kode itu unique decodable adalah menghindari adanya dangling suffix
Prefix-Free Code Dapat direpresentasikan dalam bentuk pohon biner Ciri khas: setiap symbol akan menjadi leaves nodes, tidak ada yang menjadi internal nodes Contoh 1: Prefix-free Code {01, 10, 11, 000, 001} Jika π π = banyaknya codeword yang memiliki panjang bit i, maka: π 2 =3 (pada level 2, ada 3 codeword) π 3 =2 (pada level 3, ada 2 codeword)
Prefix-Free Code Dapat direpresentasikan dalam bentuk pohon biner Ciri khas: setiap symbol akan menjadi leaves nodes, tidak ada yang menjadi internal nodes
Contoh-1 Prefix-free Code {01, 10, 11, 000, 001} Jika ni = banyaknya codeword yang memiliki panjang bit i, maka: n2 = 3 (pada level 2, ada 3 codeword) n3 = 2 (pada level 3 ada 2 codeword
Contoh-2 Code {0, 01, 011, 0111} Bukan prefix-free code, tapi unique decodable Code {0, 01, 11}
Ketidaksamaan Kraft-McMillan Teorema 1 Jika C adalah sebuah kode yang unique decodable yang terdiri atas N buah codewords, maka panjang keseluruhan codewordsnya akan memenuhi ketidaksamaan: N = banyaknya codewords lj = panjang codeword ke-j (dalam bit) ni = banyaknya codeword yang memiliki panjang bit i , b = base (dalam hal ini = 2) M = panjang maksimum codeword (M buah bit)
Ketidaksamaan Kraft-McMillan Teorema 2 Untuk setiap himpunan codewords yang panjangnya memenuhi ketidaksamaan Kraft-McMillan akan selalu dapat dibentuk prefix-free code dengan panjang codewords yang memenuhi Kraft-McMillan tersebut.
Ketidaksamaan Kraft-McMillan Kesimpulan: Setiap kode yang tidak memenuhi ketidaksamaan Kraft- McMillan, pasti bukan unique decodable code. Setiap unique decodable code, pasti memenuhi ketidaksamaan Kraft-McMillan Bisa prefix-free code, atau Bukan prefix-free code Setiap kode yang memenuhi ketidaksamaan Kraft-McMillan, belum tentu unique-decodable
Ketidaksamaan Kraft-McMillan Dengan kata lain, setiap prefix-free code pasti memenuhi ketidaksamaan Kraft- McMillan, dan Untuk setiap komposisi panjang codeword pada kode yang memenuhi ketidaksamaan Kraft-McMillan, pasti dapat dibentuk prefix-free code
Contoh Soal Diketahui Kode A memiliki codewords sbb: {01, 10, 101, 100, 110, 1001} Cek apakah kode berikut unique decodable? Apakah dapat dibentuk prefix-free code dari komposisi panjang kode berikut? Jika ya, buat 1 contoh prefix free code yang dapat dihasilkan
Solusi {01, 10, 101, 100, 110, 1001) Pengujian ketidaksamaan Kraft McMillan adalah sbb: π 1 =0, π 2 =2, π 3 =3, π 4 =1 Maka, ketidaksamaan Kraft-McMillan: 0 2 + 2 4 + 3 8 + 1 16 = 0+8+6+1 16 = 15 16 β€1 Memenuhi ketidaksamaan Kraft-McMillan Artinya, dengan menggunakan komposisi panjang kode di atas () dapat dibentuk prefix-free code. Contoh prefix-free code yang dapat dibentuk dari komposisi panjang kode di atas, yaitu: {00, 01, 100, 101, 110, 1110} {00, 01, 100, 101, 111, 1100}
Latihan Diketahui kode berikut. Kode A = {10, 11, 001, 000, 1001, 0110} Kode B = {10, 001, 000, 1001, 0110} Kode C = {0, 10, 110, 111, 1001} 1. Cek masing-masing kode di atas, apakah termasuk unique decodeable dan instantaneous code? 2. Apakah masing-masing kode tersebut bisa membentuk prefix- free code dengan komposisi panjang codeword yang sama? Jika ya, buat prefix free code nya!