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