Perancangan Antarmuka Implementasi Algoritma Shannon-Fano .1 Kompresi algoritma Shannon-Fano

51

3.3 Perancangan Antarmuka

Antarmuka merupakan bentuk tampilan grafis yang berhubungan langsung dengan pengguna user. Perancangan antarmuka terdiri dari perancangan struktur menu, dan grafis antarmuka. Berikut ini merupakan tahapan perancangan antarmuka aplikasi kompresi. 3.3.1 Struktur menu Perancangan struktur menu dibuat dengan harapan agar pemakai dapat menggunakannya tanpa kesulitan, sehingga memudahkan pemakai dalam memilih menu dari aplikasi yang sedang berjalan. Untuk lebih jelas tentang bentuk rancangan menu dapat dilihat pada Gambar 3.21. Halaman Utama Kompresi Dekompresi Tentang Aplikasi Gambar 3.21 Struktur Menu Aplikasi Kompresi Antarmuka merupakan bentuk tampilan grafis yang berhubungan langsung dengan pengguna user. Perancangan antarmuka terdiri dari perancangan struktur menu, dan grafis antarmuka. 3.3.2 Perancangan grafis antarmuka Rancangan Halaman Utama pada Aplikasi Kompresi dapat dilihat pada Gambar 3.22. Universitas Sumatera Utara 52 Gambar 3.22 Rancangan Halaman Utama Rancangan halaman Kompresi pada Aplikasi Kompresi dapat dilihat pada Gambar 3.23. Gambar 3.23 Rancangan Halaman Kompresi Universitas Sumatera Utara 53 Rancangan halaman Dekompresi pada Aplikasi Kompresi dapat dilihat pada Gambar 3.24. Gambar 3.24 Rancangan Halaman Dekompresi Rancangan halaman Tentang Aplikasi pada Aplikasi Kompresi dapat dilihat pada Gambar 3.25. Gambar 3.25 Rancangan Halaman Tentang Aplikasi Universitas Sumatera Utara BAB 4 IMPLEMENTASI DAN PENGUJIAN Implementasi dan pengujian sistem akan dijelaskan pada bab ini. Implementasi sistem harus sesuai dengan analisis dan perancangan sistem. Penjelasan tentang implementasi sistem dilakukan untuk mengetahui hasil dari aplikasi yang dirancang, dan pengujian sistem dilakukan untuk membuktikan kebenaran proses kompresi dan dekompresi yang berjalan pada sistem. 4.1 Implementasi Algoritma Shannon-Fano 4.1.1 Kompresi algoritma Shannon-Fano Misalkan kata yang akan dimampatkan adalah “ilkom”. Maka dilakukan pendataan karakter dari “ilkom” yang dijabarkan pada Tabel 4.1. Tabel 4.1 Pendataan Karakter Shannon-Fano Karakter Frekuensi i 1 l 1 k 1 o 1 m 1 Jumlah karakter 5 Dilakukan proses pengurutan dari frekuensi pada Tabel 4.1 secara menaik yang dijabarkan pada Tabel 4.2. Universitas Sumatera Utara 55 Tabel 4.2 Pengurutan Frekuensi Shannon-Fano Karakter Frekuensi i 1 l 1 k 1 o 1 m 1 Dilakukan pembagian dari frekuensi pada Tabel 4.2 Dengan bobot yang setara pada kedua bagiannya, dan dapat diperoleh dengan rumus: ���� − ���� frekuensi = Jumla h karakter 2 ..................................................... 7 ���� − ���� ��������� = 5 2 = 2.5 Bobot frekuensi bagian pertama harus lebih kecil sama dengan rata-rata frekuensi, dan bobot frekuensi bagian kedua harus lebih besar sama dengan rata-rata frekuensi. Tabel 4.3 Pembagian Bobot Frekuensi I Karakter Frekuensi Bobot Frekuensi Label Biner i 1 2 1 l 1 1 k 1 3 o 1 m 1 Pada Tabel 4.3 terdapat dua bagian karakter, dimana bagian_atasi,l mempunyai bobot 2, dan bagian_bawahk,o,m mempunyai bobot 3. Pada bagian_atasi,l, diulang pembagian karakter sesuai dengan Persamaan 7, dan dijabarkan pada Tabel 4.4. Tabel 4.4 Pembagian Bobot Frekuensi II Karakter Frekuensi Bobot Frekuensi Label Biner i 1 1 11 l 1 1 10 Universitas Sumatera Utara 56 Pada Tabel 4.4 bagian_atasi dan bagian_bawahl adalah sama dengan 1, maka proses pembagian dilanjutkan ke bagian_bawahk,o,m sesuai dengan Persamaan 7, dan dijabarkan pada Tabel 4.5. Tabel 4.5 Pembagian Bobot Frekuensi III Karakter Frekuensi Bobot Frekuensi Label Biner k 1 1 01 o 1 2 00 m 1 00 Pada Tabel 4.5 bobot bagian_atask adalah sama dengan 1, maka proses pembagian dilanjutkan ke bagian_bawaho,m sesuai dengan Persamaan 7, dan dijabarkan pada Tabel 4.6. Tabel 4.6 Pembagian Bobot Frekuensi IV Karakter Frekuensi Bobot Frekuensi Label Biner o 1 1 001 m 1 1 000 Pada Tabel 4.6 bobot bagian_ataso dan bagian_bawahm adalah sama dengan 1, dan seluruh karakter telah diproses, maka pembagian frekuensi dihentikan dan dilanjutkan dengan proses pendataan Shannon’s Code dalam Codebook Shannon- Fano yang dijabarkan pada Tabel 4.7. Tabel 4.7 Codebook Shannon-Fano Karakter Shannon’s Code i 11 l 10 k 01 o 001 m 000 Berdasarkan Shannon’s Code yang telah didapatkan, maka label biner dari setiap karakter disusun persis posisinya seperti pada kata asli dan diperoleh bit 111001001000. Kemudian bit tersebut diubah menjadi karakter ASCII sehingga menjadi 11100100 sebagai ä, dan bit 1000 ditambahkan beberapa biner 0 di depannya agar menjadi 8 bit sehingga menjadi 00001000 sebagai . Universitas Sumatera Utara 57 Untuk pembeda antara biner yang asli dan biner yang mendapatkan penambahan bit, diberikan satu bilangan desimal sebelum karakter terakhir yang merupakan banyaknya bit asli pada karakter terakhir. Dalam contoh ini, bilangan desimal yang diberikan adalah 4. Maka kata “ilkom” direpresentasikan sebagai ä4 . 4.1.2 Dekompresi algoritma Shannon-Fano Pada proses dekompresi, dibutuhkan Codebook Shannon-Fano seperti pada Tabel 4.7 untuk pengembalian karakter ASCII asli dari data yang akan diproses. Berdasarkan contoh kata “ilkom” yang telah dimampatkan menjadi “ä4 ”, maka akan didapatkan biner dari karakter ASCII pertama, yaitu “ä” sebagai 11100100; ditemukan bilangan biner 4 yang menandakan banyaknya bit pada karakter yang terakhir, yaitu sebagai 1000. Maka biner yang akan didekompresi adalah 111001001000. Dicocokkan setiap bit yang ada dengan Codebook Shannon-Fano pada tabel 4.7 di atas. Dari bit pertama dan bit kedua yaitu 11, didapatkan karakter yang direpresentasikannya adalah “i”; dari bit ketiga dan bit keempat yaitu 10, didapatkan karakter yang direpresentasikannya adalah “l”; dari bit kelima dan bit keenam yaitu 01, didapatkan karakter yang direpresentasikannya adalah “k”; dari bit ketujuh sampai bit kesembilan yaitu 001, didapatkan karakter yang direpresentasikannya adalah “o”; dan dari bit kesepuluh sampai bit keduabelas atau terakhir yaitu 000, didapatkan karakter yang direpresentasikannya adalah “m”. Maka kata yang direpresentasikan oleh biner 111001001000 adalah “ilkom”. 4.1.3 Kompleksitas waktu algoritma Shannon-Fano Tabel 4.8 menunjukkan algoritma Shannon-Fano pada proses kompresi dalam pseudocode beserta waktu eksekusinya Tn untuk setiap baris. Universitas Sumatera Utara 58 Tabel 4.8 Kompleksitas Waktu Kompresi Algoritma Shannon-Fano Baris Pseudocode Tn 1 splitn_char[] my_char, int my_index 2 { 3 ifmy_index 1 n 4 { 5 array my_char[int s0_index, int s1_index, int s0_count, int s1_count]; 6 String g_char, g_code; 7 s0_char = my_char.length; n 8 s1_char = my_char.length; n 9 int i_s0_char = 0; 10 int i_s1_char = 0; 11 12 s0_index = 0; n 13 s1_index = my_index-1; n 14 15 s0_count = my_char[s0_index].g_count; n 16 s1_count = my_char[s1_index].g_count; n 17 18 s0_char = s_addmy_char[s0_index],s0_char,i_s0_char; i_s0_char++; n 19 s1_char = s_addmy_char[s1_index],s1_char,i_s1_char; i_s1_char++; n 20 21 karakter_s0 = my_char[s0_index].g_char; n 22 kode_s0 = my_char[s0_index].g_code n 23 24 karakter_s1 = my_char[s1_index].g_char; n 25 kode_s1 = my_char[s1_index].g_code n 26 27 my_char[s0_index].add_code1; n 28 outputkarakter_s0+ , +kode_s0; 29 my_char[s1_index].add_code0; n 30 outputkarakter_s1+ , +kode_s1; 31 32 forint i=0; imy_index; i++ 2n+n 33 { 34 ifs1_index-s0_index == 1 || s1_index- s0_index == -1 n Baris Pseudocode Tn Universitas Sumatera Utara 59 35 { 36 output s0_count : +s0_count +, s1_count : +s1_count; 37 ifs0_count s1_count n 38 { 39 s0_index++; 40 s0_count += my_char[s0_index].g_count; n 41 my_char[s0_index].add_code1; n 42 s0_char = s_addmy_char[s0_index], s0_char,i_s0_char; i_s0_char++; n 43 outputkarakter_s0+ , +kode_s0; 44 } 45 else n 46 { 47 s1_index--; 48 s1_count += my_char[s1_index].g_count; n 49 my_char[s1_index].add_code0; n 50 s1_char = s_addmy_char[s1_index], s1_char,i_s1_char; i_s1_char++; n 51 outputkarakter_s1+ , +kode_s1; 52 } 53 } 54 } 55 56 splits0_char, i_s0_char; n 57 splits1_char, i_s1_char; n 58 } 59 } Berdasarkan Tabel 4.8 maka total waktu eksekusi dari proses kompresi algoritma Shannon-Fano adalah: Tn = 26 × n + 2n + n = 29n Big-O = n. Tabel di bawah ini menunjukkan algoritma Shannon-Fano pada proses dekompresi dalam pseudocode beserta waktu eksekusinya Tn untuk setiap baris. Universitas Sumatera Utara 60 Tabel 4.9 Kompleksitas Waktu Dekompresi Algoritma Shannon-Fano Baris Pseudocode Tn 1 decode 2 { 3 String bin, biner; 4 array tree[String g_char, String g_code]; 5 6 int binLength = bin.length; 7 n 8 char[] binCharAt = bin.toCharArray; n 9 10 Stringbuffer bf; 11 biner = ; 12 13 for int i=0; ibinLength; i++ 2n+n 14 { 15 biner += binCharAt[i]; n 16 17 for int j=0; jtree.length; j++ 2nn-1 18 { 19 output biner+ , +tree[j].g_code; 20 if biner.equalstree[j].g_code n-2 n-1 21 { 22 output karakter : + tree[j].g_char; 23 bf.appendtree[j].g_char; n-2 n-1 24 output string : +bf; 25 biner = ; 26 } 27 } 28 } 29 } Berdasarkan Tabel 4.9 maka total waktu eksekusi dari proses dekompresi algoritma Shannon-Fano adalah: Tn = 3 × n + 2n + n + 2nn-1 + 2 × n-2n-1 = 4n 2 – 2n + 4 Big-O = n 2 . Universitas Sumatera Utara 61

4.2 Implementasi Algoritma Arithmetic Coding