Implementasi dan Analisis Algoritma Kompresi Ternary Comma Code Dalam Kompresi File Text Pada Platform Android

(1)

LISTING PROGRAM

1. Ternarycommacodes.java

import android.annotation.TargetApi; import android.os.Build;

import android.os.Environment; import android.util.Log;

import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File;

import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.*;

class TernaryCommaCodes { public static int[] fr; public static String cs; public static String[] tccc;

public static String getCharSet(String st) { StringBuffer s = new StringBuffer(); int n = st.length();

for (int i = 0; i < n; i++) {

String c = Character.toString(st.charAt(i)); if (s.indexOf(c) == -1)


(2)

}

return s.toString(); }

public static int countChar(String s, char ch) { String c = Character.toString(ch);

return (s.length() - s.replace(c, "").length()) / c.length(); }

public static int[] countFreq(String st) { String charset = getCharSet(st); int n = charset.length();

int[] freq = new int[n]; for (int i = 0; i < n; i++)

freq[i] = countChar(st, charset.charAt(i)); return freq;

}

public static void InsertionSort(int[] freq, String charset) { fr = freq;

cs = charset;

int n = charset.length();

StringBuffer sb = new StringBuffer(charset); for (int i = 1; i < n; i++)

for (int j = 0; j < i; j++) if (fr[i] > fr[j]){ int temp = fr[i]; fr[i] = fr[j]; fr[j] = temp;


(3)

cs = sb.toString(); }

public static String string2stb(String st, String c, String[] s) { StringBuffer stb = new StringBuffer();

for (int i = 0; i < st.length(); i++) {

String z = Character.toString(st.charAt(i)); int k = c.indexOf(z);

stb.append(s[k]); }

return stb.toString(); }

private static int find(String s, char c, int i) { for (int pos = i; pos < s.length(); pos++) if (s.charAt(pos) == c)

return pos; return -1; }

public static String encode(String stb) { StringBuffer code = new StringBuffer(); int i = 0;

int index = 0;

while (i < stb.length()) { index = find(stb, 'c', i);

String x = stb.substring(i, index); char y = (char)(tcc2dec(x)); code.append(y);

i = index + 1; }


(4)

}

public static String decode(String code) { StringBuffer sb = new StringBuffer(); int t = code.length();

for (int i = 0; i < t; i++) { char x = code.charAt(i);

StringBuffer y = new StringBuffer(dec2tcc((int)x)); sb.append(y);

}

return sb.toString(); }

public static String decompress(String stb, String c, String[] s) { StringBuffer st = new StringBuffer();

StringBuffer bit = new StringBuffer(); for (int i = 0; i < stb.length(); i++) { bit.append(stb.charAt(i));

if (Arrays.asList(s).contains(bit.toString())) { int x = Arrays.asList(s).indexOf(bit.toString()); st.append(c.charAt(x));

bit = new StringBuffer(); }

}

return st.toString(); }

public static String dec2tcc(int dec) { if (dec == 0)


(5)

return "2c";

StringBuffer tcc = new StringBuffer();

int r = dec % 3;

tcc = new StringBuffer(Integer.toString(r) + tcc); dec = dec / 3;

while (dec != 0){ r = dec % 3;

tcc = new StringBuffer(Integer.toString(r) + tcc); dec = dec / 3;

}

return tcc.toString() + "c"; }

public static int tcc2dec(String tcc) { StringBuffer t = new StringBuffer(tcc); t.reverse();

int n = 1; int dec = 0;

for (int i = 0; i < t.length(); i++) { if (t.charAt(i) == 'c')

continue;

dec = dec + Character.getNumericValue(t.charAt(i)) * n; n = n * 3;

}

return dec; }

public static void TCC(String st) { int[] freq = countFreq(st); String charset = getCharSet(st); int t = charset.length();


(6)

freq = fr; charset = cs;

tccc = new String[t]; for (int i = 0; i < t; i++) tccc[i] = dec2tcc(i); }

public static String proses_dekompresi (String AlamatFileKompresi, String NamaFileDekompresi){

long startTime = System.currentTimeMillis();

String h = readFromFile(AlamatFileKompresi); String dekom = dekompresi(h);

tulis(dekom, NamaFileDekompresi);

long endTime = System.currentTimeMillis(); long totalTime = endTime - startTime;

return "Decompression. Time = "+totalTime + " ms"; }

public static void tulis(String tulis, String nama_file){ try {

String content = tulis;

File root = new File(Environment.getExternalStorageDirectory(), "dekompresi");


(7)

File file = new File(root, nama_file);

// if file doesnt exists, then create it if (!file.exists()) {

file.createNewFile(); }

FileWriter fw = new FileWriter(file.getAbsoluteFile()); BufferedWriter bw = new BufferedWriter(fw);

bw.write(content); bw.close();

System.out.println("Done");

} catch (IOException e) { e.printStackTrace(); }

}

public static String bacaFHD(){ String baca = "";

String namafile = "header.txt";

File root = new File(Environment.getExternalStorageDirectory(), "header"); if (!root.exists()) {

root.mkdirs(); }

File file = new File(root, namafile); FileInputStream fis = null;

try {

fis = new FileInputStream(file);


(8)

while ((content = fis.read()) != -1) { // convert to char and display it

baca += String.valueOf((char) content); }

} catch (IOException e) { e.printStackTrace(); } finally {

try {

if (fis != null) fis.close();

} catch (IOException ex) { ex.printStackTrace(); }

}

return baca; }

public static String dekompresi(String stb){ String sc = bacaFHD();

String namafile = "header2.txt";

File root = new File(Environment.getExternalStorageDirectory(), "header"); if (!root.exists()) {

root.mkdirs(); }

File file = new File(root, namafile); String[] tccc ={};


(9)

tccc = (String[]) oos.readObject(); ak += tccc;

oos.close();

}

catch(Exception e){}

String dc = decode(stb);

System.out.println("========= DECODE STRING=============="); System.out.println(dc);

System.out.println("=======================\n");

String ds = decompress(dc, sc, tccc);

System.out.println("======================="); System.out.println(sc);

System.out.println("=======================\n");

System.out.println("======================="); System.out.println(Arrays.toString(tccc));

System.out.println("=======================\n");

System.out.println("======================="); System.out.println(ds);

System.out.println("=======================\n");

return ds; }

public static String BacaPlain(String namafile){ String baca = "";

File root = new File(Environment.getExternalStorageDirectory(), "fileasal"); if (!root.exists()) {


(10)

root.mkdirs(); }

File file = new File(namafile); FileInputStream fis = null;

try {

fis = new FileInputStream(file);

System.out.println("Total file size to read (in bytes) : " + fis.available());

int content;

while ((content = fis.read()) != -1) { // convert to char and display it

baca += String.valueOf((char) content); }

} catch (IOException e) { e.printStackTrace(); } finally {

try {

if (fis != null) fis.close();

} catch (IOException ex) { ex.printStackTrace(); }

}

return baca; }


(11)

String stb = string2stb(st, cs, tccc); System.out.print("======"+stb); Log.d("ooo",st);

Log.d("ooo",stb); kompresi = stb; return kompresi;

}

public String prosesTCC(String namafile, String nama_file_kompresi) { String bits = "";

String str = BacaPlain(namafile);

// String nama_file_kompresi ="FILE_KOMPRESI.tccc"; String hasil = kompresi(str);

String code = encode(hasil); buatFK(nama_file_kompresi, code); buatFH( "header.txt", "" );

buatFH2( "header2.txt", "" ); String stb = string2stb(str, cs, tccc);

int uncompressed_bits = str.length() * 8; int compressed_bits = stb.length();

double CR = (double)(((compressed_bits * 1.0) / uncompressed_bits) * 100 )/100;

double SS = (double)((1.0 - 1.0/CR) * 100)*(-1);

double RC = (double) uncompressed_bits / compressed_bits;

bits = " ================= \n"+

"Uncompressed_bits = " + uncompressed_bits + "\n" +" ================= \n"+


(12)

+" ================= \n"

+"Ratio of Compression = " + RC +"\n" +" ================= \n"

+"Compression Ratio = " + CR + "%"+"\n" +" ================= \n"

+"Space Savings = " + SS + " %"+"\n" +" ================= \n"; return bits ;

}

public static void buatFH( String sFileName, String sBody){ Environment.getExternalStorageState();

File root = new File(Environment.getExternalStorageDirectory(), "header"); if (!root.exists()) {

root.mkdirs(); }

String content = cs;

File file = new File(root,sFileName); // get the content in bytes

byte[] contentInBytes = content.getBytes(); try {

FileOutputStream fOut = new FileOutputStream(file); if (!file.exists()) {

file.createNewFile(); }

fOut.write(contentInBytes); fOut.close();


(13)

e.printStackTrace(); }

}

public static void buatFH2( String sFileName, String sBody){ Environment.getExternalStorageState();

File root = new File(Environment.getExternalStorageDirectory(), "header"); if (!root.exists()) {

root.mkdirs(); }

String content = cs;

File file = new File(root,sFileName); // get the content in bytes

byte[] contentInBytes = content.getBytes(); try {

FileOutputStream fOut = new FileOutputStream(file); if (!file.exists()) {

file.createNewFile(); }

ObjectOutputStream oos = new ObjectOutputStream(fOut); oos.writeObject(tccc);

oos.close(); }

catch (Exception e) {

// TODO Auto-generated catch block e.printStackTrace();

} }


(14)

try {

File root = new File(Environment.getExternalStorageDirectory(), "kompresi");

if (!root.exists()) { root.mkdirs(); }

File gpxfile = new File(root,nama_file_kompresi); FileWriter writer = new FileWriter(gpxfile); writer.append(hasil);

writer.flush(); writer.close();

} catch (IOException e) { e.printStackTrace(); }

}

@TargetApi(Build.VERSION_CODES.KITKAT) private static String readFromFile(String fileName) { String ret = "";

try (BufferedReader br = new BufferedReader(new FileReader(fileName))) {

String sCurrentLine;

while ((sCurrentLine = br.readLine()) != null) { ret += sCurrentLine;

}

} catch (IOException e) { e.printStackTrace();


(15)

CURRICULUM VITAE

PERSONAL DATA

EDUCATION

Bachelor of Computer Science

2014-2016 : Universitas Sumatera Utara, Medan

Diploma of Informatics Engineering

2011-2014 : Universitas Sumatera Utara, Medan

Higher Secondary Education

2008-2011 : SMA Negeri 2 Binjai

Secondary Education

2005-2008 : SMP Ahmad Yani Binjai

Primary Education

1999-2005 : SD Ahmad Yani Binjai

Full Name : Siti Soendari Utami

Nick Name : Tami

Place/ Date of Birth : Binjai/ 27 Desember 1992

Sex : Perempuan

Religion : Islam

Address : Perm. Cekapung Indah No. 38 Binjai


(16)

DAFTAR PUSTAKA

Antonopoulos, C.P. & Voros, N.S. 2015. Resource Efficient Data Compression Algorithms For Demanding, WSN Based Biomedical, Applications. Journal Of Biomedical Informatics. Vol: 59(1): 1-14.

Cormen, T. H, et al. 2009. Introduction To Algorithms 3rd Ed. The MIT Press: London.

EMS, Tim. 2015. Pemrograman Android Dalam Sehari. PT Elex Media Komputindo: Jakarta.

Erdiansyah, U. 2014. Perbandingan Algoritma Elias Delta Code Dengan Levenstein Untuk Kompresi File Teks. Skripsi. Universitas Sumatera Utara.

Hartono, T. B. 2007. Agoritma Dan Pemograman, Skripsi : Universitas Narotama Surabaya.

Levitin, A. 2011. Introduction to the Design and Analysis of Algorithm 3rd Edition. United States of America. Pearson Education,Inc.

Pramilo, C. 2008. Studi Perbandingan Algoritma Huffman Dan LZW (Lempel Ziv Welch) Pada Pemampatan File Teks. Skripsi. Unversitas Sumatera Utara. Putra, D. 2010. Pengolahan Citra Digital. Yogyakarta: Penerbit ANDI.

Purnomo, H. & Zacharias, T. 2005. Pengenalan Informatika Perspektif Teknik Dan Lingkungan. Yoyakarta: Andi.

Purwanto, E. B. 2008. Perancangan & Analisis Algoritma. Graha Ilmu : Yogyakarta. Salomon, D. 2007. Variable-Length Codes for Data Compression. Springer. United

States of America.

Salomon, D. & Motta, G. 2010. Handbook of Data Compression 5thEdition. Springer. United States of America.

Sayood, K. 2005. Introduction to Data Compression.3rd edition. Morgan Kaufmann: San Fransisco.

Siagian, P. 2015. Analisis Perbandingan Kinerja Algoritma Fixed Length Binary Encoding (FLBE) Dengan Algoritma Sequitur Dalam Kompresi File Text.


(17)

Solihin, M. 2013. Perancangan Sistem Pengamanan Dan Kompresi Data Teks Dengan Fibonacci Encoding dan Algoritma Shannon-Fano Serta Algoritma Deflate. Skripsi. Universitas Sumatera Utara.


(18)

BAB 3

ANALISIS DAN PERANCANGAN SISTEM

Pada bab ini penulis memaparkan analisis permasalahan yang diangkat dan disajikan dengan diagram dan flowchart serta dipaparkan juga perancangan sistem yang akan dibangun, baik yang berupa perangkat keras ataupun perangkat lunak dan cara melakukan pengujian.

3.1. Analisis Sistem

Analisis sistem merupakan proses mengidentifikasi dan mendefinisikan masalah pada sebuah sistem untuk mengetahui kebutuhan apa saja yang diperlukan sistem untuk berjalan sesuai dengan tujuannya. Dalam menganalisis sistem terdapat beberapa langkah yang harus dilakukan sebagai berikut :

3.1.1. Analisis Masalah

Tahap identifikasi masalah dilakukan untuk mengetahui apa yang menjadi alasan dibangunnya suatu sistem sehingga sistem tersebut dapat berjalan sesuai dengan tujuannya. Dalam penelitian ini yang akan dibahas adalah bagaimana cara kerja algoritma Ternary Comma Code dalam mengkompresi file teks dengan menggunakan analisis kompresi. File teks yang akan digunakan dalam penelitian ini adalah file *.txt. Identifikasi masalah pada penelitian ini adalah sebagai berikut :

1. Man

Manusia suka mengumpulkan data dalam jumlah besar.

2. Method

Menurut (Cormen, T. H, et al. 2009), ada banyak algoritma yang dikembangkan untuk mengkompresi data, namun belum ada satupun algoritma yang baik untuk mengkompresi berbagai tipe file. Dalam penelitian ini algoritma yang akan dibahas


(19)

3. Material

Kecenderungan mengumpulkan data mengakibatkan penggunaan memori yang boros. File teks yang cenderung memiliki redundancy membuat penggunaan memori kurang maksimal.

4. Machine

Terdapat banyak software untuk mengkompresi data, namun belum ada yang optimal dalam melakukan kompresi berbagai tipe data.

Identifikasi masalah pada sistem yang dirancang dapat digambarkan dalam Diagram Ishikawa seperti pada Gambar 3.1.

Gambar 3.1. Diagram Ishikawa Analisis Masalah

3.1.2. Analisis Kebutuhan Sistem

Untuk membangun sebuah sistem, perlu dilakukan sebuah tahap analisis kebutuhan sistem. Analisis kebutuhan sistem dapat dikelompokkan menjadi 2 bagian yaitu :

kebutuhan fungsional dan kebutuhan non-fungsional.

1. Kebutuhan fungsional adalah fungsi-fungsi yang harus dipenuhi pada aplikasi yang dirancang. Kebutuhan fungsional yang harus dipenuhi aplikasi yang dirancang adalah sebagai berikut :


(20)

b. Sistem harus mampu melakukan kompresi data menggunakan algoritma Ternary Comma Code secara sempurna.

c. Sistem harus mampu melakukan dekompresi dengan algoritma secara Ternary Comma Code sempurna.

d. Sistem harus mampu menghitung yaitu Ratio of Compression (RC),

Compression Ratio (CR), Space Savings (SS) dan waktu proses (ms) pada

proses kompresi.

e. Sistem harus mampu menghitung waktu proses pada saat dekompresi.

f. Sistem harus mampu menyimpan file dekompresi dalam ekstensi file yang berbeda dengan ekstensi file asli.

2. Kebutuhan non-fungsional adalah kebutuhan yang harus dipenuhi agar aplikasi yang dirancang mendapat umpan-balik yang baik dari pengguna aplikasi. Kebutuhan non-fungsional yang harus dipenuhi aplikasi yang dirancang adalah sebagai berikut :

a. Performa

Sistem harus mampu melaksanakan setiap tugas secara utuh dalam selang waktu yang tidak terlalu lama sesuai dengan ukuran data input yang diberikan. b. Informasi

Sistem harus mampu menyediakan informasi tentang data-data yang akan digunakan pada sistem.

c. Ekonomi

Sistem harus dapat bekerja dengan baik tanpa harus mengeluarkan biaya tambahan dalam penggunaan perangkat keras maupun perangkat lunak.

d. Kontrol

Sistem yang telah dibangun harus tetap dikontrol setelah selesai dirancang agar fungsi dan kinerja sistem tetap terjaga dan dapat memberikan hasil yang sesuai dengan keinginan pengguna.


(21)

f. Pelayanan

Sistem yang telah dirancang bisa dikembangkan ke tingkat yang lebih kompleks lagi bagi pihak-pihak yang ingin mengembangkan sistem tersebut.

3.1.3. Analisis Proses

Tujuan dari tahap analisis proses adalah mengetahui tahapan dan cara kerja dari sistem yang digunakan secara spesifik. Analisis proses dilakukan pada tahapan pemodelan sistem. Hal ini dilakukan guna mengetahui apa saja yang harus dilakukan oleh sistem sehingga dengan mudah melakukan pemrograman pada sistem yang akan dibangun. Dalam sistem ini terdapat dua proses utama yaitu proses kompresi dan dekompresi dengan menggunakan metode algoritma Ternary Comma Code, dan proses menghitung parameter pembanding Ratio of Compression (RC), Compression Ratio (CR), dan Space Savings (SS).

a. Analisis Proses Kompresi Text File menggunakan Algoritma Ternary Comma Code

Berikut ini merupakan contoh kompresi menggunakan Algoritma Ternary Comma Code

Ada sebuah text file yang berisi string : SITI SOENDARI UTAMI Penyelesaian :

Hitung frequency dan bit dari string sebelum dikompresi

Σ TCC = {0, 1, 2}

String = “SITI SOENDARI UTAMI”

|String| = 19


(22)

Tabel 3.1 Character Set

Tabel 3.2 String yang belum dikompresi dengan Ternary Comma Code Char Freq ASCII

Code

ASCII

Code(Binary)

Bit Bit x Freq

I 4 73 01001001 8 8 x 4

S 2 83 01010011 8 8 x 2

T 2 84 01010100 8 8 x 2

A 2 65 01000001 8 8 x 2

Sp 2 32 00100000 8 8 x 2

E 1 69 01000101 8 8 x 1

N 1 78 01001110 8 8 x 1

D 1 68 01000100 8 8 x 1

O 1 79 01001111 8 8 x 1

R 1 82 01010010 8 8 x 1

Char Freq I 4 S 2 T 2 A 2 Sp 2 E 1 N 1 D 1 O 1 R 1 U 1 M 1

Sortir Descending

(Dari besar ke kecil)


(23)

Setelah menghitung data sebelum dikompresi, dari tabel tadi dilakukan kompresi menggunakan Algoritma Ternary Comma Code, dengan mengkodekan karakter yang muncul berdasarkan urutan kemunculannya.

I diurutan pertama kemudian dikodekan dengan C S diurutan kedua kemudian dikodekan dengan 1c T diurutan ketiga kemudian dikodekan dengan 2c A diurutan keempat kemudian dikodekan dengan 10c Sp diurutan kelima kemudian dikodekan dengan 11c E diurutan keenam dikodekan dengan 12c

N diurutan ketujuh dikodekan dengan 20c D diurutan kedelapan dikodekan dengan 21c O diurutan kesembilan dikodekan dengan 22c R diurutan kesembilan dikodekan dengan 100c U diurutan kesembilan dikodekan dengan101c M diurutan kesembilan dikodekan dengan 102c

Kemudian jumlah bit dari karakter yang dikodekan dikalikan dengan frequency kemunculan dari karakter tersebut.

I yang dikodekan dengan C mempunyai 1 trit dan frequency kemunculan sebanyak 4 kali, maka trit x frequency = 4

S yang dikodekan dengan 1c mempunyai 2 trit dan frequency kemunculan sebanyak 2 kali, maka trit x frequency = 4

T yang dikodekan dengan 2c mempunyai 2 trit dan frequency kemunculan sebanyak 2 kali, maka trit x frequency = 4

A yang dikodekan dengan 10c mempunyai 3 trit dan frequency kemunculan sebanyak 2 kali, maka trit x frequency = 6


(24)

Sp yang dikodekan dengan 11c mempunyai 3 trit dan frequency kemunculan sebanyak 2 kali, maka trit x frequency = 6

E yang dikodekan dengan 12c mempunyai 3 trit dan frequency kemunculan sebanyak 1 kali, maka trit x frequency = 3

N yang dikodekan dengan 20c mempunyai 3 trit dan frequency kemunculan sebanyak 1 kali, maka trit x frequency =3

D yang dikodekan dengan 21c mempunyai trit dan frequency kemunculan sebanyak 1 kali, maka trit x frequency = 3

O yang dikodekan dengan 22c mempunyai 3 trit dan frequency kemunculan sebanyak 1 kali, maka trit x frequency = 3

R yang dikodekan dengan 100c mempunyai 4 trit dan frequency kemunculan sebanyak 1 kali, maka trit x frequency = 4

U yang dikodekan dengan 101c mempunyai 4 trit dan frequency kemunculan sebanyak 1 kali, maka trit x frequency = 4

M yang dikodekan dengan 102c mempunyai 4 trit dan frequency kemunculan sebanyak 1 kali, maka trit x frequency = 4

Kemudian setiap hasil perkalian dari trit dan frequency dijumlahkan,

I + S + T + A + Sp + E + N + D + O + R + U + M = 4 + 4 + 4 + 6 + 6 + 3 + 3 + 3 + 3 + 4 + 4 + 4 = 48


(25)

Tabel 3.3 String yang telah dikompresi dengan Ternary Comma Code

Char Freq TCC Trit Trit x Freq

I 4 C 1 1 x 4

S 2 1c 2 2 x 2

T 2 2c 2 2 x 2

A 2 10c 3 3 x 2

Sp 2 11c 3 3 x 2

E 1 12c 3 3 x 1

N 1 20c 3 3 x 1

D 1 21c 3 3 x 1

O 1 22c 3 3 x 1

R 1 100c 4 4 x 1

U 1 101c 4 4 x 1

M 1 102c 4 4 x 1

Total Trit 48

String trit :

b. Analisis Proses menghitung Parameter Pembanding Ratio of Compression (RC), Compression Ratio (CR), dan Space Saving (SS).

Dari hasil kompresi tersebut dapat diukur kinerja kedua algoritma sebagai berikut :

1. Ratio of Compression (RC)

RC =

= 3,16

2. Compression Ratio (CR)

CR = 100 % = 0,3157 %

3. Space Saving (SS)


(26)

c. Analisis Proses Dekompresi Text File menggunakan Algoritma Ternary Comma Code

Setelah file teks dikompresi maka akan menghasilkan file baru yang berisi informasi berupa tabel karakter dan tabel kode Ternary Comma Code yang digunakan serta string trit hasil proses kompresi. Proses dekompresi dilakukan dengan cara membaca string trit dari indeks 1 sampai ke indeks dari panjang string trit tersebut. Setiap satu indeks pembacaan string trit dicek pada tabel kode Ternary Comma Code apakah cocok atau sama, jika cocok maka ditulislah karakter pada tabel karakter dengan indeks yang sama pada tabel kode Ternary Comma Code tersebut. Berikut ini adalah contoh proses dekompresi dari file hasil kompresi pada Tabel 3.3.

3.2. Pemodelan Sistem

Pemodelan sistem adalah penggambaran bagian-bagian atau komponen-komponen yang terdapat dalam sistem yang akan dirancang sesuai dengan spesifikasi dan kebutuhan sistem tersebut. Pada penelitian ini proses pemodelan sistem akan dilakukan dengan menggunakan Use-Case Diagram, Activity Diagram, Sequence Diagram dan Flowchart.

3.2.1. Use Case Diagram

Use Case Diagram merupakan bentuk pemodelan dari sistem yang menggambarkan functional requirements dari sebuah sistem. Functional requirements dibuat berdasarkan informasi dari kebutuhan sistem dan aktor yang berperan di dalamnya. Use Case Diagram untuk sistem dalam penelitian ini dapat dilihat pada Gambar 3.2.


(27)

Gambar 3.2. Use Case Diagram Sistem

Use case pada gambar 3.2 menjelaskan aksi yang dapat dilakukan oleh user, user dapat memilih file, melakukan kompresi data, dekompresi data dan menyimpan file baru yang telah dikompresi. Setelah user melakukan kompresi maka akan ditampilkan informasi hasil kompresi dan user dapat menghapus informasi tersebut. Pada proses dekompresi user membuka file hasil kompresi, kemudian menentukan direktori untuk file hasil dekompresi, dan user dapat melakukan dekompresi.

3.2.2. Activity Diagram

Activity diagram adalah bentuk pemodelan dari sistem yang menggambarkan alur dari proses yang terjadi pada sebuah use case dan untuk menggambarkan logika dari suatu sistem. Activity diagram dibuat berdasarkan use case yang telah ditentukan sebelumnya pada proses requirement analysis. Activity diagram yang terdapat pada sistem ini adalah sebagai berikut.


(28)

1. Activity Diagram proses Kompresi

Pada proses kompresi, aktivitas yang berlangsung dapat digambarkan pada Activity diagram sebagai berikut.

Gambar 3.3. Activity Diagram Proses Kompresi

2. Activity Diagram proses Dekompresi

Pada proses dekompresi, aktivitas-aktivitas yang berlangsung dapat digambarkan pada Activity Diagram sebagai berikut.


(29)

Gambar 3.4. Activity Diagram Proses Dekompresi

3.2.3. Sequence Diagram

Sequence Diagram adalah bentuk pemodelan sistem yang menggambarkan hubungan antar objek atau objek yang saling berinteraksi melalui pesan dalam eksekusi. Diagram ini mengilustrasikan bagaimana pesan dikirim dan diterima diantara objek dan diurutan yang mana. Sequence Diagram untuk sistem yang dirancang pada penelitian ini adalah sebagai berikut.

1. Sequence Diagram pada proses kompresi


(30)

Gambar 3.5. Sequence Diagram Proses Kompresi

2. Sequence Diagram pada proses dekompresi


(31)

3.3. Perancangan Sistem

Setelah melakukan analisis dan pemodelan sistem, tahap selanjutnya adalah melakukan perancangan sistem. Dari hasil proses analisis dan pemodelan sistem, perancangan sistem dapat dibuat menjadi beberapa tahap yaitu:

1. Perancangan alur proses sistem secara umum.

2. Perancangan alur proses untuk membangkitkan kode Ternary Comma Code.

3. Perancangan alur proses kompresi dan dekompresi. 4. Perancangan antarmuka sistem

3.3.1. Perancangan alur proses sistem kompresi, dekompresi dan algoritma

Alur proses sistem secara umum dibagi dua yaitu proses kompresi dan dekompresi. Pada proses kompresi sistem menerima input berupa file teks (*.txt) dan menghasilkan satu jenis file output yaitu file hasil kompresi dengan metode Ternary Comma Code (*.tcc). Sedangkan pada proses dekompresi, sistem menerima input file hasil kompresi *.tcc dan menghasilkan file output berupa file semula yaitu file teks (*.txt). Perancangan sistem secara umum digambarkan dengan flowchart seperti pada Gambar 3.7 dan 3.8.


(32)

Gambar 3.7. Flowchart Diagram Proses Kompresi Input File Teks

(*.txt)

Kompresi File Dengan Ternary Comma Code

Hitung variabel CR, RC, SS dan Waktu

Output file (*.tcc)

End

Start

Input Compressed File(*.tcc)

Bangun daftar encoding TCC sesuai banyaknya character set

Dekompresi sesuai encoding TCC

Output file (*.txt)


(33)

Yes

Gambar 3.9. Flowchart Diagram Pembentukan Algoritma Ternary Comma Code (TCC)

Input Dec

Dec = 0

Output karakter“c”

No TCC = “”

r = dec mod 3

TCC = string (r) + tcc

dec = dec div 3

Dec ≠ 0 ?

r = dec mod 3

Yes

Output tcc + “c”

End Start

Tcc = string (r) + tcc

Dec = dec div 3

No Keterangan :

dec = nomor kode dari sebuah karakter r = remaindur (sisa bagi)

tcc = ternary comma code div = diferensiasi mod = modulo


(34)

3.3.2. Perancangan alur proses untuk membangkitkan kode Ternary Comma Code

Alur proses untuk membangkitkan kode Ternary Comma Code dapat digambarkan denganpseudocode berikut.

1. function Dec To TCC (dec) { 2. if (dec = 0)

3. return “c” 4. tcc = “”

5. r = dec mod 3

6. tcc = string (r) + tcc 7. dec = dec div 3

8. while (dec ≠ 0) { 9. r = dec mod 3

10. tcc = string (r) + tcc

11. dec = dec div 3

12.}

13. return tcc + “c” 14.}

3.3.3 Perancangan antarmuka sistem

Pada perancangan sistem terdapat pembuatan Graphic User Interface (GUI) yang akan mempermudah user dalam menggunakan sistem yang ada. Pada sistem, terdapat 6 buah Form yang akan ditampilkan antara lain Form Home, Form Menu, Form Compress, Form Decompress, Form Help dan Form About.


(35)

1. Form Home

Gambar 3.10. Form Home pada sistem

Keterangan : 1. Picture Box

Tampilan sri awal system berupa gambar dan tulisan. 2. Button Next


(36)

2. Form Menu

Gambar 3.11. Form Menu pada sistem Keterangan :

1. Label Text

Tampilan kalimat judul skripsi yang dirancang. 2. Tab Home

Berguna untuk menampilkan tampilan Home dari sistem yang ada. 3. Tab Compress

Berguna untuk menampilkan menu Compress pada sistem. 4. Tab Decompress

Berguna untuk menampilkan menu Decompress pada sistem. 5. Tab Help

Berguna untuk menampilkan menu Help yang ada pada sistem. 6. Tab About


(37)

3. Form Compress

Gambar 3.12. Form Compress pada sistem Keterangan :

1. Label Text

Tampilan kalimat dari compression process. 2. Button Open

Berguna untuk menampilkan sejumlah file .txt dan .doc yang akan dikompresi. 3. Text Box

Berisi informasi tempat pengambilan dan penyimpanan dari data yang digunakan.

4. Button Save

Berguna untuk menyimpan hasil dari kompresi yang diinginkan. 5. Text Box

Berisi informasi tempat pengambilan dan penyimpanan dari data yang digunakan. 6. Button Compress


(38)

7. Button Reset

Berguna untuk menghapus data yang telah diambil dan menjadikannya default.

4. Form Decompress

Gambar 3.13. Form Decompress pada sistem Keterangan :

1. Label Text

Tampilan kalimat dari decompression process. 2. Button Open

Berguna untuk menampilkan sejumlah file yang digunakan untuk dekompresi. 3. Text Box

Berisi informasi tempat pengambilan dan penyimpanan dari data yang digunakan.


(39)

Berguna untuk mengeksekusi data yang ada sehingga terjadi proses dekompresi. 7. Button Reset

Berguna untuk menghapus data yang telah diambil dan menjadikannya default.

5. Form Help

Gambar 3.14. Form Help pada sistem Keterangan :

1. Label Text

Tampilan kalimat judul skripsi yang dirancang. 2. Button Information Compression

Berguna untuk menampilkan sejumlah informasi dari proses kompresi yang telah dilakukan.

3. Button Information Decompression

Berguna untuk menampilkan sejumlah informasi dari proses dekompresi yang telah dilakukan.

4. Button Home


(40)

5. Button Exit

Berguna untuk menampilkan tampilan keluar dari sistem yang ada.

6. Form About

Gambar 3.15. Form About pada sistem Keterangan :

1. Label Text

Tampilan kalimat About yang dirancang. 2. Picture Box

Berisi gambar logo berformat .jpeg sebagai keterangan dari sistem. 3. Label Text

Berguna untuk menampilkan sejumlah informasi dari sistem yang telah dilakukan.


(41)

BAB 4

IMPLEMENTASI DAN PENGUJIAN SISTEM

Pada bab 4 ini penulis memaparkan bagaimana implementasi dari sistem dan juga hasil pengujian aplikasi yang dilakukan pada metode Ternary Comma code yang sudah dibangun menggunakan Java dan Android.

4.1. Implementasi Sistem

Implementasi sistem merupakan proses menerjemahkan hasil analisis dan perancangan sistem ke dalam sebuah bahasa pemrograman. Implementasi sistem pada penelitian ini dibangun menggunakan bahasa pemrogaman . Bahasa pemrograman bahasa pemrograman Java dan Android Studio versi 2.1.1. Proses dari sistem atau modul kendali (controller) akan dikerjakan menggunakan platform Android dan untuk tampilan antarmuka akan ditangani menggunakan bahasa xml. Adapun perangkat lunak yang digunakan sebagai Integrated Development Environment (IDE) adalah Android Studio versi 2.1.1. Dan bahasa pemrograman yang digunakan adalah Java Development Kit 8.2.

Proses implementasi yang dirancang pada sistem ini dibagi menjadi 6 form dalam bahasa Java, di antaranya yaitu form home untuk halaman utama, form menu untuk halaman menu sistem, form compress untuk menu kompresi, form decompress untuk menu dekompresi, form help untuk menu help, dan form about untuk profil penulis dan tentang aplikasi.

4.1.1. Tab Home

Tab Home merupakan form yang pertama kali muncul pada saat aplikasi dijalankan. Form ini terdiri dari satu Tab next . Halaman utama pada aplikasi dapat dilihat pada Gambar 4.1.


(42)

Gambar 4.1 Tab Home

4.1.2. Tab Menu

Tab Menu merupakan form yang pertama kali muncul pada saat aplikasi dijalankan. Form ini terdiri dari enam Tab Menu, yaitu Tab Home, Tab Compress, Tab Decompress, Tab Help, Tab About, dan Tab Next. Halaman utama pada aplikasi dapat dilihat pada Gambar 4.2.


(43)

Gambar 4.2 Tab Menu

4.1.3. Tab Compress

Tab Compress merupakan form yang digunakan untuk melakukan proses kompresi. Pada tab ini disediakan interface untuk open file teks, textbox untuk menampilkan isi file teks, input save file yang akan dikompresi, textbox untuk menampilkan file berentensi apa yang akan disimpan setelah proses kompresi, Tab Reset untuk mengembalikan ke hasil semula sebelum di kompresi. Dan text box untuk informasi hasil kompresi. Tampilan untuk tab compress dapat dilihat pada Gambar 4.3.


(44)

Gambar 4.3 Tab Compress

4.1.4. Tab Decompress

Tab Decompress merupakan form yang digunakan untuk melakukan proses dekompresi. Pada form ini disediakan interface untuk open file hasil dekompresi yaitu untuk file *.tcc, menentukan direktori file hasil dekompresi, text box untuk menampilkan waktu yang diperlukan untuk dekompresi, dan text area untuk


(45)

Gambar 4.4 Tab Decompress

4.1.5. Tab Help

Tab Help merupakan Form yang digunakan untuk menampilkan informasi tentang cara mengoperasikan sistem atau aplikasi Compress dan Decompress yang dibuat. Tampilan untuk tab Help dapat dilihat pada Gambar 4.5.


(46)

Gambar 4.5 Tab Help

Pada form ini berisi informasi tentang langkah - langkah proses kompresi dan dekompresi yang akan dilakukan.


(47)

Gambar 4.6 Tab Help Information Compression


(48)

Gambar 4.7 Tab Help Information Decompression

Pada form ini berisi menampilkan infromasi tentang proses dekompresi dilakukan.

4.1.6. Tab About

Tab About merupakan form yang digunakan hanya untuk menampilkan informasi tentang sistem atau aplikasi yang dibuat dan informasi tentang penulis. Tampilan untuk tab About dapat dilihat pada Gambar 4.8.


(49)

Gambar 4.8 Tab About

4.2. Pengujian Sistem

Pengujian sistem merupakan tahap mengidentifikasi hasil dari implementasi sistem apakah sistem telah berjalan sesuai dengan fungsi-fungsi yang sebelumnya ditentukan pada tahap analisis dan perancangan sistem. Pengujian sistem ini dilakukan pada File teks yang berekstensi *.txt. Pengujian sistem yang dilakukan pada penelitian ini dibagi dalam 2 proses utama yaitu pengujian proses kompresi dan pengujian proses dekompresi.

4.2.1. Pengujian proses kompresi

Untuk melakukan proses kompresi tahap awal yang dilakukan adalah memilih tab Compress. Setelah tampilan form Compress muncul maka lakukan langkah-langkah berikut ini untuk melakukan proses kompresi.


(50)

1. Menekan tombol pada Open untuk membuka File Dialog, dan pilih File teks (*.txt) sebagai Input File yang akan di kompresi.

2. Menekan tombol pada Save kemudian tentukan nama untuk menyimpan file hasil kompresi (*.tcc).

3. Setelah Input File dan Output File ditentukan maka tekan tombol compress kemudian akan ditampilkan informasi direktori File seperti pada Gambar 4.9


(51)

Gambar 4.10 Informasi Hasil Kompresi

Setelah input dan ouput sudah dimasukkan, maka didapatkan hassil dari proses

kompresi tersebut ialah uncompressed bits = 80, compressed bits = 10, RC = 8.0, CR = 0.125 %, SS = 700 %, dan compression time = 10 ms.


(52)

Gambar 4.11 File Ternary Comma Code Hasil Kompresi

4.2.2. Pengujian proses dekompresi

Untuk melakukan proses dompresi tahap awal yang dilakukan adalah memilih Tab Decompress. Setelah tampilan Form Decompress muncul maka lakukan langkah - langkah berikut ini untuk melakukan proses dekompresi.

1. Menekan tombol pada Open File untuk membuka Open File Dialog Open File, dan pilih file hasil kompresi (*.tcc) sebagai Input File.

2. Menekan tombol pada Save untuk membuka Save File Dialog dan tentukan direktori untuk menyimpan file hasil dekompresi (*.txt ). Tampilan.

3. Menekan tombol Decompress untuk melakukan proses dekompresi. Setelah proses dekompresi berhasil sistem akan menampilkan informasi hasil dekompresi dan waktu dekompresi pada text box seperti pada Gambar 4.12


(53)

Gambar 4.12 Aplikasi Setelah File Input dan Output Ditentukan

Gambar diatas merupakan proses setelah file input dan output ditentukan. Baru dapat menjalankan proses dekompresi.


(54)

Gambar 4.13 Informasi Hasil Dekompresi

Gambar diatas merupakan hasil dari proses dekompresi pada file txt ialah dengan decompression time = 11 ms.

4.3. Hasil Pengujian

Hasil pengujian yang didapatkan melalui penelitian ini berupa hasil dari proses kompresi dan dekompresi string dengan dua jenis komposisi string yaitu string yang terdiri dari karakter yang sama (String Homogen) dan string yang terdiri dari berbagai macam karakter (String Heterogen).


(55)

Tabel 4.1 Hasil Pengujian String Homogen & String Heterogen menggunakan file txt dengan Ternary Comma Code

String Homogen & String Heterogen File txt N o Jumlah Karakt er Jenis Karak ter Bit sebelum kompres i

Bit ter - kompres i

RC CR (%) SS (%) Waktu kompre si (sekon) Waktu dekompr esi (sekon)

1 10 1 80 10 8 0,125 700 8 ms 3 ms

2 20 1 160 20 8 0,125 700 8 ms 11 ms

3 30 1 240 30 8 0,125 700 7 ms 2 ms

4 40 1 320 40 8 0,125 700 9 ms 2 ms

5 50 1 400 50 8 0,125 700 9 ms 9 ms

6 60 5 480 132 3,636 0,275 263,6 9 ms 4 ms 7 70 5 560 154 3,636 0,275 263,6 9 ms 5 ms 8 80 5 640 176 3,636 0,275 263,6 10 ms 5 ms 9 90 5 720 198 3,636 0,275 263,6 9 ms 5 ms 10 100 5 800 220 3,636 0,275 263,6 14 ms 6 ms

Rata-rata 54,9

07

1,88 75

4580 ,7

79,4 46,6

Dari Tabel 4.1 dapat dibuat grafik hasil pengujian String Homogen dari file txt berdasarkan variabel Ratio of Compression (RC), Compression Ratio (CR), Space Savings (SS), waktu kompresi dan dekompresi seperti pada Gambar 4.14, Gambar 4.15, Gambar 4.16, Gambar 4.17 dan Gambar 4.18.


(56)

Gambar 4.14 Grafik Ratio Of Compression Terhadap String Homogen 0

1 2 3 4 5 6 7 8 9

10 20 30 40 50

File Txt

RC

Jumlah Karakter

RC

0 0.02 0.04 0.06 0.08 0.1 0.12 0.14

10 20 30 40 50

File Txt

CR

CR


(57)

Gambar 4.16 Grafik Space Savings Terhadap String Homogen

Gambar 4.17 Grafik Waktu Kompresi Terhadap String Homogen 0 100 200 300 400 500 600 700 800

10 20 30 40 50

File Txt SS Jumlah Karakter

SS

0 1 2 3 4 5 6 7 8 9 10

10 20 30 40 50

File Txt Waktu

(Sekon)

Waktu Kompresi


(58)

Gambar 4.18 Grafik Waktu dekompresi Terhadap String Homogen

Dari Tabel 4.1 dapat dibuat grafik hasil pengujian String Heterogen dari file txt berdasarkan variabel Ratio of Compression (RC), Compression Ratio (CR), Space Savings (SS), waktu kompresi dan dekompresi seperti pada Gambar 4.19, Gambar 4.20, Gambar 4.21, Gambar 4.22 dan Gambar 4.23.

0 2 4 6 8 10 12

10 20 30 40 50

File Txt Waktu

(Sekon)

Jumlah Karakter Waktu Dekompresi


(59)

Gambar 4.19 Grafik Ratio Of Compression Terhadap String Heterogen

Gambar 4.20 Grafik Compression Ratio Terhadap String Heterogen 0

0.5 1 1.5 2 2.5 3 3.5 4

60 70 80 90 100

File Txt RC

RC

Jumlah Karakter

0 0.05 0.1 0.15 0.2 0.25 0.3

60 70 80 90 100

File Txt CR

CR


(60)

Gambar 4.21 Grafik Space Savings Terhadap String Heterogen 0

50 100 150 200 250 300

60 70 80 90 100

File Txt SS

SS

Jumlah Karakter

0 2 4 6 8 10 12 14 16

60 70 80 90 100

File Txt Waktu

(sekon)

Jumlah Karakter

Waktu Kompresi


(61)

Gambar 4.23 Grafik Waktu dekompresi Terhadap String Heterogen 0

1 2 3 4 5 6 7

60 70 80 90 100

File Txt Waktu

(Sekon)

Waktu Dekompresi


(62)

4.4. Hasil Perhitungan Kompleksitas Big Theta (Ɵ)

Untuk mengetahui cara kerja algoritma Ternary Comma Code yang paling efektif melakukan kompresi, maka dibutuhkan perhitungan kompleksitas waktu. Dapat dilihat tabel 4.2 untuk algoritma Ternary Comma Code.

Tabel 4.2 Perhitungan Big Theta (Ɵ) Ternary Comma Code

Step Pseudocode T(n)

1. Function TCC(str) { C # C#

2. char,freq = count_freq(str) C1 1 C1

3. t = len (char) C2 1 C2

4. freq, char = sort_descending (freq,

char)

C3 1 C3

5. tcc = [“c”, “1c”] C4 1 C4

6. for (i = 2 to t-1){ C5 t-1 C5(t-1)

7. tcc. Append (Dec To TCC (i))} C6 t-1 C6(t-1)

8. return char, tcc } C7 1 C7

Dari perhitungan running time pada tabel maka didapat : T(n) = C1 + C2 + C3 + C4 + C5 (t-1) + C6 (t-1) + C7

= C1 + C2 + C3 + C4 + C5 t-1 + C6 t – C6 + C7

= C1 + C2 + C3 + C4– C5– C6 + C7 + (C5 + C6) t

T(n) = Ɵ(t)

Dari tabel diatas dapat dilihat bahwa dimana t adalah panjang karakter. Dan dapat dilihat bahwa algoritma Ternary Comma Code running time yang di dapat yaitu T(n)


(63)

BAB 5

KESIMPULAN DAN SARAN

5.1. Kesimpulan

Berdasarkan hasil studi literatur, analisis, perancangan, implementasi dan pengujian sistem ini, maka didapat kesimpulan sebagai berikut :

1. Aplikasi yang dirancang telah mampu melakukan kompresi string dengan menggunakan algoritma Ternary Comma Code.

2. Aplikasi yang dirancang telah mampu melakukan dekompresi terhadap hasil kompresi algoritma Ternary Comma Code menjadi string asli atau yang semula sebelum dikompresi.

3. Pengujian yang dilakukan terhadap karakter yang sama menunjukkan Compression Ratio (CR), Ratio of Compresion (RC), dan Space Savings (SS) yang

dihasilkan dari kompresi algoritma Ternary Comma Code sudah baik dan waktunya relatif lebih kecil.

4. Hasil pengujian kompresi file teks dengan karakter yang sama (homogen) berdasarkan variabel Ratio of Compression (RC), Compression Ratio (CR), Sapace Savings (SS) dan waktu kompresi menunjukkan bahwa pada metode Ternary Comma Code sudah baik dengan Compression Ratio rata-rata sebesar 0.125 %.

5.2. Saran

Adapun saran-saran yang dapat penulis berikan untuk pengembangan dan perbaikan sistem ini adalah sebagai berikut :

1. Aplikasi yang dirancang diharapkan dapat mengkompresi input file teks dari dokumen yang berekstensi *.doc dan *.docx berupa gambar, grafik, tabel dan komponen lainnya.

2. Aplikasi yang dirancang diharapkan dapat mengkompresi jenis file teks lainnya yang berekstensi *.rtf , *.docx dan *.pdf.


(64)

BAB 2

TINJAUAN PUSTAKA

Dalam penulisan tugas akhir ini, penulis mengambil beberapa materi dan memaparkan teori-teori ilmiah yang didapat dari metode pencarian fakta yang digunakan untuk mendukung penyusunan tugas akhir ini, tinjauan pustaka yang dimaksud adalah sebagai berikut.

2.1. Kompresi Data

Kompresi berarti memampatkan/mengecilkan ukuran. Kompresi data adalah proses mengkodekan informasi menggunakan bit atau information-bearing unit yang lain yang lebih rendah daripada representasi data yang tidak terkodekan dengan suatu sistem encoding tertentu. Contoh kompresi sederhana yang biasa kita lakukan misalnya adalah menyingkat kata-kata yang sering digunakan tapi sudah memiliki konvensi umum. Misalnya: kata “yang” dikompres menjadi kata “yg”. Pengiriman data hasil kompresi dapat dilakukan jika pihak pengirim/yang melakukan kompresi dan pihak penerima memiliki aturan yang sama dalam hal kompresi data. Pihak pengirim harus menggunakan algoritma kompresi data yang sudah baku dan pihak penerima juga menggunakan teknik dekompresi data yang sama dengan pengirim sehingga data yang diterima dapat dibaca/di-dekode kembali dengan benar. Kompresi data menjadi sangat penting karena memperkecil kebutuhan penyimpanan data, mempercepat pengiriman data, memperkecil kebutuhan bandwidth.

Proses kompresi merupakan proses mereduksi ukuran suatu data untuk menghasilkan representasi digital yang padat atau mampat (compact) namun tetap dapat mewakili kuantitas informasi yang terkandung pada data tersebut. Pada citra, video, dan audio, kompresi mengarah pada minimalisasi jumlah bit rate untuk representasi digital. Pada beberapa literatur, istilah kompresi sering disebut juga source coding, data compression, bandwidth compression, dan signal compression. (Putra, D. 2010)


(65)

Sering terjadi kesalahan pemahaman mengenai data dan informasi, pada data dan informasi adalah dua hal yang berbeda. Pada data terkandung suatu informasi. Namun tidak semua bagian data terkait dengan informasi tersebut atau pada suatu data terdapat bagian-bagian data yang berulang untuk mewakili informasi yang sama. Bagian data yang tidak terkait atau bagian data yang berulang tersebut disebut dengan data yang berlebihan (redundancy data). Tujuan daripada kompresi data adalah untuk mengurangi data berlebihan tersebut sehingga ukuran data menjadi lebih kecil dan lebih ringan dalam proses transmisi. (Putra, D. 2010)

Di dalam penelitian ini, file yang akan diteliti berfokus pada jenis file teks, dengan berekstensi txt. File teks (flat file) adalah salah satu jenis file computer yang tersusun dalam suatu urutan baris data teks biasanya diwakili oleh 8 bit kode ASCII. (Solihin, M. 2013)

2.2. Jenis Kompresi Data

Adapun diketahui beberapa jenis kompresi data yaitu :

1. Jenis Kompresi Data Berdasarkan Mode Penerimaan Data oleh Manusia :

-Dialogue Mode: yaitu proses penerimaan data dimana pengirim dan penerima seakan berdialog (real time), seperti pada contoh video conference. Dimana kompresi data harus berada dalam batas penglihatan dan pendengaran manusia. Waktu tunda (delay) tidak boleh lebih dari 150 ms, dimana 50 ms untuk proses kompresi dan dekompresi, 100 ms mentransmisikan data dalam jaringan.

-Retrieval Mode: yaitu proses penerimaan data tidak dilakukan secara real time. Dapat dilakukan fast forward dan fast rewind di client. Dapat dilakukan random access terhadap data dan dapat bersifat interaktif.

2. Jenis Kompresi Data Berdasarkan Output : -Lossy Compression

Teknik kompresi dimana data hasil dekompresi tidak sama dengan data sebelum kompresi namun sudah “cukup” untuk digunakan. Contoh: Mp3, streaming media, JPEG, MPEG, dan WMA. Kelebihan: ukuran file lebih kecil dibanding loseless namun masih tetap memenuhi syarat untuk digunakan. Biasanya teknik ini membuang bagian-bagian data yang sebenarnya tidak begitu berguna, tidak begitu dirasakan, tidak begitu dilihat oleh manusia sehingga manusia masih beranggapan bahwa data


(66)

tersebut masih bisa digunakan walaupun sudah dikompresi. Misal terdapat image asli berukuran 12,249 bytes, kemudian dilakukan kompresi dengan JPEG kualitas 30 dan berukuran1,869 bytes berarti image tersebut 85% lebih kecil dan ratio kompresi 15%. Contoh beberapa algoritma lossy compression yang umum digunakan antara lain algoritma ADPCM, LPC, MPEG, JPEG, Fractal dan sebagainya.

LOSSY

Compressed

Gambar 2.1 Ilustrasi Kompresi Lossy (Sayood, K. 2005)

- Lossless Compression

Teknik kompresi dimana data hasil kompresi dapat didekompres lagi dan hasilnya tepat sama seperti data sebelum proses kompresi. Contoh aplikasi: ZIP, RAR, GZIP, 7-Zip. Teknik ini digunakan jika dibutuhkan data setelah dikompresi harus dapat diekstrak/dekompres lagi tepat sama. Contoh pada data teks, data program/biner, beberapa image seperti GIF dan PNG. Kadangkala ada data-data yang setelah dikompresi dengan teknik ini ukurannya menjadi lebih besar atau sama. (Antonopoulos, C.P. & Voros, N.S. 2015) Contoh beberapa algoritma lossless compression yang umum digunakan antara lain algoritma Ternary Comma Code, Huffman, Shannon-Fano dan sebagainya.

Jenis kompresi yang akan dibahas di penelitian ini adalah lossless, mengingat sifat kompresi jenis ini yang tidak mengubah isi data ketika akan di dekompresi. Ternary Comma Code adalah algoritma yang akan dibahas dalam penelitian ini. LOSSLESS

Compressed

Original

Restored


(67)

2.3. Teknik Kompresi

Ketika kita berbicara tentang teknik kompresi atau algoritma kompresi, kita sebenarnya mengacu pada dua algoritma. Ada algoritma kompresi yang mengambil sebuah input x dan menghasilkan xc sebagai representasi yang memerlukan bit yang

lebih sedikit, dan ada algoritma rekonstruksi yang beroperasi pada representasi kompresi xc untuk menghasilkan rekonstruksi y operasi ini secara skematis

diperlihatkan pada Gambar 2.3 (Sayood, K. 2005)

xc

x y

Original Data Reconstructed Data Gambar 2.3 Kompresi dan Rekonstruksi (Sayood, K. 2005)

Berdasarkan persyaratan rekonstruksi, skema kompresi data dapat dibagi menjadi dua kelas besar : skema kompresi loseless, dimana x identik dengan y, dan skema kompresi lossy, yang umumnya menyediakan kompresi jauh lebih tinggi daripada kompresi loseless tetapi memungkinkan y menjadi berbeda dari x. (Sayood, K. 2005).

2.4. Parameter Analisis Kompresi

Pada suatu teknik yang digunakan dalam proses kompresi data terdapat beberapa faktor atau variabel yang biasa digunakan untuk menganalisa kualitas dari suatu teknik kompresi data tersebut, yaitu :

◊○∆○∆◊ ○◊β¥◊○◊∆ ◊◊○£®○◊◊ ○∆◊βµ≤α Fakultas Ilmu komputer dan Teknolgi Informasi Fakultas Ilmu komputer dan Teknolgi Informasi

Compression Reconstruction Decompression


(68)

1. Ratio of Compression (RC) (Salomon, D. & Motta, G. 2010)

Ratio of Compression (RC) adaalah nilai perbandingan antara ukuran bit data sebelum dikompresi dengan ukuran bit data yang telah dikompresi. Secara sistematis dapat dituliskan sebagai berikut :

………..…….(1)

Persamaan 1. Misalkan di dapat sebuah nilai Ratio of Compression (RC) sebesar 2,75. Itu berarti besar data sebelum kompresi adalah 2,75 kali lipat dari besar data setelah dikompresi.

2. Compression Ratio (CR) (Salomon, D. & Motta, G. 2010)

Compression Ratio (CR) adalah persentase perbandingan antara data yang sudah dikompresi dengan data yang belum dikompresi. Secara matematis dapat dituliskan sebagai berikut :

...(2)

Persamaan 2. Misalkan di dapat sebuah nilai Compression Ratio(CR) sebesar 35%. Itu berarti setelah dikompresi ukuran data adalah 35% dari data sebelum dikompresi.

3. Space Savings (SS) (Siagian, P. 2015)

Space Savings (SS) adalah persentase selisih antara data yang belum dikompresi dengan besar data yang dikompresi.


(69)

4. Waktu kompresi dan dekompresi (Siagian, P. 2015)

Waktu kompresi dan dekompresi adalah waktu yang dibutuhkan untuk melakukan proses kompresi dan dekompresi. Semakin kecil waktu yang diperoleh maka semakin efisien metode yang digunakan dalam proses kompresi dan dekompresi itu.

2.5. File Text

Teks adalah kumpulan dari karakter-karakter atau string yang menjadi satu kesatuan. Teks yang memuat banyak karakter didalamnya selalu menimbulkan masalah pada media penyimpanan dan kecepatan waktu pada saat transmisi data. File teks merupakan file yang berisi informasi-informasi dalam bentuk teks. Data yang berasal dari dokumen pengolah kata, angka yang digunakan dalam perhitungan, nama dan alamat dalam basis data merupakan contoh masukan data teks yang terdiri dari karakter, angka dan tanda baca. (Pramilo, C. 2008)

Format file teks yang akan digunakan dalam penelitian ini adalah format data teks (*.txt) .

Masukan dan keluaran data teks dipresentasikan sebagai set karakter atau sistem kode yang dikenal oleh sistem komputer. Ada tiga macam set karakter yang umum digunakan untuk masukan dan keluaran pada komputer, yaitu ASCII, Unicode, dan EBCDIC, ASCII (American Standard Code For Information Interchange) merupakan suatu standar internasional dalam kode huruf dan simbol seperti Hex, dan Unicode, tetapi ASCII bersifat lebih universal. ASCII memiliki komposisi bilangan biner sebanyak 8 bit, dimulai dari 00000000 dan 11111111. Total kombinasi yang dihasilkan sebanyak 256, dimulai dari kode 0 hingga 255 dalam sistem bilangan desimal. Unicode adalah suatu standar industri yang dirancang untuk mengizinkan teks dan simbol dari semua sistem tulisan di dunia untuk ditampilkan dan dimanipulasi secara konsisten oleh komputer.EBCDIC (Extended Binary Code Decimal Interchange Code) merupakan set karakter yang diciptakan oleh komputer merk IBM. EBCDIC terdiri dari 256 karakter yang masing-masing berukuran 8 bit. (Sudewa, I. B. A. 2003)


(70)

2.5.1. Format Teks

Tipe teks merupakan tipe dasar yang sudah sangat dikenal dalam kehidupan sehari-hari. Tipe teks terdiri dari tipe karakter (char) dan tipe string. Tipe karakter (char) terdiri atas satu huruf, angka, tanda baca, atau karakter khusus seperti “c”, “1”, “#” dan sebagainya. Tipe string terdiri atas nol atau lebih karakter seperti “teks” dan “algoritma” dan sebagainya.

Secara umum, format data teks dibagi menjadi dua bagian, yaitu (Purnomo, H. & Zacharias, T. 2005) :

1. Teks sederhana (plain text)

Format data teks (*.txt) merupakan contoh format teks jenis ini yang paling populer.

2. Teks terformat (formatted text)

Merupakan teks yang terformat dan mengandung styles. Format data dokumen Microsoft Word (*.doc) merupakan contoh format teks jenis ini yang paling populer.

Contoh format data teks di atas beserta perangkat lunak yang bisa digunakan di antaranya adalah (Purnomo, H. & Zacharias, T. 2005) :

1. Format data teks (*.txt)

Format data teks merupakan format teks yang digunakan untuk menyimpan huruf, angka, karakter kontrol (tabulasi, pindah baris, dan sebagainya) atau simbol-simbol lain yang biasa digunakan dalam tulisan seperti titik, koma, tanda petik dan sebagainya. Satu huruf, angka, karakter kontrol atau simbol pada arsip teks memakan tempat satu byte. Berbeda dengan jenis teks terformat yang satu huruf saja dapat memakan tempat beberapa byte untuk menyimpan format dari huruf tersebut seperti font, ukuran, tebal atau tidak dan sebagainya. Kelebihan dari format data teks ini adalah ukuran datanya yang kecil karena tiadanya fitur untuk memformat tampilan teks. Saat ini perangkat lunak yang paling banyak digunakan untuk memanipulasi format data ini adalah Notepad.


(71)

teks seperti styles (font, ukuran huruf, dan sebagainya), namun juga dapat menyisipkan gambar. Kekurangan format teks dokumen ini terletak pada ukuran datanya yang besar.

3. Hyper text markup language (*.htm atau *.html)

Merupakan format teks standard untuk tampilan dokumen web. 4. Rich text format (*.rtf)

Format teks ini dikembangkan oleh Microsoft yang dapat dibaca oleh berbagai macam platform, seperti Windows, Linux, Android, Mac OS dan sebagainya.

2.6. Algoritma Ternary Comma Code

Algoritma merupakan urutan langkah-langkah untuk menyelesaikan masalah yang disusun secara sistematis, algoritma dibuat dengan tanpa memperhatikan bentuk yang akan digunakan sebagai implementasinya, sehingga suatu algoritma dapat menjelaskan “bagaimana” cara melaksanakan fungsi dapat diekspresikan dengan suatu program atau suatu komponen fisik. (Hartono, T. B. 2007)

Bilangan biner (basis 2) adalah didasarkan pada dua bit 0 dan 1. Demikian juga seperti bilangan ternary (basis 3) yang didasarkan pada tiga bilangan (trit) 0, 1 dan 2. Setiap trit dapat dituliskan dalam dua bit, tetapi dua bit dapat memiliki empat nilai. Sehingga, ini memungkinkan untuk bekerja dengan sistem bilangan ternary dimana masing-masing trit di wakili oleh dua bit dan dalam penjumlahan ketiga trit ada simbol ke empat yaitu comma (c). Ketika kita memasukkan (c), ini akan menjadi lebih mudah untuk membuat kode ternary comma untuk bilangan bulat. Kode comma dari n secara sederhana mewakili ternary dari n-1 di ikuti oleh sebuah comma (c). Sehingga kode comma dari 8 adalah 21c (karena 7= 2.3+1) dan kode comma dari 18 adalah 122c (karena 17=1.9+2.3+2).

Tabel dibawah mencatat beberapa bilangan kode ternary comma (kolom L adalah panjang dari kode dalam bit). Kode ini bertambah panjang (lebih panjang dari kebanyakan kode yang digambarkan disini) tetapi tumbuh secara perlahan sehingga kode ini cocok digunakan untuk aplikasi yang biasanya menggunakan bilangan bulat yang besar. Kode ini juga mudah untuk dibuat dan diuraikan, dan kekurangan yang mendasar adalah simbol comma (yang menandakan akhir dari kode) membutuhkan dua bit. Ketidak efisienan ini tidak serius, tetapi menjadi lebih untuk kode comma yang berdasar pada bilangan yang lebih besar. Pada kode comma yang berbasis 15,


(72)

contohnya masing-masing dari 15 bilangan membutuhkan 4 bit dan comma juga berpola 4 bit. Setiap kode diakhiri dengan comma 4 bit, bukan 1 bit dan fitur ini membuat kode ini tidak efisien. (Namun, keseluruhan redudansi setiap simbol mengurangi bilangan yang berbasis besar. Di sistem basis 7, 1 dari 8 simbol dikurangi untuk comma, sementara dalam basis 15 adalah 1 dari 16 simbol). (Salomon, D. 2007)

Tabel 2.1 Algortima Ternary Comma Code dan Panjangnya. (Salomon, D. 2007)

Value Code L Value Code L

0 C 2 11 101c 8

1 0c 4 12 102c 8

2 1c 4 13 110c 8

3 2c 4 14 111c 8

4 10c 6 15 112c 8

5 11c 6 16 120c 8

6 12c 6 17 121c 8

7 20c 6 18 122c 8

8 21c 6 19 200c 8

9 22c 6 20 201c 8

… …

64 2100c 10 1,000 1101000c 16

128 11201c 12 3,000 11010002c 18

256 100110c 14 10,000 111201100c 20

512 200221c 14 65,536 10022220020c 24

2.7. Kompleksitas Algoritma


(73)

Kinerja algoritma dibuktikan dengan menjumlahkan bilangan bulat dari masing-masing operasi ketika algoritma di jalankan. Kinerja sebuah algoritma dievaluasi sebagai fungsi ukuran masukan n dan konstanta modulo pengali yang digunakan. Pada penelitian ini kompleksitas yang digunakan adalah Big Theta (Ɵ).

1. Big-O (O)

Secara informal, 0(g(n)) adalah himpunan semua fungsi yang lebih kecil atau dengan urutan yang sama dengan g(n) (hingga beberapa konstanta, sampai n ke tak terhingga). Sebuah fungsi t(n) dikatakan bagian dari 0((g(n)) yang dilambangkan dengan t(n) Є 0(g(n)), jika t(n) batas atasnya adalah beberapa konstanta g(n) untuk semua n besar, jika terdapat konstanta c positif dan beberapa bilangan bulat non negatif n0seperti t(n)

≤cg(n) untuk semua n≥n0. (Levitin, A. 2011)

2. Big Theta (Ɵ)

ϴ(g(n)) adalah himpunan semua fungsi yang memiliki tingkat pertumbuhan yang sama dengan g(n) (hingga beberapa konstanta, sampai n ke tak terhingga). Sebuah fungsi t(n) dikatakan bagian dari ϴ(g(n)), dilambangkan dengan t(n) Є ϴ(g(n)), jika t(n) batas atas dan bawahnya adalah beberapa konstanta positif g(n) untuk semua n yang besar, yaitu jika ada beberapa konstanta positif c1dan c2 serta beberapa bilangan bulat non negatif n0 seperti c2g(n) ≤t(n) ≤c1g(n) untuk semua n≥n0. (Levitin, A. 2011)

3. Big Omega (Ω)

Ω(g(n)) merupakan himpunan semua fungsi dengan tingkat pertumbuhan lebih besar

atau sama dengan g(n) (hingga beberapa konstanta, sampai n ke tak terhingga). Sebuah fungsi t(n) dikatakan bagian dari Ω(g(n)), dilambangkan dengan t(n) Є

Ω(g(n)), jika t(n) batas bawahnya adalah beberapa konstanta positif dari g(n) untuk

semua n besar. Terdapat konstanta c positif dan beberapa bilangan bulat non negatif n0 seperti t(n)≥cg(n), (untuk setiap n≥n0). (Levitin, A. 2011)

2.8. Platform Android

Android sudah menjadi platform sistem operasi yang makin popular. Padahal sebenarnya, Android termasuk sistem operasi „yunior‟ dibandingkan lainnya yang lebih „senior‟, seperti symbian, iOS, atau sistem operasi blackberry. Android secara


(74)

sederhana bisa diartikan sebagai sebuah software yang digunakan pada perangkat mobile yang mencakup sistem operasi, middleware, dan aplikasi kunci yang dirilis oleh Google. Sehingga android mencakup keseluruhan sebuah aplikasi, dimulai dari sistem operasi sampai pada pengembangan aplikasi itu sendiri. (EMS, Tim. 2015)

Pengembangan aplikasi pada platform Android ini menggunakan dasar bahasa pemrograman Java. Tapi secara sempit, Android biasanya mengacu pada sistem operasinya saja. Platform pengembangan aplikasi Android ini bersifat open source atau terbuka, sehingga dapat mengembangkan kemampuan untuk membangun aplikasi yang kaya dan inovatif. (EMS, Tim. 2015)

Dasar pemrograman Android adalah Java, karena aplikasi android ditulis dalam bahasa java. Android menyediakan lingkungan atau run time environment yang dikenal sebagai Dalvik Virtual Machine ini merupakan Java runtime environment yang telah dioptimasi untuk device dengan sistem memori yang kecil. (EMS, Tim. 2015)

2.9. Penelitian Relevan

Berikut ini beberapa penelitian relevan yang terkait dengan penelitian ini :

1. Umri Erdiansyah (2014) dalam skripsi yang berjudul Perbandingan Algoritma Elias Delta Code Dengan Levenstein Untuk Kompresi File Teks. Dalam skripsi dapat disimpulkan bahwa perbedaan cara kerja kompresi antara kedua algoritma tersebut dalam mengompresi file teks. Proses kompresi dengan menggunakan Elias Delta mempunyai keterbatasan karena hanya dapat mempresentasikan 7 karakter pertama dengan jumlah bit dibawah 8 bit. Waktu yang dibutuhkan untuk kompresi tidak bergantung pada besarnya ukuran file dan begitu pula waktu dekompresi tidak tergantung pada waktu kompresi.

2. Pahara Siagian (2015) dalam skripsi yang berjudul Analisis Perbandingan Kinerja Algoritma Fixed Length Binary Encoding (FLBE) Dengan Algoritma Sequitur Dalam Kompresi File Text. Dalam skripsi dapat disimpulkan bagaimana


(75)

BAB 1

PENDAHULUAN

1.1. Latar Belakang

Saat ini pengiriman informasi secara real-time masih mengalami kendala, diantaranya adalah besarnya jumlah data yang harus dikirim melampaui kecepatan transmisi yang dimiliki oleh perangkat keras. Hal tersebut menjadi masalah, dimana jalur komunikasi di Indonesia, khususnya internet, masih berada di dalam kategori lambat dan sering bermasalah. Dengan demikian, data yang berukuran kecil akan dipilih karena akan lebih cepat dikirim dan lebih hemat tempat. (Erdiansyah, U. 2014)

Oleh karena itu, manusia selalu berusaha untuk menemukan suatu cara alternatif untuk menangani permasalahan tersebut, salah satunya dengan cara kompresi. Dalam ilmu komputer, kompresi data adalah sebuah cara untuk memadatkan data sehingga hanya memerlukan ruangan penyimpanan yang lebih kecil agar lebih efisien dalam menyimpan data atau mempersingkat waktu pertukaran data tersebut. Masalah yang mendasar pada proses kompresi data adalah bagaimana proses memampatkan data tersebut, khususnya data teks agar diperoleh file teks dengan ukuran yang lebih kecil dari ukuran semula.

Dalam bidang ilmu komputer teknik kompresi ini digunakan terhadap data digital yang disebut juga kompresi data. Kompresi terhadap data dilakukan untuk mengurangi ukuran data sehingga mempercepat proses pemindahan data dan mengurangi kapasitas memori yang dibutuhkan, dimana data yang dimaksud bisa berupa file teks, gambar, suara, maupun video. (Sayood, K. 2005) Hal yang harus diperhatikan dalam kompresi data adalah time process (waktu yang berjalan pada saat data dikompresi), ratio (ukuran data setelah dikompresi) dan space savings (presentase selisih ukuran data setelah dikompresi dengan ukuran data sebelum dikompresi).

Ada banyak algoritma yang dikembangkan untuk kompresi data, namun belum ada satupun algoritma yang baik untuk mengkompresi berbagai tipe file karena karakteristik atau struktur file yang berbeda-beda. (Cormen, T. H, et al. 2009) Oleh karena itu dalam penulisan tugas akhir ini penulis ingin mengetahui bagaimana cara


(76)

kerja algoritma Ternary Comma Code yang digunakan untuk mengompresi data, sehingga data kompresi yang dihasilkan telah baik.

Untuk mengetahui bagaimana algoritma tersebut telah optimal dan efektif dalam kompresi file teks, maka penulis akan menggunakan analisis kompresi yang diukur dengan rasio kompresi (ratio of compression dan compression ratio), space savings, dan waktu yang dibutuhkan selama proses kompresi dan dekompresi.

Android sudah menjadi platform sistem operasi yang makin popular. Padahal sebenarnya, android termasuk sistem operasi „yunior‟ dibandingkan lainnya yang lebih „senior‟, seperti symbian, iOS, atau sistem operasi blackberry. Android secara sederhana bisa diartikan sebagai sebuah software yang digunakan pada perangkat mobile yang mencakup sistem operasi, middleware, dan aplikasi kunci yang dirilis oleh Google. (EMS, Tim. 2015)

1.2. Rumusan Masalah

Berdasarkan latar belakang masalah, maka rumusan masalah yang akan dibahas dalam tugas akhir ini adalah bagaimana cara kerja algoritma Ternary Comma Code dalam melakukan kompresi file teks dengan parameter rasio, waktu kompresi, waktu dekompresi, dan space savings.

1.3. Batasan Masalah

Adapun batasan masalah dalam tugas akhir ini adalah sebagai berikut : 1. Jenis file yang di kompresi adalah file text yang berekstensi txt.

2. Tidak melakukan kompresi terhadap komponen lain seperti tabel atau gambar yang terdapat di dalam file text maupun dokumen yang akan dikompresi.

3. Parameter yang akan diukur antara lain adalah rasio kompresi Ratio of Compression (RC), Compression Ratio (CR), Space savings (SS) dan waktu atau real time (ms) yang dibutuhkan selama proses kompresi dan dekompresi.

4. Kompleksitas yang akan dibahas ialah kompleksitas algoritma (T(n)) yang dinyatakan dalam big-θ (theta).


(77)

1.4. Tujuan Penelitian

Tujuan penelitian ini adalah Mengetahui kinerja kompresi dari algoritma Ternary Comma Code, waktu kompresi, waktu dekompresi, serta space savings nya.

1.5. Manfaat Penelitian

Penelitian ini diharapkan mendapatkan hasil yang bermanfaat bagi user agar dapat menggunakan kinerja algoritma Ternary Comma Code sebagai algoritma yang baik dalam mengkompresi file teks. Serta memperluas kapasitas penyimpanan data yang digunakan dengan mengurangi ukuran data yang akan disimpan.

1.6. Metodologi Penelitian

Penelitian ini menerapkan beberapa metode penelitian sebagai berikut : 1. Studi Literatur

Pada tahap ini dilakukan pengumpulan referensi yang diperlukan dalam penelitian. Hal ini dilakukan untuk memperoleh informasi dan data yang diperlukan untuk penulisan skripsi ini. Referensi yang digunakan dapat berupa buku, jurnal, artikel, makalah baik berupa media cetak maupun media internet mengenai file teks, algoritma Ternary Comma Code dan kompresi serta beberapa referensi lainnya untuk menunjang pencapaian tujuan skripsi.

2. Analisis dan Perancangan Sistem

Masalah akan dianalisis dan di identifikasi kebutuhan yang terkait serta disesuaikan dengan batasan masalah untuk mencapai tujuan. Kemudian perancangan system dilakukan dengan mendesain user interface, Unified modeling language (UML), dan struktur program sistem kompresi file.

3. Implementasi Sistem

Sistem diimplementasikan dengan menggunakan algoritma Ternary Comma Code untuk melakukan kompresi file teks berbasis android.

4. Pengujian Sistem

Pada tahap ini akan dilakukan pengujian terhadap sistem yang telah dibangun.

5. Dokumentasi Sistem

Dalam tahap dokumentasi dilakukan penyusunan laporan dari hasil analisis dan perancangan sistem dalam format penulisan penelitian.


(78)

1.7. Sistematika Penulisan

Sistematika dalam penulisan tugas akhir ini disusun menjadi beberapa bab, diantaranya yaitu :

BAB 1 : PENDAHULUAN

Bab ini berisi mengenai latar belakang masalah, rumusan masalah, batasan masalah, tujuan dan manfaat dari penelitian, metode penelitian dan sistematika penulisan.

BAB 2 : TINJAUAN PUSTAKA

Bab ini berisi mengenai teori-teori dasar dan metode yang dilakukan untuk mendukung analisis dan perancangan yang dilakukan.

BAB 3 : ANALISIS DAN PERANCANGAN SISTEM

Bab ini terdiri dari tahap analisis sistem dan desain/model perancangan dari program yang akan dibuat, dalam hal ini termasuk juga algoritma dari program tersebut.

BAB 4 : IMPLEMENTASI DAN PENGUJIAN SISTEM

Bab ini berisi mengenai implementasi dan pengujian dari program yang sebelumnya telah dirancang dan dianalisis sistemnya.

BAB 5 : KESIMPULAN DAN SARAN

Bab ini berisi kesimpulan dan hasil penelitian yang telah selesai dilakukan, juga saran atau rekomendasi guna penelitian lebih lanjut.


(79)

ABSTRAK

Saat ini pengiriman informasi secara real-time masih mengalami kendala, diantaranya adalah besarnya jumlah data yang harus dikirim melampaui kecepatan transmisi yang dimiliki oleh perangkat keras. Hal tersebut menjadi masalah, dimana jalur komunikasi di Indonesia, khususnya internet, masih berada di dalam kategori lambat dan sering bermasalah. Sehingga data yang berukuran kecil akan dipilih karena akan lebih cepat dikirim dan lebih hemat tempat. Dalam penelitian ini akan merancang sebuah aplikasi komputer berbasis Android yang dapat mengkompresi file text dan menganalisis kinerja algoritma. Agar memudahkan untuk mengirim file text lebih cepat dan hemat tempat. Kompresi file text dilakukan dengan mengkodekan teks menggunakan algoritma Ternary Comma Code, yang kemudian melakukan proses kompresi. Algoritma Ternary Comma Code, bilangan biner (basis 2) adalah didasarkan pada dua bit 0 dan 1. Demikian juga seperti bilangan ternary (basis 3) yang didasarkan pada tiga bilangan (trit) 0, 1 dan 2. Setiap trit dapat dituliskan dalam dua bit, tetapi dua bit dapat memiliki empat nilai. Sehingga, ini memungkinkan untuk bekerja dengan sistem bilangan ternary dimana masing-masing trit di wakili oleh dua bit dan dalam penjumlahan ketiga trit ada simbol ke empat yaitu comma (c). Ketika kita memasukkan (c), ini akan menjadi lebih mudah untuk membuat kode ternary comma untuk bilangan bulat. Hasil akhir dari kompresi adalah file berekstensi *.tcc yang dapat didekompresi. Keluaran dari dekompresi ini adalah sebuah file baru yang terdiri dari file header serta file body yang berisi kode-kode hasil pengkodean dan kompresi file text asli semula yang dapat disimpan dengan ekstensi file *.txt. Rasio pembanding yang digunakan adalah Ratio of Compression (RC), Compression Ratio (CR), Space Savings (SS), waktu proses kompresi dan dekompresi (ms).


(80)

IMPLEMENTATION AND ANALYSIS OF TERNARY COMMA

CODE COMPRESSION ALGORITHM IN TEXT FILE ON

ANDROID PLATFORM

ABSTRACT

Now sending information in real-time are still experiencing problems, including the large amount of data that must be sent beyond the speed of transmission which is owned by the hardware. It became a problem, which the communication lines in Indonesia, especially the Internet, is still in the category of slow and often problematic. So the data that is small will have because it will be quickly dispatched and more efficient place. In this research will be to design an Android-based computer application that can compress text files and analyzing the performance of the algorithm. To make it easier to send text files quicker and efficient place. Text file compression is done by using an algorithm to encode text Ternary Comma Code, which then performs the compression process. Ternary Comma Code algorithm, binary (base 2) numbers are based on the two bits 0 and 1. Similarly, ternary (base 3) numbers are based on the three digits (trits) 0, 1, and 2. Each trit can be encoded in two bits, but two bits can have four values. Thus, it makes sense to work with a ternary number system where each trit is represented by two bits and in addition to the three trits there is a fourth symbol, a comma (c). Once we include the (c), it becomes easy to construct the ternary comma code for the integers. The end result of the compression is a file extension * .tcc that can be decompressed. The output of this decompression is a new file that consists of a file header and body files that contain code encoding and compression results of the original text file that can be saved with the original file extension * .txt. Comparative ratios used are Ratio of Compression (RC), Compression Ratio (CR), Space Savings (SS), time compression and decompression process (ms).


(81)

IMPLEMENTASI DAN ANALISIS ALGORITMA KOMPRESI

TERNARY COMMA CODE DALAM KOMPRESI FILE

TEXT PADA PLATFORM ANDROID

SKRIPSI

SITI SOENDARI UTAMI

141421030

PROGRAM EKSTENSI S1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

MEDAN

2016


(1)

DAFTAR ISI

Halaman

Persetujuan iii

Pernyataan iv

Penghargaan v

Abstrak vii

Abstract viii

Daftar Isi ix

Daftar Tabel xi

Daftar Gambar xii

Daftar Lampiran xiv

BAB 1 PENDAHULUAN

1.1. Latar Belakang 1

1.2. Rumusan Masalah 2

1.3. Batasan Masalah 2

1.4. Tujuan Penelitian 3

1.5. Manfaat Penelitian 3

1.6. Metodologi Penelitian 3

1.7. Sistematika Penulisan 4

BAB 2 TINJAUAN PUSTAKA

2.1Kompresi Data 5

2.2Jenis Kompresi Data 6

2.3Teknik Kompresi 8

2.4Parameter Analisis Kompresi 8

2.5File Text 10

2.5.1 Format Teks 11

2.6Algoritma Ternary Comma Code 12

2.7Kompleksitas Algoritma 13

2.8Platform Android 14


(2)

BAB 3 ANALISIS DAN PERANCANGAN SISTEM

3.1Analisis Sistem 16

3.1.1 Analisis Masalah 16

3.1.2 Analisis Kebutuhan Sistem 17

3.1.3 Analisis Proses 19

3.2Pemodelan Sistem 24

3.2.1 Use Case Diagram 24

3.2.2 Activity Diagram 25

3.2.3 Sequence Diagram 27

3.3Perancangan Sistem 29

3.3.1Perancangan alur proses sistem kompresi, 29 dekompresi dan algoritma

3.3.2 Perancangan Alur Proses Untuk Membangkitkan 32 Kode Ternary Comma Code

3.3.3 Perancangan Antarmuka Sistem 32 BAB 4 IMPLEMENTASI DAN PENGUJIAN SISTEM

4.1Implementasi Sistem 39

4.1.1 Tab Home 39

4.1.2 Tab Menu 40

4.1.3 Tab Compress 41

4.1.4 Tab Decompress 42

4.1.5 Tab Help 43

4.1.6 Tab About 46

4.2 Pengujian Sistem 47

4.2.1 Pengujian proses kompresi 47 4.2.2 Pengujian proses dekompresi 50

4.3 Hasil Pengujian 52

4.4 Hasil Perhitungan Kompleksitas Big Theta (ɵ) 60 BAB 5 KESIMPULAN DAN SARAN

5.1 Kesimpulan 61

5.2 Saran 61


(3)

DAFTAR TABEL

Tabel 2.1 Algortima Ternary Comma Code dan Panjangnya 13

Tabel 3.1 Character Set 20

Tabel 3.2 String yang belum dikompresi dengan Ternary Comma Code 20 Tabel 3.3 String yang telah dikompresi dengan Ternary Comma Code 23 Tabel 4.1 Hasil Pengujian String Homogen & String Heterogen 53

menggunakan file txt dengan Ternary Comma Code


(4)

DAFTAR GAMBAR

Gambar 3.1 Diagram Ishikawa Analisis Masalah 17

Gambar 3.2 Use Case Diagram Sistem 25

Gambar 3.3 Activity Diagram Proses Kompresi 26 Gambar 3.4 Activity Diagram Proses Dekompresi 27 Gambar 3.5 Sequence Diagram Proses Kompresi 28 Gambar 3.6 Sequence Diagram Proses Dekompresi 28 Gambar 3.7 Flowchart Diagram Proses Kompresi 30 Gambar 3.8 Flowchart Diagram Proses Dekompresi 30 Gambar 3.9 Flowchart Diagram Pembentukan Algoritma 31

Ternary Comma Code (TCC)

Gambar 3.10 Form Home pada sistem 33

Gambar 3.11 Form Menu pada sistem 34

Gambar 3.12 Form Compress pada sistem 35 Gambar 3.13 Form Decompress pada sistem 36

Gambar 3.14 Form Help pada sistem 37

Gambar 3.15 Form About pada sistem 38

Gambar 4.1 Tab Home 40

Gambar 4.2 Tab Menu 41

Gambar 4.3 Tab Compress 42

Gambar 4.4 Tab Decompress 43

Gambar 4.5 Tab Help 44

Gambar 4.6 Tab Help Information Compression 45 Gambar 4.7 Tab Help Information Decompression 46

Gambar 4.8 Tab About 47

Gambar 4.9 Aplikasi Setelah File Input dan Output Ditentukan 48 Gambar 4.10 Informasi Hasil Kompresi 49 Gambar 4.11 File Ternary Comma Code Hasil Kompresi 50 Gambar 4.12 Aplikasi Setelah File Input dan Output Ditentukan 51 Gambar 4.13 Informasi Hasil Dekompresi 52


(5)

Gambar 4.14 Grafik Ratio Of Compression Terhadap String Homogen 54 Gambar 4.15 Grafik Compression Ratio Terhadap String Homogen 55 Gambar 4.16 Grafik Space Savings Terhadap String Homogen 55 Gambar 4.17 Grafik Waktu Kompresi Terhadap String Homogen 56 Gambar 4.18 Grafik Waktu dekompresi Terhadap String Homogen 56 Gambar 4.19 Grafik Ratio Of Compression Terhadap String Heterogen 57 Gambar 4.20 Grafik Compression Ratio Terhadap String Heterogen 58 Gambar 4.21 Grafik Space Savings Terhadap String Heterogen 58 Gambar 4.22 Grafik Waktu Kompresi Terhadap String Heterogen 59 Gambar 4.23 Grafik Waktu dekompresi Terhadap String Heterogen 59


(6)

DAFTAR LAMPIRAN

Halaman

A Listing Program A-1