BAB 3 ANALISIS DAN PERANCANGAN SISTEM
3.1.3. Analisis Proses
Terdapat 2 proses utama dalam penelitian ini, yaitu proses kompresi dan proses dekompresi. Kedua proses tersebut dilakukan dengan menggunakan algoritma FLBE dan algoritma Sequitur. Pada proses kompresi, sistem pertama-tama akan membaca
string yang terdapat pada file teks dan kemudian melaksanakan proses dari
masing-masing algoritma. Misalkan ada file teks berisi string “KUTILANG KUTIL KAKAKKU”. Untuk mengetahui ukuran string tersebut, dapat dilihat pada Tabel 3.1.
Tabel 3.1. Ukuran String Sebelum Dikompresi
Character Frequency ASCII
Decimal ASCII Binary Bit Bit x Frequency K 6 75 01001011 8 48
U 3 85 01010101 8 24 T 2 84 01010100 8 16 I 2 73 01001001 8 16 L 2 76 01001100 8 16 A 3 65 01000001 8 24 N 1 78 01001110 8 8 G 1 71 01000111 8 8 sp 2 32 00100000 8 16
Jumlah Bit x Frequency 176 bit
1. Proses Kompresi
Setelah file teks berhasil dibaca menjadi string, maka tahap selanjutnya adalah proses kompresi menggunakan algoritma FLBE dan algoritma Sequitur.
a. Proses algoritma FLBE
Pada algoritma FLBE, string yang telah dibaca kemudian diambil karakter yang terdapat pada string tersebut dan disusun ke dalam tabel sesuai dengan urutan kemunculan karakter pada string. Perhatikan gambar 3.2.
Tabel 3.2. Total Bit Setelah Dikompresi Menggunakan Algoritma FLBE
Character Frequency FLBE
Code
Bit Bit x
Frequency
K 6 0000 4 24
17 T 2 0010 4 8 I 2 0011 4 8 L 2 0100 4 8 A 3 0101 4 12 N 1 0110 4 4 G 1 0111 4 4 sp 2 1000 4 8
Jumlah Bit x Frequency 88 bit
Pada tabel 3.2, setelah masing-masing karakakter tersusun, pada masing-masing karakter kemudian diberi nilai biner mulai dari 0 hingga biner ke 8 (disesuaikan dengan posisi karakter terakhir). Karakter terakhir diberi nilai biner 1000 (biner ke 7) yang berukuran 4 bit sehingga biner dengan nilai bit kurang dari 4, ditambahkan angka 0 di depannya hingga mencapai 4 bit. Penambahan ini disebut juga padding.
Tahap selanjutnya adalah menyusun kembali kode-kode yang telah dibuat dalam tabel sesuai dengan posisi karakter pada string. String yang telah dibaca adalah KUTILANG KUTIL KAKAKKU,
K U T I L A N G Sp 0000 0001 0010 0011 0100 0101 0110 0111 1000 K U T I L Sp 0000 0001 0010 0011 0100 1000 K A K A K K U 0000 0101 0000 0101 0000 0000 0001
sehingga diperoleh String Bit sebagai berikut:
00000001001000110100010101100111100000000001001000110100100000000 10100000101000000000001
Sebelum hasil kompresi dituliskan ke dalam file, terlebih dahulu dilakukan penambahan bit-bit padding dan flagging. Penambahan bit-bit padding dan
flagging dilakukan dengan mengacu pada sisa jumlah bit dibagi 8. Jumlah bit
hasil kompresi adalah 88 di mana jika bilangan tersebut dibagi 8, maka akan menghasilkan sisa bagi sebanyak nol. Maka diperoleh padding 00000000.
00000001001000110100010101100111100000000001001000110100100000000 1010000010100000000000100000000
Dengan penambahan padding sebanyak 8 bit, maka diperoleh flagging 00001000. Maka diperoleh String Bit baru sebagai berikut.
00000001001000110100010101100111100000000001001000110100100000000 101000001010000000000010000000000001000
Sehingga total bit yang diperoleh adalah 104 bit.
b. Proses algoritma Sequitur
Pada algoritma Sequitur, string yang telah dibaca tersebut diproses untuk mendapatkan digram yang nantinya akan diubah menjadi simbol nonterminal. Pertama-tama semua karakter string akan diubah strukturnya menjadi huruf kecil. Kemudian memeriksa dari pasangan karakter pertama apakah pasangan tersebut muncul lebih dari satu kali. Jika pasangan tersebut muncul lebih dari satu kali, maka pasangan tersebut diubah menjadi simbol nonterminal.
String : KUTILANG KUTIL KAKAKKU
String to lowercase : kutilang kutil kakakku
Dari kata “kutilang kutil kakakku” pasangan karakter pertama adalah “ku”, kemudian dilakukan pemeriksaan apakah jumlah pasangan “ku” muncul lebih dari satu kali. Dalam string “kutilang kutil kakakku” pasangan “ku” muncul
19
sebanyak tiga kali, maka “ku” diubah menjadi “A” di mana “A” merupakan simbol nonterminal.
New string : Atilang Atil kakakA
Kemudian dilakukan lagi pemeriksaan apakah masih terdapat pasangan karakter yang muncul lebih dari satu kali. Pasangan yang ditemukan muncul lebih dari satu kali adalah “At”, sehingga “At” diubah menjadi simbol nonterminal “B”.
New String : Bilang Bil kakakA
Proses secara keseluruhan dapat dilihat pada tabel 3.3.
Tabel 3.3. Proses pada Algoritma Sequitur
Process String Digram nonterminal Rule New string delete
rule
1 kutilang kutil
kakakku
Ku A A = ku Atilang Atil
kakakA
2 Atilang Atil kakakA At A A = ku,
B = At
Bilang Bil kakakA
3 Bilang Bil kakakA Bi A, B A = ku,
B = At, C = Bi
Clang Cl kakakA
C
4 Blang Bl kakakA Bl A, B A = ku,
B = Ati, C = Bl
Cang C kakakA
C
5 Bang B kakakA Ka A, B A = ku,
B = Atil C = ka
Bang B CCkA
6 Bang B CCkA Null A, B, C A = ku,
B = Atil, C = ka
Pada tabel 3.3, pada proses yang ketiga terdapat simbol nonterminal C yang dihapus. Sesuai dengan production rule yang menyebutkan bahwa setiap
rule harus digunakan lebih dari satu kali, maka simbol B yang memiliki nilai “At”
yang hanya digunakan satu kali harus diabaikan atau ditiadakan. Sesuai dengan contoh yang terdapat pada gambar 2.2 pada bab 2, maka simbol B dibangkitkan kembali dan diberikan nilai simbol C, sehingga nilai simbol B adalah “Ati”. Begitu pula pada proses yang ke empat nilai simbol C diberikan kepada B sehingga B memiliki nilai “Atil”. Sehingga memperoleh string baru “Bang B CCkA”.
Total String Bit yang diperoleh dari proses kompresi dapat dilihat pada tabel 3.4.
Tabel 3.4. Total Bit Setelah Dikompersi Menggunakan Algoritma Sequitur
Character Frequency ASCII
Decimal ASCII Binary Bit Bit x Frequency B 2 66 01000010 8 16 a 1 97 01100001 8 8 n 1 110 01101110 8 8 g 1 103 01100111 8 8 Sp 2 32 00100000 8 16 c 2 67 01000011 8 16 k 1 107 01101011 8 8 A 1 65 01000001 8 8
21
Dari hasil kompresi tersebut dapat diukur kinerja kedua algoritma sebagai berikut: a. Ratio of Compression (RC) = = 1,69 = = 2 b. Compression Ratio (CR) = × 100% = 59,09% × 100% = 50% c. Space Savings (SS) = 100%−59,09% = 100%−50% = 50% 2. Proses Dekompresi
Setelah file dikompresi, maka akan terbentuk sebuah file baru yang nantinya akan digunakan untuk melakukan proses dekompresi.
a. Proses dekompresi dengan algoritma FLBE
File baru yang dibuat dalam algoritma FLBE berisi informasi tentang tabel
karakter dan tabel kode FLBE yang digunakan saat melakukan kompresi. Proses dekompresi dilakukan dengan terlebih dahulu menentukan panjang String Bit yang harus dibaca dengan menghitung padding dan flagging. Pada tabel 3.2
String Bit yang dihasilkan adalah
00000001001000110100010101100111100000000001001000110100100000000 101000001010000000000010000000000001000
Flagging pada String Bit tersebut adalah 00001000 (8 bit terakhir pada String Bit) yang bila dikonfersi ke dalam decimal akan bernilai 8, sehingga padding 00000000. Sehingga panjang String Bit yang harus dibaca adalah
panjang String Bit (104 bit) terkompresi dikurang total jumlah panjang padding dan flagging (8+8). Maka diperoleh nilai panjang String Bit yang harus dibaca adalah 88 bit. Pembacaan String Bit dilakukan dari indeks terkecil sampai indeks terakhir dengan terus menambahkan nilai pada indeks sebelumnya yang tidak terdapat dalam tabel. Indeks ke 0 adalah 0, tidak terdapat di dalam tabel, indeks ke 1 adalah 00, tidak terdapat di dalam tabel, indeks ke 2 adalah 000, juga tidak terdapat di dalam tabel. Indeks ke 3 adalah 0000, terdapat di dalam tabel bahwa 0000 bernilai K, maka K dituliskan ke dalam file, begitu seterusnya sehingga
String hasil dekompresi menjadi “KUTILANG KUTIL KAKAKKU”.
b. Proses dekompresi dengan algoritma Sequitur
Pada Sequitur, file baru yang dibuat berisi informasi tentang rule (digram dan nilai nonterminal) yang digunakan saat proses kompresi. Rule yang diperoleh dari String Bang B CCkA adalah A = ku, B = Atil, C = ka, maka String hasil kompresi dibaca dari indeks ke 0 sampai indeks terakhir satu persatu karakter. Indeks ke 0 adalah B, B terdapat dalam rule sehingga diubah menjadi “Atil”, maka diperoleh string “Atilang Atil CCkA”. Setelah dilakukan penukaran dilakukan pemeriksaan pada string apakah masih memiliki simbol nonterminal di dalamnya. Jika masih terdapat simbol nonterminal, maka pembacaan indeks diulang dari awal yaitu indeks ke 0. Indeks ke 0 adalah A, A terdapat dalam rule maka A diubah menjadi “ku”, begitu seterusnya sehingga String hasil dekompresi menjadi “kutilang kutil kakakku”.