• Tidak ada hasil yang ditemukan

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

Dokumen terkait