Analisis Perbandingan Kinerja Algoritma Fixed Length Binary Encoding (Flbe) Dengan Algoritma Sequitur Dalam Kompresi File Teks

(1)

ANALISIS PERBANDINGAN KINERJA ALGORITMA FIXED LENGTH

BINARY ENCODING (FLBE) DENGAN ALGORITMA

SEQUITUR DALAM KOMPRESI FILE TEKS

SKRIPSI

PAHARA SIAGIAN

121421020

PROGRAM STUDI EKSTENSI S1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA


(2)

ANALISIS PERBANDINGAN KINERJA ALGORITMA FIXED LENGTH

BINARY ENCODING (FLBE) DENGAN ALGORITMA SEQUITUR DALAM KOMPRESI FILE TEKS

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Sarjana Ilmu Komputer

PAHARA SIAGIAN 121421020

PROGRAM STUDI EKSTENSI S1 ILMU KOMPUTER FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA MEDAN


(3)

ii

PERSETUJUAN

Judul : ANALISIS PERBANDINGAN KINERJA

ALGORITMA FIXED LENGTH BINARY ENCODING (FLBE) DENGAN ALGORITMA SEQUITUR DALAM KOMPRESI FILE TEKS

Kategori : SKRIPSI

Nama : PAHARA SIAGIAN

Nomor Induk Mahasiswa : 121421020

Program Studi : EKSTENSI S1 ILMU KOMPUTER

Fakultas : ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

Dani Gunawan ST., M.T. M. Andri Budiman, ST,

M.Comp.Sc, MEM

NIP. 19820915 201212 1 002 NIP. 19751008 200801 1 011

Diketahui/disetujui oleh

Program Studi Ekstensi S1 Ilmu Komputer Ketua,

Dr. Poltak Sihombing, M.Kom NIP. 19620217 199103 1 001


(4)

PERNYATAAN

ANALISIS PERBANDINGAN KINERJA ALGORITMA FIXED LENGTH

BINARY ENCODING (FLBE) DENGAN ALGORITMASEQUITUR DALAM

KOMPRESI FILE TEKS

SKRIPSI

Saya mengakui bahwa skripsi ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.

Medan, Januari 2015

Pahara Siagian NIM. 121421020


(5)

iv

PENGHARGAAN

Puji Syukur Penulis ucapkan ke hadirat Tuhan Yang Maha Esa, yang masih memberikan kesempatan dan kesehatan kepada Penulis sehingga Skripsi ini dapat diselesaikan dalam waktu yang telah ditetapkan.

Dalam proses penulisan Proposal Tugas Akhir ini, Penulis banyak mengalami kesulitan dan hambatan, namun berkat bantuan dan bimbingan dari berbagai pihak yang diberikan kepada Penulis, akhirnya Penulis dapat menyelesaikan Skripsi ini. Pada kesempatan ini Penulis ingin mengucapkan banyak terima kasih yang sebesar-sebesarnya kepada:

1. Bapak Prof. Dr. dr. Syahril Pasaribu, DTM&H, M.Sc(CTM), Sp.A(K) selaku Rektor Universitas Sumatera Utara.

2. Bapak Prof. Dr. Muhammad Zarlis selaku Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.

3. Bapak Dr. Poltak Sihombing, M.Kom selaku Ketua Program Studi S1 Ilmu Komputer Universitas Sumatera Utara.

4. Ibu Maya Silvi Lydia, B.Sc, M.Sc selaku Sekretaris Program Studi S1 Ilmu Komputer Universitas Sumatera Utara.

5. Bapak M. Andri Budiman, ST, M.Comp.Sc, MEM selaku Dosen Pembimbing

I yang telah memberikan bimbingan, saran dan masukan kepada Penulis dalam pengerjaan skripsi ini.

6. Bapak Dani Gunawan ST., M.Tselaku Dosen Pembimbing II yang telah memberikan bimbingan, saran dan masukan kepada penulis dalam pengerjaan skripsi ini.


(6)

7. Bapak Ade Candra, ST, M.Kom selaku Dosen Pembanding I yang telah memberikan bimbingan, saran dan masukan kepada penulis dalam pengerjaan skripsi ini.

8. Bapak Amer Sharif, S.Si, M.Kom selaku Dosen Pembanding II yang telah memberikan kritik dan saran dalam penyempurnaan skripsi ini.

9. Semua dosen dan semua pegawai di Program Studi S1 Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.

10. Terkhusus Penulis ucapkan terima kasih yang sebesar-besarnya kepada kedua Orang Tua Penulis, R.Siagian (Ayahanda) dan D.Marpaung (Ibunda) yang dengan keikhlasan dan ketulusan hatinya membesarkan, mendidik, memberikan doa restu, cinta kasih, pengorbanan, dan dukungan, baik dukungan moril maupun materil yang diberikan kepada Penulis.

11. Teman-teman mahasiswa Ekstensi S1-Ilmu Komputer stambuk 2012 yang telah memberikan semangat dan menjadi teman diskusi penulis dalam menyelesaikan skripsi ini.

12. Semua pihak yang terlibat langsung ataupun tidak langsung yang tidak dapat penulis ucapkan satu per satu yang telah membantu penyelesaian skripsi ini.

Penulis menyadari bahwa masih terdapat kekurangan pada Skripsi ini. Oleh karena itu, kepada pembaca agar kiranya memberikan kritik dan saran yang bersifat membangun demi kesempurnaan Skripsi ini. Sehingga dapat bermanfaat bagi kita semuanya.

Medan, Januari 2015 Penulis,


(7)

vi

ABSTRAK

Ukuran data yang besar mengakibatkan pemborosan memori dan lambatnya proses pemindahan ataupun duplikasi data. Ada banyak algoritma yang dikembangkan untuk kompresi data, namun belum ada yang baik untuk mengkompresi berbagai tipe file karena karakteristik atau struktur file yang berbeda-beda. Tujuan dari penelitian ini adalah untuk mengetahui perbandingan kinerja antara algoritma Fixed Length Binary

Encoding (FLBE) dengan algoritma Sequitur dalam melakukan kompresi file teks.

Pada algoritma FLBE proses kompresi dilakukan dengan mengubah nilai bit setiap karakter menjadi kode-kode blok. Sedangkan pada algoritma Sequitur terdapat digram yang akan diubah ke dalam symbol nonterminal dengan berdasarkan pada production

rule. Sampel yang digunakan pada proses pengujian yaitu file teks yang mengandung

perulangan frase (kumpulan kata yang terdapat dalam satu string) dan file teks yang tidak mengandung perulangan frase. Disimpulkan bahwa berdasarkan Ratio of

Compression (RC), Compression Ratio (CR), Space Savings (SS) dan waktu kompresi

yang diperoleh, algoritma FLBE lebih optimal dalam mengkompresi file teks yang tidak mengandung perulangan frase, sedangkan algoritma Sequitur lebih optimal dalam mengkompresi file teks yang mengandung perulangan frase.


(8)

ANALYSIS OF PERFORMANCE COMPARISON BETWEEN

FIXED LENGTH BINARY ENCODING (FLBE) ALGORITHM

AND SEQUITUR ALGORITHM IN FILE TEXT COMPRESSION

ABSTRACT

The size of large data effects a wastage of memory and the slow of removal process or the duplication of data. There are many algorithms that were developed for data compression, but there is no good for compressing a variety of file types because of the characteristic or the difference of file structures. The purpose of this research is to know the comparison of performance between FLBE algorithm and Sequitur algorithm in doing the compression of text files. In FLBE algorithm, the process of compression is done by changing the value of bits in every character into block codes. Whereas, in Sequitur algorithm there is a digram that will be changed to nonterminal symbol based on the production rule. The samples that were used in trial process were

a text files that contained of looping phrases (a collection of words contained in a string) and text files that was not contained the looping phrases. It can be concluded that based on the Ratio of Compression (RC), Compression Ratio (CR), Space Savings

(SS) and time compression that is obtained, the FLBE is more optimal in compressing

text files that is not contain of the looping phrases, while Sequitur is more optimal in compressing text files that contains of the looping phrases.


(9)

viii

DAFTAR ISI

Halaman

Persetujuan ... ii

Pernyataan ... iii

Penghargaan ... iv

Abstrak ... vi

Abstract ... vii

Daftar Isi ... viii

Daftar Tabel ... x

Daftar Gambar ... xi

Daftar Lampiran ... xiii

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.1. Kompresi Data ... 5

2.2. Fixed Length Binary Encoding (FLBE) ... 6

2.3. Sequitur ... 6

2.4. Parameter Analisis Kompresi ... 8

2.5. File Text... 9

2.6. Unified Modeling Language (UML) ... 10

BAB 3 ANALISIS DAN PERANCANGAN SISTEM 3.1. Analisis Sistem ... 13

3.1.1. Identifikasi Masalah ... 13

3.1.2. Analisis Kebutuhan Sistem ... 14

3.1.3. Analisis Proses ... 15

3.2. Pemodelan Sistem ... 22

3.2.1. DiagramUse-Case... 23

3.2.2. Diagram Activity ... 24

3.2.3. Diagram Sequence ... 31

3.2.4. Diagram Class ... 33

3.3. Perancangan Sistem ... 34

3.3.1. Bagan Alir Sistem (Flowchart) ... 34


(10)

BAB 4 IMPLEMENTASI DAN PENGUJIAN SISTEM

4.1. Implementasi Sistem ... 44

4.1.1. Frame Home... 44

4.1.2. Internal Frame Menu Compression ... 45

4.1.3. Internal Frame Menu Decompression... 46

4.1.4. Internal Frame Menu Aboutme ... 46

4.2. Pengujian Sistem ... 47

4.2.1. Pengujian Proses Kompresi ... 47

4.2.2. Pengujian Proses Dekompresi ... 49

4.3. Hasil Pengujian ... 51

4.4. Analisis Kompresi... 56

BAB 5 KESIMPULAN DAN SARAN 5.1. Kesimpulan ... 61


(11)

x

DAFTAR TABEL

Halaman

Tabel 3.1. Ukuran String Sebelum Dikompresi ... 15

Tabel 3.2. Total Bit Setelah Dikompresi menggunakan Algoritma FLBE ... 16

Tabel 3.3. Proses pada Algoritma Sequitur... 19

Tabel 3.4. Total Bit Setelah Dikompresi menggunakan Algoritma Sequitur ... 20

Tabel 4.1. Hasil Pengujian I terhadap Algoritma FLBE... 52

Tabel 4.2. Hasil Pengujian I terhadap Algoritma Sequitur ... 52

Tabel 4.3. Hasil Pengujian II terhadap Algoritma FLBE ... 54

Tabel 4.4. Hasil Pengujian II terhadap Algoritma Sequitur ... 54

Tabel 4.5. Hasil Pengujian III terhadap Algoritma FLBE ... 56

Tabel 4.6. Hasil Pengujian III terhadap Algoritma FLBE ... 56

Tabel 4.7. Hasil Pengujian I Analisis Kompresi terhadap Algoritma FLBE ... 58

Tabel 4.8. Hasil Pengujian I Analisis Kompresi terhadap Algoritma Sequitur ... 58

Tabel 4.9. Hasil Pengujian II Analisis Kompresi terhadap Algoritma FLBE ... 60

Tabel 4.10. Hasil Pengujian II Analisis Kompresi terhadap Algoritma Sequitur ... 61

Tabel 4.11. Hasil Pengujian III Analisis Kompresi terhadap Algoritma FLBE ... 63


(12)

DAFTAR GAMBAR

Halaman

Gambar 2.1. Tiga Urutan Contoh Input dan Grammar ... 8

Gambar 3.1. Diagram Ishikawa untuk Identifikasi Masalah ... 14

Gambar 3.2. Diagram Use Case Sistem ... 23

Gambar 3.3. Diagram Activity Pilih Algoritma ... 24

Gambar 3.4. Diagram Activity Buka File Teks ... 25

Gambar 3.5. Diagram Activity Simpan File Terkompresi ... 25

Gambar 3.6. Diagram Activity Kompres pada Algoritma FLBE ... 26

Gambar 3.7. Diagram Activity Kompres pada Algoritma Sequitur ... 27

Gambar 3.8. Diagram Activity Hapus ... 28

Gambar 3.9. Diagram Activity Pilih Algoritma ... 28

Gambar 3.10. Diagram Activity Buka File Terkompresi ... 29

Gambar 3.11. Diagram Activity Simpan File Teks ... 29

Gambar 3.12. Diagram Activity Dekompres ... 30

Gambar 3.13. Diagram Activity Hapus ... 31

Gambar 3.14. Diagram Sequence Kompresi Algoritma FLBE ... 31

Gambar 3.15. Diagram Sequence Kompresi Algoritma Sequitur ... 32

Gambar 3.16. Diagram Sequence Dekompresi Algoritma FLBE ... 32

Gambar 3.17. Diagram Sequence Dekompresi Algoritma Sequitur ... 33

Gambar 3.18. Diagram Class Sistem ... 33

Gambar 3.19. Flowchart Sistem Secara Umum ... 34

Gambar 3.20. Flowchart Proses FLBE ... 35

Gambar 3.21. Flowchart Proses Sequitur ... 36

Gambar 3.22. Flowchart Kompresi Algoritma FLBE ... 37

Gambar 3.23. Flowchart Kompresi Algoritma Sequitur ... 38

Gambar 3.24. Flowchart Dekompresi Algoritma FLBE ... 39

Gambar 3.25. Flowchart Dekompresi Algoritma Sequitur ... 39

Gambar 3.26. Halaman Utama ... 40

Gambar 3.27. Halaman Kompresi ... 41

Gambar 3.28. Halaman Kompresi ... 42


(13)

xii

Gambar 4.2. Internal Frame Menu Compression... 45

Gambar 4.3. Internal Frame Menu Decompression ... 46

Gambar 4.4. Internal Frame Menu Aboutme ... 46

Gambar 4.5. Kotak Dialog OpenFile ... 47

Gambar 4.6. Kotak Dialog SaveFile ... 48

Gambar 4.7. Direktori yang Telah Ditentukan ... 48

Gambar 4.8. Hasil Kompresi ... 49

Gambar 4.9. Kotak Dialog OpenFile Decompression ... 50

Gambar 4.10. Kotak Dialog SaveFile Decompression ... 50

Gambar 4.11. Direktori File Decompression ... 51

Gambar 4.12. Hasil Dekompresi ... 51

Gambar 4.13. Grafik Perbandingan Waktu Kompresi Pengujian I ... 53

Gambar 4.14. Grafik Perbandingan Waktu Dekompresi Pengujian I ... 53

Gambar 4.15. Grafik Perbandingan Waktu Kompresi Pengujian II ... 55

Gambar 4.16. Grafik Perbandingan Waktu Dekompresi Pengujian II ... 55

Gambar 4.17. Grafik Perbandingan Waktu Kompresi Pengujian III ... 57

Gambar 4.18. Grafik Perbandingan Waktu Dekompresi Pengujian III ... 57

Gambar 4.19. Grafik Perbandingan Ratio of Compression Pengujian I ... 59

Gambar 4.20. Grafik Perbandingan Compression Ratio Pengujian I ... 59

Gambar 4.21. Grafik Perbandingan Space Savings Pengujian I... 60

Gambar 4.22. Grafik Perbandingan Ratio of Compression Pengujian II ... 61

Gambar 4.23. Grafik Perbandingan Compression Ratio Pengujian II ... 62

Gambar 4.24. Grafik Perbandingan Space Savings Pengujian II ... 62

Gambar 4.25. Grafik Perbandingan Ratio of Compression Pengujian III ... 64

Gambar 4.26. Grafik Perbandingan Compression Ratio Pengujian III... 65


(14)

DAFTAR LAMPIRAN

Halaman

A Listing Program A-1


(15)

vi

ABSTRAK

Ukuran data yang besar mengakibatkan pemborosan memori dan lambatnya proses pemindahan ataupun duplikasi data. Ada banyak algoritma yang dikembangkan untuk kompresi data, namun belum ada yang baik untuk mengkompresi berbagai tipe file karena karakteristik atau struktur file yang berbeda-beda. Tujuan dari penelitian ini adalah untuk mengetahui perbandingan kinerja antara algoritma Fixed Length Binary

Encoding (FLBE) dengan algoritma Sequitur dalam melakukan kompresi file teks.

Pada algoritma FLBE proses kompresi dilakukan dengan mengubah nilai bit setiap karakter menjadi kode-kode blok. Sedangkan pada algoritma Sequitur terdapat digram yang akan diubah ke dalam symbol nonterminal dengan berdasarkan pada production

rule. Sampel yang digunakan pada proses pengujian yaitu file teks yang mengandung

perulangan frase (kumpulan kata yang terdapat dalam satu string) dan file teks yang tidak mengandung perulangan frase. Disimpulkan bahwa berdasarkan Ratio of

Compression (RC), Compression Ratio (CR), Space Savings (SS) dan waktu kompresi

yang diperoleh, algoritma FLBE lebih optimal dalam mengkompresi file teks yang tidak mengandung perulangan frase, sedangkan algoritma Sequitur lebih optimal dalam mengkompresi file teks yang mengandung perulangan frase.


(16)

ANALYSIS OF PERFORMANCE COMPARISON BETWEEN

FIXED LENGTH BINARY ENCODING (FLBE) ALGORITHM

AND SEQUITUR ALGORITHM IN FILE TEXT COMPRESSION

ABSTRACT

The size of large data effects a wastage of memory and the slow of removal process or the duplication of data. There are many algorithms that were developed for data compression, but there is no good for compressing a variety of file types because of the characteristic or the difference of file structures. The purpose of this research is to know the comparison of performance between FLBE algorithm and Sequitur algorithm in doing the compression of text files. In FLBE algorithm, the process of compression is done by changing the value of bits in every character into block codes. Whereas, in Sequitur algorithm there is a digram that will be changed to nonterminal symbol based on the production rule. The samples that were used in trial process were

a text files that contained of looping phrases (a collection of words contained in a string) and text files that was not contained the looping phrases. It can be concluded that based on the Ratio of Compression (RC), Compression Ratio (CR), Space Savings

(SS) and time compression that is obtained, the FLBE is more optimal in compressing

text files that is not contain of the looping phrases, while Sequitur is more optimal in compressing text files that contains of the looping phrases.


(17)

BAB 1

PENDAHULUAN

1.1. Latar Belakang

Kebutuhan terhadap kapasitas penyimpanan yang semakin besar merupakan penyebab munculnya berbagai teknik kompresi. Dengan melakukan kompresi, data yang besar akan berkurang ukurannya sehingga dapat menghemat kapasitas penyimpanan (Salomon, 2004). Secara sederhana teknik kompresi telah lama diterapkan manusia dalam kehidupannya, misalnya saat melipat pakaian ke dalam lemari, menyingkat kata (seperti yang menjadi yg), menata ruangan, dan lain sebagainya.

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, di mana data yang dimaksud bisa berupa file teks, gambar, suara, maupun video (Sayood, 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 (persentase 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, 2009). Oleh karena itu, dalam penelitian ini penulis akan membandingkan dua algoritma kompresi data, yaitu algoritma FLBE dan algoritma Sequitur. Kedua algoritma ini bersifat lossless (kompresi data tanpa berkehilangan) dan umumnya digunakan pada file teks.


(18)

Algoritma Fixed Length Binary Encoding (FLBE) dikenal juga sebagai kode-kode blok yang mudah untuk diimplementasikan. Pada algoritma ini simbol yang asli diubah ke dalam bentuk fixed-length code yang kemudian akan mengurangi jumlah bit simbol-simbol tersebut. Kemudahan tersebut berbanding lurus dengan proses mengubah kembali fixed-length code menjadi simbol aslinya. Sementara itu, algoritma

Sequitur merupakan algoritma yang lebih kompleks yang berdasarkan pada konsep

tata bahasa bebas konteks (context-free grammar). Di mana terdapat simbol

nonterminal dan simbol terminal yang merupakan unsur dari production rules

(aturan-aturan yang digunakan untuk membangun sebuah kalimat). Algoritma Sequitur memanfaatkan frase-frase yang berulang untuk melakukan kompresi. (Salomon & Motta, 2010)

Untuk menentukan algoritma yang lebih optimal dan lebih 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.

1.2. Rumusan Masalah

Berdasarkan latar belakang, rumusan masalah yang akan dibahas dalam penelitian ini adalah bagaimana perbandingan algoritma FLBE dan algoritma Sequitur dalam kompresi file teks?

1.3. Batasan Masalah

Agar tulisan ini tidak menyimpang dari ruang lingkup pembahasan diperlukan batasan masalah sebagai berikut:

1. Jenis data yang akan dikompresi adalah string dalam file teks (*.txt dan *.doc). 2. Tidak melakukan kompresi terhadap komponen lain seperti tabel atau gambar

yang terdapat di dalam file teks maupun dokumen yang akan dikompresi.

3. Data yang dikompresi adalah data yang mengandung pasangan simbol yang berulang.


(19)

3

5. Parameter sebagai pembanding dalam studi perbandingan ini menggunakan teknik analisis kompresi yang diukur dengan rasio kompresi (Ratio of

Compression dan Compression Ratio), space savings dan waktu yang dibutuhkan

selama proses kompresi dan dekompresi. 6. Menggunakan bahasa pemrograman Java.

1.4. Tujuan Penelitian

Tujuan dari penelitian ini adalah:

1. Mengetahui algoritma mana yang lebih optimal dalam kompresi file teks.

2. Mengetahui kelebihan dan kekurangan dari algoritma FLBE dan algoritma

Sequitur dalam kompresi file teks.

1.5. Manfaat Penelitian

Manfaat penelitian ini diharapkan dapat membantu masyarakat dalam kompresi dan dekompresi data dengan melihat hasil perbandingan algoritma FLBE dan algoritma

Sequitur serta dapat dijadikan sebagai referensi bagi penulis lain bila ingin melakukan

penelitian terkait dengan kompresi data.

1.6. Metodologi Penelitian

Metodologi penelitian yang digunakan dalam penelitian ini adalah: 1. Studi Literatur

Pada tahap studi literatur dilakukan pengumpulan buku, jurnal, e-book, artikel, makalah, maupun situs internet yang membahas algoritma Fixed Length Binary

Encoding (FLBE) dan algoritma Sequitur untuk dipelajari lebih lanjut.

2. Analisis dan Perancangan Sistem

Pada tahap analisis dan perancangan sistem akan dilaksanakan perancangan

flowchart, antarmuka, UML dan perancangan sistem analisis perbandingan

kompresi menggunakan algoritma Fixed Length Binary Encoding (FLBE) dan algoritma Sequitur.


(20)

3. Implementasi Sistem

Pada tahap implementasi sistem ini dilakukan implementasi terhadap hasil analisis dan perancangan dengan cara melakukan penulisan program.

4. Pengujian Sistem

Dalam tahap pengujian sistem dilakukan pengujian terhadap sistem yang telah dibangun.

5. Dokumentasi

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

1.7. Sistematika Penulisan

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

BAB 1: PENDAHULUAN

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

BAB 2: LANDASAN TEORI

Bab ini berisi mengenai teori-teori yang digunakan untuk mendukung penulisan penelitian, selain itu dalam bab 2 juga dijelaskan mengenai metode yang digunakan dalam penelitian.

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 dari hasil penelitian yang telah selesai dilakukan, juga saran atau rekomendasi guna penelitian lebih lanjut.


(21)

BAB 2

TINJAUAN PUSTAKA

2.1. Kompresi Data

Kompresi data adalah proses mengubah sebuah aliran data input menjadi aliran data baru yang memiliki ukuran lebih kecil. Aliran yang dimaksud adalah berupa file ataupun buffer dalam memori. Kebutuhan terhadap kompresi data dipengaruhi oleh dua alasan, yaitu kecenderungan manusia untuk mengumpulkan data dan kebutuhan terhadap proses transfer data yang cepat. Karena itu metode-metode untuk mengkompresi data semakin berkembang. (Salomon, 2004)

Terdapat banyak metode untuk kompresi data. Metode-metode tersebut lahir dari ide yang berbeda-beda, cocok untuk berbagai tipe data, dan menghasilkan output yang berbeda-beda. Namun, prinsip dasar yang menjadi dasar tiap metode adalah sama, yaitu mengkompresi data dengan menghilangkan redundancy dari data asli. (Salomon, 2004)

Lossy dan Lossless Compression adalah pengelompokan metode kompresi

berdasarkan keutuhan data. Lossy Compression menghilangkan beberapa data untuk memperoleh kompresi yang lebih baik, seperti Linear Predictive Coding, A-Law

Algorithm, Mu-Law Algorithm, Fractal Compression, dan lain-lain. Ketika proses

dekompresi dilakukan, maka output yang dihasilkan tidak sama dengan data aslinya. Metode kompresi ini lebih efektif untuk mengkompresi data gambar, video, atau audio. Sedangkan Lossless Compression tidak menghilangkan data sama sekali, sehingga cocok untuk mengkompresi data berupa teks. Yang termasuk Lossless Compression adalah Burrows-Wheeler, DEFLATE, LZW, FLBE, VLBE, Huffman,


(22)

2.2. Fixed Length Binary Encoding (FLBE)

Secara matematis kode disebut juga pemetaan. Sebuah kode memetakan symbol tunggal maupun string dari symbol menjadi sebuah codeword (bitstring). Proses ini disebut juga encoding dan proses sebaliknya disebut decoding. (Salomon, 2007)

Kode dapat mengandung fixed maupun variable length, dan dapat bersifat statis maupun dinamis. Kode statis merupakan kode yang tidak dapat berubah-ubah, seperti ASCII dan Unicode. Sementara kode dinamis bervariasi dari waktu ke waktu, semakin banyak data yang dibaca dan diproses, maka semakin banyak pula probabilitas yang didapatkan dari sebuah symbol. Algoritma Huffman merupakan contoh dari kode tersebut. (Salomon, 2007)

Algoritma FLBE dikenal juga sebagai kode-kode blok. Kemudahan dalam mengubah simbol yang asli ke dalam bentuk fixed-length code menjadikan algoritma ini mudah untuk diimplementasikan ke dalam software. Kemudahan tersebut berbanding lurus dengan proses mengubah kembali fixed-length code menjadi simbol aslinya. (Salomon, 2007)

FLBE akan mengambil karakter yang terdapat dalam string yang ingin

dikompresi, kemudian menghitung frekuensi (jumlah kemunculan karakter pada

string). FLBE mengubah bit karakter menjadi fixed-length code sehingga

menghasilkan String Bit yang baru. String Bit inilah yang merupakan hasil kompresi dari algoritma FLBE.

2.3. Sequitur

Algoritma Sequitur merupakan algoritma yang berdasarkan pada konsep tata bahasa bebas konteks (context-free grammar). Pada algoritma ini dikenal simbol nonterminal dan simbol terminal. Kedua jenis simbol tersebut merupakan unsur dari production

rules (aturan-aturan yang digunakan untuk membangun sebuah kalimat). Sebuah

simbol nonterminal diletakkan di sebelah kiri dan sebuah string simbol terminal dan

nonterminaldi sebelah kanan. Simbol nonterminal di sebelah kiri menjadi nama dari


(23)

7

Algoritma Sequitur membangun tata bahasanya dengan menggunakan 2 prinsip, yaitu :

1. Digram Uniqueness, tidak ada pasangan simbol yang berdekatan yang muncul lebih dari satu.

2. Semua aturan harus digunakan lebih dari satu kali dan aturan yang hanya digunakan sekali harus diabaikan atau ditiadakan.

Kedua aturan ini dapat dilihat pada gambar 2.2, di mana terdapat 3 contoh string yang dikompresi menggunakan metode Sequitur. Input S sebelah kiri dari gambar 2.2 bagian (a) sudah merupakan sebuah tata bahasa yang mengandung frase bc yang berulang sehingga frase bc dijadikan sebagai production rule. Frase bc kemudian diubah menjadi simbol nonterminal A. Perubahan tersebut menghasilkan dua aturan

grammar, di mana aturan pertama merupakan input yang redundancy-nya dihilangkan

dan aturan kedua merupakan simbol A yang menggantikan digram bc.

Pada gambar 2.2 bagian (b) input S sebelah kiri mengandung redundancy abcdbc yang kemudian diubah ke dalam simbol nonterminal A. Simbol nonterminal A mengandung redundancy bc yang juga diubah ke dalam simbol nonterminal B. Gambar 2.2 bagian (c) menunjukkan bagaimana prinsip kedua dari algoritma Sequitur. Karena simbol nonterminal B yang mengandung simbol aA hanya muncul satu kali, maka simbol tersebuh diabaikan. Demikian pula dengan simbol C yang mengandung BdA yang juga hanya muncul sekali. Sehingga mengubah simbol abcdbc menjadi simbol nonterminal A adalah lebih optimal.


(24)

Gambar 2.2: tiga urutan contoh input dan grammar (Salomon, 2004)

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 :

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

Ratio of Compression (RC) adalah nilai perbandingan antara ukuran bit data

sebelum dikompresi dengan ukuran bit data yang telah dikompresi. Secara matematis dapat dituliskan sebagai berikut:

=

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

Compression Ratio (CR) adalah persentase perbandingan antara data yang

sudah dikompresi dengan data yang belum dikompresi. Secara matematis dapat dituliskan sebagai berikut:


(25)

9

3. Space Savings (SS)

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

= −

4. Waktu kompresi dan dekompresi

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 Dteks yang terdiri dari karakter, angka dan tanda baca. (Pramilo, 2008)

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

1. Format data teks

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


(26)

teks. Saat ini perangkat lunak yang paling banyak digunakan untuk memanipulasi format data ini adalah Notepad. (Pramilo, 2008)

2. Format data dokumen

Doc merupakan ekstensi arsip dokumen perangkat lunak Microsoft Word yang paling banyak digunakan dalam penulisan laporan, makalah dan sebagainya. Doc merupakan jenis teks terformat yang tidak hanya dapat mengatur tampilan teks seperti styles (font, ukuran huruf dan sebagainya), namun juga dapat menyisipkan gambar. Kekurangan format teks dokumen ini terletak pada ukuran datanya yang besar. (Pramilo, 2008)

2.6. Unified Modeling Language (UML)

Unified Modeling Language (UML) adalah sebuah “bahasa” yang telah menjadi

standar dalam industri untuk visualisasi, merancang dan mendokumentasikan sistem piranti lunak. UML menawarkan sebuah standar untuk merancang model sebuah sistem. (Yasin, 2012)

Semua jenis aplikasi piranti lunak dapat dimodelkan menggunakan UML. Tetapi karena UML juga menggunakan class dan operation dalam konsep dasarnya, maka UML lebih cocok untuk penulisan piranti lunak dalam bahasa-bahasa berorientasi objek seperti C++, Java, C# atau VB.NET. Walaupun demikian, UML tetap dapat digunakan untuk modeling aplikasi procedural dalam VB atau C. Seperti bahasa-bahasa lainnya, UML mendefinisikan notasi dan syntax/semantik. Notasi UML merupakan sekumpulan bentuk khusus untuk menggambarkan berbagai diagram piranti lunak. Setiap bentuk memiliki makna tertentu, dan UML syntax mendefinisikan bagaimana bentuk-bentuk tersebut dapat dikombinasikan. Notasi UML terutama diturunkan dari 3 notasi yang telah ada sebelumnya: Grady Booch

OOD (Object-Oriented Design), Jim Rumbaugh OMT (Object Modeling Technique),


(27)

11

UML masih terus dikembangkan hingga saat ini. UML 2.5 merupakan versi terbaru yang dikeluarkan pada bulan Oktober 2012. Dalam penelitian ini penulis akan menggunakan 4 jenis UML, diantaranya:

1. Use Case Diagram

Use case diagram menggambarkan fungsionalitas yang diharapkan dari

sebuah sistem. Yang ditekankan adalah “apa” yang diperbuat sistem, dan bukan “bagaimana. Use case memiliki unsur aktor, sistem, use case,

association, generalization. Aktor merupakan sebuah entitas manusia atau

mesing yang berinteraksi dengan sistem untuk melakukan pekerjaan-pekerjaan tertentu.(Yasin, 2012)

2. Activity Diagram

Activity diagram menggambarkan berbagai alir aktivitas dalam sistem yang

sedang dirancang, bagaimana masing-masing alir berawal, decision yang mungkin terjadi, dan bagaimana mereka berakhir. Berbeda dengan use

case, activity menggambarkan proses yang berjalan. Unsur yang terdapat

pada activity adalah initial node (lingkaran hitam), aktivitas (segiempat dengan sudut membulat), decision (belah ketupat), fork dan join (titik sinkronisasi yang dapat berupa titik, garis horizontal atau vertikal), activity

final (lingkaran hitam di dalam lingkaran kosong). (Yasin, 2012) 3. Sequence Diagram

Sequence diagram menggambarkan interaksi antarobjek di dalam dan di

sekitar sistem berupa message yang digambarkan terhadap waktu.

Sequence diagram terdiri dari dimensi vertikal (waktu) dan dimensi

horizontal (objek-objek yang terkait). Sequence diagram digunakan untuk menggambarkan skenario atau rangkaian langkah-langkah yang dilakukan sebagai respons dari sebuah event untuk menghasilkan output tertentu. Unsur yang terdapat dalam sequence adalah aktor, lifeline vertikal,


(28)

4. Class Diagram

Class diagram adalah sebuah spesifikasi yang jika diinstansiasi akan

menghasilkan sebuah objek dan merupakan inti dari pengembangan dan

desain berorientasi objek. Class menggambarkan keadaan

(atribut/property) suatu sistem, sekaligus menawarkan layanan untuk memanipulasi keadaan tersebut (metoda/fungsi). Class diagram

menggambarkan struktur dan deskripsi class, package dan objek beserta hubungan satu sama lain seperti containment, pewarisan, asosiasi, dan lain-lain. Dalam Class diagram terdapat tiga area pokok, yaitu Nama (dan


(29)

BAB 3

ANALISIS DAN PERANCANGAN SISTEM

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. Identifikasi 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 perbandingan algoritma FLBE dan algoritma Sequitur dalam mengkompresi file teks dengan menggunakan analisis kompresi. File teks yang akan digunakan dalam penelitian ini adalah file *.txt dan file *.doc. Identifikasi masalah pada penelitian ini adalah sebagai berikut:

1. People

Manusia suka mengumpulkan data dalam jumlah besar. (Salomon, 2004) 2. Metode

Menurut Cormen (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 dibandingkan adalah algoritma FLBE dan algoritma Sequitur.


(30)

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.

Ukuran File Teks besar dan Pemborosan dalam menggunakan Media

Penyimpanan Banyak algoritma untuk

ko mp resi data

Suka mengumpulkan data Software untuk ko mp resi

data belum optimal

Gambar 3.1: Diagram Ishikawa untuk identifikasi masalah

3.1.2. Analisis Kebutuhan Sistem

Setelah masalah diperoleh melalui tahap identifikasi masalah, maka perlu dilakukan analisis kebutuhan sistem untuk memahami apa saja yang diperlukan untuk membangun sistem tersebut. Pada tahap ini terdapat kebutuhan sistem terdiri dari 2 jenis kebutuhan yaitu kebutuhan fungsional dan kebutuhan non-fungsional.

1. Kebutuhan fungsional

Kebutuhan fungsional adalah kebutuhan yang berisi proses-proses apa saja yang akan terdapat dalam sistem. Adapun kebutuhan fungsional tersebut adalah :


(31)

15

b. Sistem dapat mengkompresi data file teks (*.txt dan *.doc) dengan algoritma FLBE.

c. Sistem dapat mengkompresi data file teks (*.txt dan *.doc) dengan algoritma Sequitur.

d. Sistem dapat mendekompresi data terhadap hasil kompresi dengan algoritma FLBE.

e. Sistem dapat mendekompresi data terhadap hasil kompresi dengan algoritma Sequitur.

2. Kebutuhan non-fungsional

Kebutuhan non-fungsional adalah kebutuhan yang berisi properti prilaku yang dimiliki oleh sistem. Beberapa kebutuhan non fungsional yang dimaksud adalah:

a. Data penelitian yang akan digunakan dalam sistem. b. Desain dan waktu pengerjaan.

c. Sistem operasi Microsoft Windows 7 dan Netbeans 7.4.

d. Kemudahan dalam penggunaan dan tampilan (interface) yang sederhana.

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


(32)

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


(33)

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


(34)

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


(35)

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


(36)

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


(37)

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


(38)

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

3.2. Pemodelan Sistem

Pembuatan model sistem merupakan langkah awal yang penting dalam membangun sistem. Memodelkan suatu sistem berarti membentuk atau menggambarkan sebuah model berdasarkan kebutuhan suatu sistem yang akan dibangun. Dalam tahap pemodelan ini digunakan UML diagram (Use-Case Diagram, Activity Diagram,

Sequence Diagram dan Class Diagram) yang akan menggambarkan sistem secara


(39)

23

3.2.1. Diagram Use-Case

Diagram Use Case menggambarkan fungsionalitas yang diharapkan dari sebuah sistem. Berikut diagram use case sistem yang akan dibangun.

Gambar 3.2: Diagram Use Case Sistem

Diagram Use Case pada gambar 3.2 memperlihatkan bahwa User dapat melakukan proses kompresi dan dekompresi. Pada proses kompresi, User memilih algoritma yang mana yang akan digunakan untuk proses kompresi. User kemudian memilih file yang akan dikompresi dengan open file lalu menentukan direktori penyimpanan file hasil kompresi dengan save file. Hasil file yang terkompresi akan tampil dan User dapat membersihkan informasi tersebut.

Pada proses dekompresi, User membuka file hasil kompresi kemudian menentukan direktori file dekompresi. Informasi file terdekompresi akan tampil dan dapat dibersihkan kembali dengan memilih proses clear.


(40)

3.2.2. Diagram Activity

Diagram Activity menggambarkan berbagai alir aktivitas dalam sistem yang sedang dirancang, bagaimana masing-masing alir berawal, decision yang mungkin terjadi, dan bagaimana mereka berakhir. Berikut ini adalah diagram Activity pada sistem yang akan dibangun.

1. Diagram Activity pada proses kompresi

Pada proses kompresi aktivitas-aktivitas yang berlangsung dapat digambarkan sebagai berikut.

a. Diagram Activity Pilih Algoritma

Diagram Activity pilih algoritma menunjukkan bagaimana user memilih akan melakukan proses kompresi menggunakan algoritma FLBE atau algoritma

Sequitur. Proses tersebut digambarkan pada gambar 3.3.

Gambar 3.3: Diagram Activity Pilih Algoritma

b. Diagram Activity Buka File Teks

Setelah memilih algoritma, user selanjutnya membuka file yang ingin dikompresi menggunakan algoritma tersebut dengan format *.txt atau *.doc.


(41)

25

Gambar 3.4: Diagram Activity Buka File Teks

c. Diagram Activity Simpan File Terkompresi

Dalam proses ini, user memilih direktori tempat penyimpanan file hasil kompresi.

Gambar 3.5: Diagram Activity Simpan File Terkompresi

d. Diagram Activity Kompres bila algoritma yang dipilih FLBE

Diagram Activity ini menggambarkan bagaimana sistem melakukan proses kompresi menggunakan algoritma FLBE. Dalam proses ini sistem akan


(42)

menghasilkan keluaran berupa file header (*.h) dan file flbe (*.flb). Kode yang diperoleh melalui proses algoritma FLBE ditulis ke dalam file header (*.h) yang akan digunakan saat proses dekompresi, sementara teks hasil kompresi ditulis ke dalam file flbe (*.flb).


(43)

27

e. Diagram Activity Kompres bila algoritma yang dipilih Sequitur

Diagram Activity ini menggambarkan bagaimana sistem melakukan proses kompresi menggunakan algoritma Sequitur. Dalam proses ini sistem akan menghasilkan keluaran berupa file header (*.h) dan file sequitur (*.sqr). Dalam

file header (*.h) ditulis rule yang akan digunakan saat proses dekompresi,

sementara teks hasil kompresi ditulis ke dalam file sequitur (*.sqr).


(44)

f. Diagram Activity Hapus

Proses ini digunakan untuk membersihkan hasil proses yang telah dijalankan.

Gambar 3.8: Diagram Activity Hapus

2. Diagram Activity pada proses dekompresi

Pada proses dekompresi aktivitas-aktivitas yang berlangsung dapat digambarkan sebagai berikut.

a. Diagram Activity Pilih Algoritma


(45)

29

b. Diagram Activity Buka File Terkompresi

Gambar 3.10: Activity Diagram OpenFileCompressed

c. Diagram Activity Simpan File Teks


(46)

d. Diagram Activity Dekompres

Diagram Activity ini menggambarkan bagaimana sistem melakukan proses dekompresi.


(47)

31

e. Diagram Activity Hapus

Gambar 3.13: Diagram Activity Hapus

3.2.3. Diagram Sequence

Diagram Sequence menggambarkan interaksi antarobjek di dalam dan di sekitar sistem berupa message yang digambarkan terhadap waktu. Berikut ini adalah

sequence diagram pada sistem yang akan dibangun.

1. Diagram Sequence pada proses kompresi

Pada proses kompresi diagram sequence dapat digambarkan sebagai berikut. a. Diagram Sequence Kompresi pada Algoritma FLBE


(48)

b. Diagram Sequence Kompresi pada Algoritma Sequitur

Gambar 3.15: Diagram Sequence Kompresi Algoritma Sequitur

2. Diagram Sequence pada proses dekompresi

Pada proses kompresi diagram sequence dapat digambarkan sebagai berikut.

a. Diagram Sequence Dekompresi pada Algoritma FLBE


(49)

33

b. Diagram Sequence Dekompresi pada Algoritma Sequitur

Gambar 3.17: Diagram Sequence Dekompresi Algoritma Sequitur

3.2.4. Diagram Class

Diagram Class menggambarkan keadaan (atribut/property) suatu sistem, sekaligus menawarkan layanan untuk memanipulasi keadaan tersebut (metoda/fungsi), serta menggambarkan relasi antar class.


(50)

3.3. Perancangan Sistem

Tahap perancangan sistem merupakan tahap di mana sistem akan dirancang atau didesain sesuai dengan hasil analisis sistem. Dalam perancangan sistem terdapat dua bagian yaitu bagian perancangan bagan alir sistem dan perancangan antarmuka sistem.

3.3.1. Bagan Alir Sistem (Flowchart)

Flowchart digunakan untuk menggambarkan urutan proses secara mendetail dan

hubungan antarproses. Berikut adalah flowchart dari sistem yang akan dirancang. 1. Flowchart sistem secara Umum


(51)

35

2. Flowchart proses FLBE


(52)

3. Flowchart proses Sequitur

Mula i

Int n = text.length; Int count = 0; String nval = ””; String dval = ””; String substr = “”; List digram = new ArrayList;

Map rule = new HashMap; String newstr = new StringBuffer;

String text;

Int i = 0

Int j = 0

substr = text.substring(j,j+2); count = (text.length() - text.replace(substr, "").length())/

2;

count > 1

ya j = n; text=text.replaceAll(substr, nval); rule.put(nval, substr); count>1 i++ i<n j++

Int k = 0

substr = text.substring(k,k+2); count = (text.length() -

text.replace(substr, "").length())/2;

String newsubstr = substr.replace(nval, rule.get(nval).toString()); text=text.replaceAll(substr, nval);

k = -1; text2.indexOf(nval)==-1

ya String text2 = text.replace(substr, ""); ya

j < n tidak

ya

k < text.length ya k++ tidak tidak tidak tidak Selesai ya tidak


(53)

37

4. Flowchart kompresi algoritma FLBE

Flowchart kompresi ini menunjukkan bagaimana proses kompresi algoritma FLBE pada sistem berjalan. Flowchart dapat dilihat pada gambar 3.22.

Mulai

Hitung jumlah dan frekuensi kemunculan karakter Simpan dalam character dan frequency.

Buat tabel kode FLBE

Tambahkan Padding dan Flagging di akhir Bit String.

Melakukan Proses Encode pada Bit String.

Selesai String text; List character; List frequency;

Membuat bit string dari tabel kode

berdasarkan character. Baca String dari file input *.txt atau *.doc dan simpan

ke variabel text.

Membuat File output *.h dan *.flb

Gambar 3.22: Flowchart Kompresi Algoritma FLBE

5. Flowchart Kompresi algoritma Sequitur

Flowchart kompresi ini menunjukkan bagaimana proses kompresi algoritma Sequitur pada sistem berjalan. Flowchart dapat dilihat pada gambar 3.23.


(54)

Mulai

Hitung jumlah pasangan karakter yang muncul lebih dari 2 kali lalu simpan ke dalam

digram dan berikan simbol pada nonterm (A-Z)

Buat List rule

Selesai String text; List digram; List nonterm String[] rule;

Tukar digram ke simbol nonterm Baca String dari file input *.txt atau *.doc dan simpan

ke variabel text.

Membuat File output *.h dan *.sqr

Gambar 3.23: Flowchart Kompresi Algoritma Sequitur

6. Flowchart dekompresi algoritma FLBE

Flowchart dekompresi ini menunjukkan bagaimana proses dekompresi algoritma


(55)

39

Mulai

Baca code dan character dari file header *.h dan simpan ke variabel code dan

character.

Melakukan Proses Decode pada Bit String.

Membuat File output Hasil dekompresi *.txt atau *.doc

Selesai String text; List character;

String[] code;

Mengubah Bit String menjadi String berdasarkan

character dan code Baca Bit String dari file input

*.flb dan simpan ke variabel text.

Gambar 3.24: Flowchart Dekompresi Algoritma FLBE

7. Flowchart dekompresi algoritma Sequitur

Flowchart dekompresi ini menunjukkan bagaimana proses dekompresi algoritma

Sequitur pada sistem berjalan. Flowchart dapat dilihat pada gambar 3.25. Mulai

Baca rule dari file header *.h dan simpan ke variabel nonterm.

Melakukan Proses Pencocokan text dengan

rule.

Membuat File output Hasil dekompresi *.txt atau *.doc

Selesai String text; List nonterm;

String[] rule;

Mengubah simbol nonterminal menjadi digram

berdasarkan rule Baca string dari file input

*.sqr dan simpan ke variabel text.


(56)

3.3.2. Antarmuka Sistem (Interface)

Antarmuka sistem menggambarkan bagaimana perangkat lunak, sistem, dan user berinteraksi. Pada sistem ini terdapat 3 form, di antaranya form halaman utama, form compression, dan form decompression.

1. Form halaman utama

Pada form halaman utama terdapat dua menu (compression dan decompression), dan tiga submenu (compress, exit pada menucompression dan decompress pada

menudecompression).

Gambar 3.26: Halaman Utama Keterangan:

1. Merupakan Title dari JFrame.

2. Merupakan JMenu untuk membuka SubMenuCompression yaitu Compress,

Exit.

3. Merupakan SubMenu untuk membuka halaman Compression. 4. Merupakan SubMenu untuk menutup sistem.

5. Merupakan JMenu untuk membuka SubMenuDecompression yaitu

Decompress.


(57)

41

7. Merupakan JMenu untuk membuka SubMenuAboutme yaitu Author. 8. Merupakan SubMenu untuk menampilkan halaman Author.

9. Merupakan Background sistem.

2. Form kompresi

Pada form kompresi adalah form yang digunakan untuk melakukan proses kompresi. Tampilan halaman kompresi dapat dilihat pada gambar 3.27.

COMPRESSION

Result FLBE Sequitur

Input Text File Open File Header Save

JTextField JTextField

….. …..

Compress Clear

JTextArea

2

Chose Algorithm 1

3

Close

FLBE Sequitur

JTextArea

4 5 6

7 8

Gambar 3.27: Halaman Kompresi Keterangan:

1. Merupakan menu yang digunakan untuk memilih algoritma yang akan digunakan untuk proses kompresi dengan menggunakan JRadioButton. 2. Merupakan JButton untuk membuka direktori open file.

3. Merupakan JButton untuk membuka direktori save file. 4. Merupakan JButton untuk memproses kompresi file.

5. Merupakan JButton untuk membersihkan informasi data yang tampil pada


(58)

6. Merupakan JButton untuk menutup form compression.

7. Merupakan JTextArea untuk menampilkan informasi file yang dikompresi menggunakan algoritma FLBE.

8. Merupakan JTextArea untuk menampilkan informasi file yang dikompresi menggunakan algoritma Sequitur.

3. Form Dekompresi

Pada form dekompresi adalah form yang digunakan untuk melakukan proses dekompresi. Tampilan halaman dekompresi dapat dilihat pada gambar 3.28.

DECOMPRESSION

Result FLBE Sequitur

Input Compressed File

Open (*.flb or *.sqr) JTextField

JTextField

….. …..

Decompress Clear

JTextArea

2

Chose Algorithm 1

3

Close

FLBE Sequitur

JTextArea

4 5 6

7 8

Save File

Gambar 3.28: Halaman Dekompresi Keterangan:

1. Merupakan menu yang digunakan untuk memilih algoritma yang akan digunakan untuk proses kompresi dengan menggunakan JRadioButton. 2. Merupakan JButton untuk membuka direktori open file yang telah dikompresi. 3. Merupakan JButton untuk membuka direktori save file.


(59)

43

5. Merupakan JButton untuk membersihkan informasi data yang tampil pada

form.

6. Merupakan JButton untuk menutup form decompression.

7. Merupakan JTextArea untuk menampilkan informasi file yang dikompresi menggunakan algoritma FLBE.

8. Merupakan JTextArea untuk menampilkan informasi file yang dikompresi menggunakan algoritma Sequitur.


(60)

BAB 4

IMPLEMENTASI DAN PENGUJIAN SISTEM

4.1. Implementasi Sistem

Implementasi sistem merupakan tahap dimana sistem akan dibangun sesuai dengan hasil analisis dan perancangan sistem pada bab 3. Dalam penelitian ini, Penulis menggunakan bahasa pemrograman Java dengan JDK (Java Development Kit) versi 1.7 dan dengan beberapa library tambahan menggunakan software Netbeans IDE 7.4.

Terdapat empat frame pada sistem ini, yakni satu frame utama dan tiga

internal frame. Di mana frame utama adalah merupakan tampilan awal program dan

tiga internal frame merupakan frame menu-menu pada sistem.

4.1.1. Frame Home

Frame home adalah frame yang pertama kali muncul pada saat aplikasi dijalankan. Frame ini memiliki menu bar yang terdiri dari tiga menu yaitu menu Compression,

menu Decompression, dan menu Aboutme. Masing-masing menu memiliki sub menu yaitu menu Compression dengan sub menu Compress dan sub menu Exit, menu

Decompression dengan sub menu Decompress, menu Aboutme dengan sub menu Author. Juga terdapat image yang berperan sebagai background sistem. Frame home


(61)

45

Gambar 4.1: Frame Home

4.1.2. Internal Frame Menu Compression

Internal Frame ini merupakan frame yang digunakan untuk melakukan proses

kompresi. Pada frame ini terdapat fungsi-fungsi untuk melakukan kompresi file teks. Hasil pada kompresi dapat dilihat pada text area, di mana terdapat dua text area yang ditujukan untuk melihat hasil perbandingan kedua algoritma. Internal Frame Menu

Compression dapat dilihat pada Gambar 4.2.


(62)

4.1.3. Internal Frame Menu Decompression

Internal Frame ini merupakan frame yang digunakan untuk melakukan proses

dekompresi. Pada frame ini terdapat fungsi-fungsi untuk melakukan dekompresi terhadap file hasil kompresi. Hasil pada dekompresi dapat dilihat pada text area.

Internal Frame Menu Compression dapat dilihat pada Gambar 4.3.

Gambar 4.3: Internal Frame Menu Decompression

4.1.4. Internal Frame Menu About me

Internal Frame ini merupakan frame yang digunakan untuk menampilkan informasi

tentang Penulis. Internal Frame Menu Aboutme dapat dilihat pada Gambar 4.4.


(63)

47

4.2. Pengujian Sistem

Pengujian sistem merupakan tahap di mana sistem akan diuji untuk mengidentifikasi apakah sudah sesuai dengan apa yang dirancang pada tahap analisis dan perancangan sistem. Pengujian ini dilakukan pada file *.txt dan *.doc. Pengujian ini dibagi menjadi dua, yaitu pengujian proses kompresi dan pengujian proses dekompresi.

4.2.1. Pengujian Proses Kompresi

Proses kompresi dimulai dengan memilih menu Compression yang terdapat pada

menu bar halaman utama. Setelah internal frame Compression aktif, maka dilakukan

langkah-langkah berikut:

1. Pilih algoritma yang akan digunakan pada radio button yang telah disediakan pada halaman Compression.

2. Tentukan direktori file yang ingin dikompresi dengan menekan tombol pada

open file. Perhatikan gambar 4.5.

Gambar 4.5: Kotak Dialog OpenFile

3. Tentukan direktori penyimpanan file terkompresi dengan menekan tombol pada save file. Perhatikan gambar 4.6.


(64)

Gambar 4.6: Kotak Dialog SaveFile

4. Setelah menentukan direktori pada tahap kedua dan ketiga, maka direktori akan tampil pada masing-masing text field, seperti yang terlihat pada gambar 4.7.

Gambar 4.7: Direktori yang Telah Ditentukan

5. Tahap selanjutnya adalah melakukan kompresi dengan menekan tombol

Compress. Hasil dari kompresi akan muncul pada text area yang telah


(65)

49

Gambar 4.8: Hasil Kompresi

Proses kompresi ini akan menghasilkan dua file output, file header (*.h) dan

file hasil kompresi (*.flb atau *.sqr). File header merupakan tempat di mana kode dari

algoritma FLBE dan rule dari algoritma Sequitur disimpan, dan file hasil kompresi merupakan file dari string hasil kompresi. Meskipun terdapat dua file pada proses kompresi, yang digunakan untuk menghitung rasio kompresi hanya file hasil kompresi (*.flb atau *.sqr).

4.2.2. Pengujian Proses Dekompresi

Proses dekompresi dimulai dengan memilih menu Decompression yang terdapat pada

menu bar halaman utama. Setelah internal frame Decompression aktif, maka

dilakukan langkah-langkah berikut:

1. Pilih algoritma yang akan digunakan pada radio button yang telah disediakan pada halaman Decompression.

2. Tentukan direktori file yang ingin didekompresi dengan menekan tombol pada


(66)

Gambar 4.9: Kotak Dialog OpenFile Decompression

3. Tentukan direktori penyimpanan file terkompresi dengan menekan tombol pada save file. Perhatikan gambar 4.10.

Gambar 4.10: Kotak Dialog SaveFile Decompression

4. Setelah menentukan direktori pada tahap kedua dan ketiga, maka direktori akan tampil pada masing-masing text field, seperti yang terlihat pada gambar 4.11.


(67)

51

Gambar 4.11: Direktori File pada Decompression

5. Menekan tombol Decompress untuk melakukan proses dekompresi. Perhatikan gambar 4.12.


(68)

4.3. Hasil Pengujian

Pengujian ini dilakukan terhadap dua jenis string, yaitu file teks yang tidak mengandung perulangan frase dan file teks yang mengandung perulangan frase. Frase yang dimaksud adalah kumpulan kata dalam satu string.

Pengujian pertama dilakukan terhadap 10 file yang tidak mengandung perulangan frase dengan ukuran file yang berbeda-beda, pengujian kedua dilakukan terhadap 10 file yang mengandung perulangan frase dengan ukuran file yang berbeda-beda, dan pengujian ketiga dilakukan terhadap 15 file yang mengandung perulangan frase dengan panjang frase yang berbeda-beda. Hasil pengujian kompresi dan dekompresi ini dapat dilihat pada tabel 4.1, 4.2, 4.3, 4.4, 4.5, 4.6.

Tabel 4.1. Hasil Pengujian I terhadap Algoritma FLBE No Ukuran

File (kb)

Uncompressed Bit (bit)

Compressed Bit (bit)

Compression Time (ms)

Decompression Time (ms)

1 1 7312 4584 31 16

2 2 13672 8560 63 16

3 3 21880 13688 156 16

4 4 30048 18792 297 16

5 5 38264 23928 499 16

6 6 46504 29080 702 16

7 7 54704 34200 967 15

8 8 62896 39320 1264 16

9 9 69552 43480 1576 16

10 10 79296 49576 2090 15


(69)

53

Dari tabel 4.1 dan 4.2 dapat dibuat grafik perbandingan hasil kompresi dari algoritma FLBE dan algoritma Sequitur berdasarkan waktu kompresi dan waktu dekompresi. Grafik ini dapat dilihat pada gambar 4.13 dan 4.14

Gambar 4.13: Grafik Perbandingan Waktu Kompresi Pengujian I

Dari gambar 4.13, dapat diambil kesimpulan bahwa algoritma FLBE membutuhkan waktu yang lebih sedikit dalam melakukan proses kompresi data dibandingkan algoritma Sequitur.

Gambar 4.14: Grafik Perbandingan Waktu Dekompresi Pengujian I

0 200000 400000 600000 800000 1000000 1200000

1 2 3 4 5 6 7 8 9 10

w a k tu ( m s )

ukuran file (kb)

Waktu Kompresi

FLBE Sequit ur

0 5 10 15 20 25 30 35

1 2 3 4 5 6 7 8 9 10

w a k tu ( m s )

ukuran file (kb)

Waktu Dekompresi


(70)

Gambar 4.14 menggambarkan bahwa waktu yang dibutuhkan algoritma FLBE relatif lebih sedikit dibandingkan dengan waktu yang dibutuhkan algoritma Sequitur.

Tabel 4.3. Hasil Pengujian II terhadap Algoritma FLBE No Panjang

Frase (kata) Ukuran File (kb) Uncompressed Bit (bit) Compressed Bit (bit) Compression Time (ms) Decompression Time (ms)

1 2 1 7480 4688 93 15

2 3 2 10976 6872 94 16

3 4 3 17640 11040 109 16

4 5 4 26400 16512 218 15

5 6 5 39168 24496 530 16

6 7 6 46256 28920 702 16

7 8 7 49848 31168 796 15

8 9 8 63072 39432 1279 16

9 10 9 71232 44536 1607 15

10 11 10 79920 49960 2059 15

Tabel 4.4. Hasil Pengujian II terhadap Algoritma Sequitur No Panjang

Frase (kata) Ukuran File (kb) Uncompressed Bit (bit) Compressed Bit (bit) Compression Time (ms) Decompression Time (ms)

1 2 1 7480 48 281 0

2 3 2 10976 33 405 0

3 4 3 17640 56 1996 0

4 5 4 26400 40 4384 0

5 6 5 39168 24 9407 0

6 7 6 46256 32 13166 0

7 8 7 49848 48 15335 0

8 9 8 63072 40 24898 0

9 10 9 71232 40 31387 15

10 11 10 79920 56 39124 16

Dari tabel 4.3 dan 4.4 dapat dibuat grafik perbandingan hasil kompresi dari algoritma FLBE dan algoritma Sequitur berdasarkan waktu kompresi dan waktu dekompresi. Grafik ini dapat dilihat pada gambar 4.15 dan 4.16.


(71)

55

Gambar 4.15: Grafik Perbandingan Waktu Kompresi Pengujian II

Dari gambar 4.15, dapat diambil kesimpulan bahwa algoritma FLBE membutuhkan waktu yang lebih sedikit dalam melakukan proses kompresi data dibandingkan algoritma Sequitur.

Gambar 4.16: Grafik Perbandingan Waktu Dekompresi Pengujian II Pada gambar 4.16 waktu yang dibutuhkan algoritma Sequitur untuk dekompresi lebih sedikit dibandingkan dengan waktu yang dibutuhkan algoritma

FLBE. 0 5000 10000 15000 20000 25000 30000 35000 40000 45000

1 2 3 4 5 6 7 8 9 10

w a k tu ( m s )

ukuran file (kb)

Waktu Kompresi

FLBE Sequit ur

0 2 4 6 8 10 12 14 16 18

1 2 3 4 5 6 7 8 9 10

w a k tu ( m s )

ukuran file (kb)

Waktu Dekompresi


(72)

Tabel 4.5. Hasil Pengujian III terhadap Algoritma FLBE

Tabel 4.6. Hasil Pengujian III terhadap Algoritma Sequitur No Panjang

Frase (kata)

Ukuran File (kb)

Uncompressed Bit (bit)

Compressed Bit (bit)

Compression Time (ms)

Decompression Time (ms)

1 2 40 321520 80 11230 30

2 3 40 324896 56 12794 20

3 4 40 329600 48 310 20

4 5 40 320416 40 380 10

5 6 40 322608 56 510 20

6 7 40 324360 72 810 10

7 8 40 320040 64 810 10

8 9 40 324792 48 1590 10

9 10 40 319784 72 1330 10

10 11 40 324048 64 840 20

11 12 40 325872 56 760 20

12 13 40 326304 40 810 10

13 14 40 322264 56 1150 10

14 15 40 320016 40 880 10

15 16 40 324720 40 970 10

Dari tabel 4.5 dan 4.6 dapat dibuat grafik perbandingan hasil kompresi dari algoritma FLBE dan algoritma Sequitur berdasarkan waktu kompresi dan waktu dekompresi. Grafik ini dapat dilihat pada gambar 4.17 dan 4.18.


(73)

57

Gambar 4.17: Grafik Perbandingan Waktu Kompresi Pengujian III Dari gambar 4.17, dapat diambil kesimpulan bahwa algoritma Sequitur membutuhkan waktu yang lebih sedikit dalam melakukan proses kompresi data dibandingkan algoritma FLBE.

Gambar 4.18: Grafik Perbandingan Waktu Dekompresi Pengujian III Berbanding lurus dengan waktu kompresi, pada gambar 4.18 waktu yang dibutuhkan algoritma Sequitur untuk dekompresi juga lebih sedikit dibandingkan dengan waktu yang dibutuhkan algoritma FLBE.

0 10000 20000 30000 40000 50000 60000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

w a k tu ( m s )

ukuran file (kb)

Waktu Kompresi

FLBE Sequit ur

0 10 20 30 40 50 60 70

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

w a k tu ( m s )

ukuran file (kb)

Waktu Dekompresi


(1)

.addComponent(jScrollPane9, javax.swing.GroupLayout.DEFAULT_SIZE, 289, Short.MAX_VALUE)

.addGap(68, 68, 68)

.addComponent(jScrollPane8, javax.swing.GroupLayout.DEFAULT_SIZE, 290, Short.MAX_VALUE)

.addGap(20, 20, 20))

.addGroup(jPanel5Layout.createSequentialGroup() .addGap(158, 158, 158)

.addComponent(jLabel7)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(jLabel8) .addGap(139, 139, 139)) );

jPanel5Layout.setVerticalGroup(

jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,

jPanel5Layout.createSequentialGroup()

.addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment. LEADING)

.addComponent(jLabel7,

javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jLabel8,

javax.swing.GroupLayout.Alignment.TRAILING))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment. LEADING, false)


(2)

.addComponent(jScrollPane8,

javax.swing.GroupLayout.DEFAULT_SIZE, 201, Short.MAX_VALUE) .addComponent(jScrollPane9))

.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

);

jPanel6.setBorder(javax.swing.BorderFactory.createTitledBorder(""));

jTextField1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jTextField1ActionPerformed(evt);

} });

jLabel1.setFont(new java.awt.Font("Agency FB", 0, 18)); // NOI18N jLabel1.setText("Open (*.flb or *.sqr)");

jButton4.setText("..");

jButton4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton4jButton3ActionPerformed(evt);

} });

jLabel2.setFont(new java.awt.Font("Agency FB", 0, 18)); // NOI18N jLabel2.setText("Save As:");

jTextField3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jTextField3ActionPerformed(evt);

} });


(3)

jButton8.setText("..");

jButton8.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton8jButton5ActionPerformed(evt);

} });

private void jButton3jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:

if(algorithm==null){

JOptionPane.showMessageDialog(rootPane,"Please choose your algorithm first!","Error",JOptionPane.WARNING_MESSAGE);

}

else if(jTextField1.getText().equals("")){

JOptionPane.showMessageDialog(rootPane,"No Input File Found!","Error",JOptionPane.WARNING_MESSAGE);

}

else if(jTextField2.getText().equals("")){

JOptionPane.showMessageDialog(rootPane,"No Header File (*.h) Found!","Error",JOptionPane.WARNING_MESSAGE);

}

else if(jTextField3.getText().equals("")){

JOptionPane.showMessageDialog(rootPane,"Please Set Directory For Output File !","Error",JOptionPane.WARNING_MESSAGE);

} else {

starttime = System.currentTimeMillis(); algorithms alg = new algorithms(); bitstr = alg.Decode(content.toString()); if(algorithm=="flbe"){

dstr=alg.flbedecompress(bitstr,flbecode,character); }


(4)

dstr=alg.sqrdecompress(content.toString(),rule); }

String namafile = jTextField1.getText().toLowerCase();

if(namafile.substring(namafile.length()-8, namafile.length()-4).equals(".txt")){ File newTextFile = new File(file1.getAbsolutePath().toString()+".txt"); try (FileWriter fw = new FileWriter(newTextFile)) {

fw.write(dstr); fw.flush(); fw.close();

endtime = System.currentTimeMillis(); }

catch (IOException ex) {

JOptionPane.showMessageDialog(null, ex.toString(), "Error", JOptionPane.ERROR);

} }

else if(namafile.substring(namafile.length()-8, namafile.length()-4).equals(".doc")){

try{

InputStream systemResource = ClassLoader.getSystemResourceAsStream("program/skripsi/template.doc");

POIFSFileSystem poi = new POIFSFileSystem(systemResource); HWPFDocument doc = new HWPFDocument(poi);

Range range = doc.getRange();

StringBuilder bucket = new StringBuilder(); bucket.append(dstr);

range.insertBefore(bucket.toString()); bucket = null;

FileOutputStream fos = new FileOutputStream(file1.getAbsolutePath().toString()+".doc");


(5)

fos.close(); fos=null;

endtime = System.currentTimeMillis(); }

catch(IOException ex){

JOptionPane.showMessageDialog(null, ex.toString(), "Error", JOptionPane.ERROR);

} }

uncompressed_bits = dstr.length()*8;

double completeness = (double)uncompressed_bits/(double)text_bits * 100; Long totaltime = endtime- starttime;

if(algorithm == "flbe"){

jTextArea1.append("---\n" +"Decompression Time: "+totaltime+" ms\n"

+"Completeness: "+completeness+" %\n" +"---\n\n"); }

else{

jTextArea2.append("---\n" +"Decompression Time: "+totaltime+" ms\n"

+"Completeness: "+completeness+" %\n" +"---\n\n"); }


(6)

LAMPIRAN B: CURRICULUM VITAE

DATA PRIBADI

Nama : Pahara Siagian

Tempat / Tgl lahir : Bagansiapiapi/ 27 Juli 1991 Jenis Kelamin : Laki-laki

Umur : 23 Tahun Tinggi, Berat Badan : 167 cm, 67 Kg Agama : Katolik

Alamat : Jl. Teh 1 no. 25 A Status : Belum Menikah No. Telepon : 0852610100075

Email : 12paharasiagian@gmail.com

PENDIDIKAN

Formal

- SD Bintang Laut Bagansiapiapi ( 1997-2003 ) - SMP Bintang Laut Bagansiapiapi ( 2003-2006 ) - SMA Advent Siantar ( 2006-2009 ) - D3 Manajemen Informatika

Politeknik Unggul LP3M Medan ( 2009-2011 )

Hormat Saya