ANALISIS PERBANDINGAN ALGORITMA BOLDI VIGNA ζ1 CODE DAN ALGORITMA EVEN-RODEH CODE PADA KOMPRESI FILE TEKS SKRIPSI GALUH ATIKA NABILA

dokumen-dokumen yang mirip
PERBANDINGAN ALGORITMA EVEN-RODEH CODE DAN ALGORITMA VARIABLE LENGTH BINARY ENCODING (VLBE) PADA KOMPRESI FILE TEKS SKRIPSI

PERBANDINGAN ALGORITMA TERNARY COMMA CODE (TCC) DAN LEVENSTEIN CODE DALAM KOMPRESI FILE TEXT SKRIPSI ZULAIHA YULANDARI

IMPLEMENTASI ALGORITMA KRIPTOGRAFI HILL CIPHER DAN KOMPRESI DATA MENGGUNAKAN ALGORITMA LEVENSTEIN DALAM PENGAMANAN FILE TEKS SKRIPSI

PERBANDINGAN KINERJA ALGORITMA FIXED LENGTH BINARY ENCODING (FLBE) DENGAN VARIABLE LENGTH BINARY ENCODING (VLBE) DALAM KOMPRESI TEXT FILE SKRIPSI

ANALISIS PERBANDINGAN ALGORITMA HUFFMAN DAN RUN LENGTH ENCODING PADA KOMPRESI FILE AUDIO SKRIPSI HELBERT SINAGA

PERANCANGAN SISTEM PENGAMANAN DAN KOMPRESI DATA TEKS DENGAN FIBONACCI ENCODING DAN ALGORITMA SHANNON-FANO SERTA ALGORITMA DEFLATE SKRIPSI

ANALISIS PERBANDINGAN ALGORITMA HUFFMAN DAN ALGORITMA SEQUITUR DALAM KOMPRESI DATA TEXT SKRIPSI ELSYA SABRINA ASMTA SIMORANGKIR

SKRIPSI SURI SYAHFITRI

Universitas Sumatera Utara

IMPLEMENTASI ALGORITMA HUFFMAN CODING DAN METODE LEAST SIGNIFICANT BIT(LSB) UNTUK PENYEMBUNYIAN CITRA BMP KE CITRA BMP JOHAN SURYA

ANALISIS PERBANDINGAN ALGORITMA QUICKSORT, 3 WAY QUICKSORT, DAN RADIXSORT SKRIPSI PLOREN PERONICA PASARIBU

IMPLEMENTASI STEGANOGRAFI HOPPING SPREAD SPECTRUM KE DALAM FILE VIDEO SKRIPSI

PERBANDINGAN KUALITAS CITRA HASIL KOMPRESI METODE RUN LENGTH ENCODING DENGAN TRANSFORMASI WAVELET DAUBECHIES PADA CITRA DIGITAL SKRIPSI

ANALISIS ASIMTOTIK DAN REAL TIME MENGGUNAKAN ALGORITMA L-DEQUE DALAM MENENTUKAN JARAK TERPENDEK ANTAR KANTOR CABANG BANK MANDIRI DI KOTA MEDAN SKRIPSI

BAB III PERANCANGAN SISTEM

IMPLEMENTASI DAN ANALISIS ALGORITMA KOMPRESI TERNARY COMMA CODE DALAM KOMPRESI FILE TEXT PADA PLATFORM ANDROID SKRIPSI SITI SOENDARI UTAMI

IMPLEMENTASI ALGORITMA SHANNON-FANO PADA KOMPRESI AUDIO SKRIPSI MUTIARA NOVELIA RAJAGUKGUK

IMPLEMENTASI ALGORITMA BLOWFISH PADA APLIKASI ENKRIPSI DAN DEKRIPSI CITRA BERBASIS WINDOWS SKRIPSI AHDA ANDI KURNIA

ANALISIS DAN IMPLEMENTASI ALGORITMA KRIPTOGRAFI PLAYFAIR CIPHER DAN ALGORITMA KOMPRESI RUN LENGTH ENCODING DALAM PENGAMANAN DAN KOMPRESI DATA TEKS

IMPLEMENTASI DAN ANALISIS ALGORITMA DYNAMIC MARKOV COMPRESSION (DMC) PADA FILE TEXT

BAB 2 TINJAUAN PUSTAKA

ANALISIS KINERJA DAN IMPLEMENTASI ALGORITMA KOMPRESI ARITHMETIC CODING PADA FILE TEKS DAN CITRA DIGITAL SKRIPSI SARIFAH

PROGRAM STUDI S-1 ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA MEDAN 2012

ANALISIS PERBANDINGAN KOMPRESI CITRA MENGGUNAKAN METODE JOINT PHOTOGRAPHIC EXPERTS GROUP (JPEG) DAN BURROWS-WHEELER TRANSFORM (BWT) SKRIPSI

IMPLEMENTASI STEGANOGRAPHY NATURE OF WHITESPACE (SNOW) BERBASIS WEB MENGGUNAKAN METODE WHITESPACE SKRIPSI POPPY TANIA

ANALISIS PERBANDINGAN KOMPRESI FILE VIDEO DENGAN MOTION PICTURE EXPERT GROUP-4 DAN FLASH VIDEO DENGAN MENGGUNAKAN ALGORITMA HUFFMAN SKRIPSI

ANALISIS PERBANDINGAN KINERJA ALGORITMA SHANNON-FANO, ARITHMETIC CODING, DAN HUFFMAN PADA KOMPRESI BERKAS TEKS DAN BERKAS CITRA DIGITAL SKRIPSI

IMPLEMENTASI ALGORITMA TRITHEMIUS DENGAN ALGORITMA RICE DALAM PENGAMANAN DAN KOMPRESI FILE TEKS SKRIPSI RAJA ARIF HIDAYAH HARAHAP

PERBANDINGAN ALGORITMA KNUTH MORRIS PRATT DAN BOYER MOORE PADA APLIKASI KAMUS BAHASA INDONESIA-KOREA BERBASIS ANDROID SKRIPSI

SISTEM PENDUKUNG KEPUTUSAN PENENTUAN KELAYAKAN CALON ASISTEN LABORATORIUM BERBASIS ANDROID MENGGUNAKAN ALGORITMA ITERATIVE DICHOTOMISER 3 (ID3)

ANALISIS PERBANDINGAN KOMPRESI CITRA MENGUNAKAN ALGORITMA TRANSFORMASI WALSH-HADAMARD DENGAN RUN LENGTH ENCODING(RLE) DRAFT SKRIPSI

IMPLEMENTASI DAN ANALISIS KINERJA ALGORITMA ARITHMETIC CODING DAN SHANNON-FANO PADA KOMPRESI CITRA BMP SKRIPSI SYAHFITRI KARTIKA LIDYA

IMPLEMENTASI METODE GENERATE AND TEST DALAM PENYELESAIAN PUZZLE 2048 BERBASIS MOBILE SKRIPSI

ANALISIS PERBANDINGAN HASIL ALGORITMA HOMOGENEITY DAN ALGORITMA PREWITT UNTUK DETEKSI TEPI PADA CITRA BMP SKRIPSI ZULFADHLI HARAHAP

PROGRAM STUDI S1 ILMU KOMPUTER

ANALISIS DAN PERANCANGAN ALGORITMA ARITHMETIC CODING DALAM KOMPRESI FILE AUDIO SKRIPSI DEBI MAULINA SIREGAR

SATRIA F RAMADHAN S

STUDI PERBANDINGAN ALGORITMA HUFFMAN DAN LZW (LEMPEL ZIV WELCH) PADA PEMAMPATAN FILE TEKS SKRIPSI CANGGIH PRAMILO

BAB 1 PENDAHULUAN. 1.1 Latar Belakang Masalah

STUDI PERBANDINGAN KOMPRESI MENGGUNAKAN METODE SHANNON FANO DAN UNARY CODING PADA FILE TEKS EUNIKE JOHANA

PERBANDINGAN ALGORITMA STRING MATCHING NOT SO NAIVE DAN SKIP SEARCH PADA PLATFORM ANDROID SKRIPSI RICKY WIJAYA

IMPLEMENTASI ALGORITMA KUNCI PUBLIK LUC DAN ALGORITMA KOMPRESI GOLDBACH CODES UNTUK PERANCANGAN APLIKASI PENGAMANAN DAN KOMPRESI FILE PDF SKRIPSI

BAB 1 PENDAHULUAN Latar Belakang

PERBANDINGAN STEGANOGRAFI DATA TEKS KE DALAM FILE AUDIO MENGGUNAKAN ALGORITMA LEAST SIGNIFICANT BIT (LSB) DAN MODIFIED LEAST SIGNIFICANT BIT (MLSB)

BAB 2 LANDASAN TEORI

IMPLEMENTASI ALGORITMA BRUTE FORCE DAN ALGRITMA KNUTH-MORRIS-PRATT (KMP) DALAM PENCARIAN WORD SUGGESTION SKRIPSI ADLI ABDILLAH NABABAN

ANALISIS DUPLICATE FILE FINDER MENGGUNAKAN METODE MD5 HASH SKRIPSI WAHYUNI FARAH JUWITA

BAB 2 TINJAUAN PUSTAKA

STUDI PERBANDINGAN ALGORITMA HUFFMAN DAN SHANNON-FANO DALAM PEMAMPATAN FILE TEKS SKRIPSI NURFITA SARI HASIBUAN

ANALISIS DAN PERBANDINGAN ALGORITMAL-DEQUE DANALGORITMA BELLMAN-FORD DALAM MENCARI JARAK TERPENDEK SKRIPSI

ANALISIS DAN PERANCANGAN SISTEM KRIPTOGRAFI SIMETRIS TRIPLE DES DAN KRIPTOGRAFI ASIMETRIS RSA SKRIPSI BENY

BAB 2 TINJAUAN PUSTAKA

IMPLEMENTASI KOMBINASI ALGORITMA COLUMNAR TRANSPOSITION CIPHER DAN DATA ENCRYPTION STANDARD PADA APLIKASI ENKRIPSI DAN DEKRIPSI TEKS BERBASIS ANDROID

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

PENYANDIAN DATA TEKS DENGAN ALGORITMA ELGAMAL DAN ALGORITMA KOMPRESI DATA DENGAN ALGORITMA ELIAS GAMMA CODE SKRIPSI WIWIN AGUSTINI LUBIS

BAB 2 LANDASAN TEORI

IMPLEMENTASI RUBY GAME SCRIPTING SYSTEM PADA GAME LUDO SKRIPSI DICKO IFENTA

IMPLEMENTASI KOMBINASI ALGORITMA BEAUFORT DAN ALGORITMA SPRITZ DALAM SKEMA SUPER ENKRIPSI UNTUK PENGAMANAN TEKS SKRIPSI TIA RAHMADIANTI

IMPLEMENTASI METODE KUANTISASI PADA KOMPRESI DAN DEKOMPRESI CITRA BITMAP DAN JPEG SKRIPSI WINDA DIAN LUCA HSB

IMPLEMENTASI DAN ANALISIS KINERJA ALGORITMA SHANNON- FANO UNTUK KOMPRESI FILE TEXT

UNIVERSITAS BINA NUSANTARA

ANALISIS PERBANDINGAN GEOMETRIC MEAN FILTER DENGAN OPERATOR SOBEL, OPERATOR PREWITT DAN OPERATOR ROBERT PADA CITRA BITMAP SKRIPSI

BAB I PENDAHULUAN. 1.1 Latar Belakang

PROGRAM STUDI S1 ILMU KOMPUTER FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA MEDAN 2013

BAB 2 LANDASAN TEORI

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

KOMPRESI FILE.TXT DENGAN ALGORITMA HUFFMAN PADA FILE DENGAN MENGGUNAKAN PENGKODEAN BASE-64 SKRIPSI. Oleh : LINGGA ADI FIRMANTO ( )

IMPLEMENTASI SISTEM PAKAR DIAGNOSIS GANGGUAN KEPRIBADIANMENGGUNAKAN METODE CERTAINTY FACTOR DAN METODE FUZZY SKRIPSI HERY HADINATA SEMBIRING

BAB 2 TINJAUAN PUSTAKA

ANALISIS KOMPRESI CITRA DIGITAL DENGAN METODE FRAKTAL SKRIPSI DEVI TRIANA

IMPLEMENTASI METODE ARITHMETIC MEAN FILTER DAN KOMPRESI CITRA MENGGUNAKAN METODE RUN LENGTH ENCODING (RLE) SKRIPSI RETRI WITRA NASTITI

BAB 2 LANDASAN TEORI. 2.1 Kompresi Data

IMPLEMENTASI ALGORITMA KNUTH-MORRIS-PRATH STRING MATCHING UNTUK MENCARI KATA ATAU ISTILAH PADA KAMUS KOMPUTER BERBASIS ANDROID.

MULTIMEDIA system. Roni Andarsyah, ST., M.Kom Lecture Series

PERBANDINGAN METODE DETEKSI TEPI CANNY, ROBERT DAN LAPLACIAN OF GAUSSIAN PADA HASIL CITRA CAMERA 360 SKRIPSI TIFANY BR SEMBIRING

IMPLEMENTASI ALGORITMA GENETIK UNTUK MENYELESAIKAN MASALAH TRAVELING SALESMAN PROBLEM (STUDI KASUS: SATUAN KERJA PERANGKAT DAERAH KOTA MEDAN)

BAB 2 TINJAUAN PUSTAKA

ANALISIS DAN PERANCANGAN APLIKASI STEGANALISIS PADA MEDIA CITRA BMP DENGAN METODE ENHANCED LEAST SIGNIFICANT BIT SKRIPSI DESMAWATI

IMPLEMENTASI ALGORITMA XOR DAN ALGORITMA RC4 PADA APLIKASI ENKRIPSI DAN DEKRIPSI TEKS BERBASIS ANDROID SKRIPSI TANTA ADITYA PRANATA

BAB 2 TINJAUAN PUSTAKA

IMPLEMENTASI ALGORITMA HORSPOOL DALAM PEMBUATAN KAMUS ISTILAH PSIKOLOGI PADA PLATFORM ANDROID SKRIPSI ADE MUTIARA KARTIKA DEWI NASUTION

PERBANDINGAN ALGORITMA TURBO BOYER MOORE DAN STRING MATCHING ON ORDERED ALPHABETS UNTUK APLIKASI KAMUS FISIKA BERBASIS ANDROID SKRIPSI

PERANCANGAN APLIKASI PAILLIER CRYPTOSYSTEM UNTUK MENGAMANKAN DATA FILE SKRIPSI NOVY

ANALISIS DAN PERANCANGAN APLIKASI PENERIMAAN SISWA BARU MENGGUNAKAN METODE SAW DAN METODE PROMETHEE (STUDI KASUS : SMAN 1 TEBING TINGGI) SKRIPSI

TUGAS AKHIR IMPLEMENTASI TEKNIK KOMPRESI VIDEO DENGAN ALGORITMA DISCRETE COSINE TRANSFORM PADA PERANGKAT BERGERAK

BAB 2 TINJAUAN PUSTAKA

IMPLEMENTASI MODIFIKASI SISTEM KRIPTOGRAFI RSA DAN ELLIPTIC CURVE DIGITAL SIGNATURE ALGORITHM (ECDSA) SKRIPSI ANDRUS

IMPLEMENTASI ALGORITMA RC4 DAN METODE MODIFIED LSB UNTUK PENGAMANAN TEXT FILE SKRIPSI FEBRI ARO GEA

ANALISIS DAN PERBANDINGAN ALGORITMA L-QUEUE DAN ALGORITMA FLOYD DALAM PENENTUAN LINTASAN TERPENDEK PADA GRAPH SKRIPSI

PROGRAM STUDI EKSTENSI S1 ILMU KOMPUTER FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA MEDAN 2014

VERIFIKASI INTEGRITAS DATA YANG DIUNDUH DARI INTERNET DENGAN MENGGUNAKAN MESSAGE DIGEST 5 (MD5) SKRIPSI IVAN JAYA

IMPLEMENTASI METODE MEDIAN FILTERING DAN KOMPRESI JPEG UNTUK CITRA BMP SKRIPSI ZULWITA HARIYATI

SKRIPSI BILQIS

SISTEM INFORMASI GEOGRAFIS BERBASIS WEB UNTUK MENENTUKAN JARAK TERPENDEK MENGGUNAKAN ALGORITMA DIJKSTRA (Studi Kasus : Plaza / Mall Dikota Medan)

PERBANDINGAN ALGORITMA BOYER-MOORE DAN ALGORITMA RABIN- KARP PADA PENCARIAN TEKS DALAM UNDANG- UNDANG PERLINDUNGAN ANAK SKRIPSI

BAB 2 TINJAUAN PUSTAKA

SKRIPSI SHERLY MELISA SEMBIRING

PERBANDINGAN ALGORITMA HUFFMAN DAN ALGORITMA SHANNON-FANO PADA PROSES KOMPRESI BERBAGAI TIPE FILE. Irwan Munandar

1. PENDAHULUAN 1.1. Latar Belakang Masalah

Transkripsi:

ANALISIS PERBANDINGAN ALGORITMA BOLDI VIGNA ζ1 CODE DAN ALGORITMA EVEN-RODEH CODE PADA KOMPRESI FILE TEKS SKRIPSI GALUH ATIKA NABILA 151401136 PROGRAM STUDI S-1 ILMU KOMPUTER FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA MEDAN 2019

ANALISIS PERBANDINGAN ALGORITMA BOLDI VIGNA ζ1 CODE DAN ALGORITMA EVEN-RODEH CODE PADA KOMPRESI FILE TEKS SKRIPSI Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Sarjana Ilmu Komputer GALUH ATIKA NABILA 151401136 PROGRAM STUDI S1 ILMU KOMPUTER FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA MEDAN 2019

ii

iii PERNYATAAN ANALISIS PERBANDINGAN ALGORITMA BOLDI VIGNA ζ1 CODE DAN ALGORITMA EVEN-RODEH CODE PADA KOMPRESI FILE TEKS SKRIPSI Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya. Medan, Februari 2019 Galuh Atika Nabila 151401136

iv PENGHARGAAN Puji syukur kita sampaikan kehadirat Tuhan Yang Maha Esa yang telah memberikan rahmat serta karunia-nya sehingga penulis dapat menyelesaikan skripsi ini dengan sebaik-baiknya. Pada dasarnya penyusunan skripsi merupakan syarat mutlak yang harus dipenuhi untuk menyelesaikan pendidikan dan menyandang gelar Sarjana Komputer pada Program Studi S1 Ilmu Komputer Fasilkom-TI. Tidak dapat dipungkiri, skripsi ini dapat selesai karena bantuan, semangat, motivasi, dan kerjasama yang diterima penulis dari orang-orang terdekat terutama kedua orang tua penulis. Oleh karena itu, pada kesempatan ini penulis ingin mengucapkan terima kasih yang sebesar-besarnya kepada berbagai pihak yang terkait, antara lain : 1. Prof. Dr. Runtung Sitepu, SH, M.Hum selaku Rektor Universitas Sumatera Utara. 2. Prof. Dr. Opim Salim Sitompul M.Sc selaku Dekan Fakultas Ilmu Komputer dan Teknologi Informasi. 3. Bapak Dr. Poltak Sihombing, M.Kom selaku Ketua Program Studi S1 Ilmu Komputer Fakultas Ilmu komputer dan Teknologi Informasi Universitas Sumatera Utara. 4. Bapak Dr. M.Andri Budiman, S.T., M.Comp.Sc., M.E.M, S.C.J.P selaku dosen pembimbing I yang senantiasa memberikan bimbingan, motivasi, kritik, dan saran kepada penulis selama proses pengerjaan skripsi ini. 5. Bapak Handrizal, S.Si, M.Comp.,Sc selaku dosen pembimbing II yang telah memberikan arahan dan bimbingan kepada penulis dalam penyempurnaan skripsi ini. 6. Bapak Dr. Poltak Sihombing, M.Kom selaku Dosen Pembanding I yang telah memberikan kritik dan saran untuk penyelesaian skripsi ini. 7. Bapak Herriyance, S.T., M.Kom selaku Dosen Pembanding II yang telah memberikan masukan dan saran untuk perbaikan skripsi ini. 8. Seluruh staf pengajar dan pegawai di Fakultas Ilmu Komputer dan Teknologi Informasi USU.

v 9. Ayahanda Drs. Satriawan Taruna, M.Si, Ibunda tercinta Dini Sartika dan adinda Puan Abidah Nitisara yang tanpa lelah memberi kasih sayang, perhatian, dukungan, dan doa terbaik untuk penulis dalam pengerjaan skripsi. 10. Sahabat seperjuangan Khairunnada dan Rahmatunnisa Siregar yang menjadi tempat berkeluh-kesah, serta saling memberikan semangat selama mengerjakan skripsi. 11. Sahabat tercinta UNIFFEECA yang selalu memberikan memberikan semangat kepada penulis selama mengerjakan skripsi. 12. Teman - teman nongkrong di IKLC Irfan Lazuardi, Audhika Gaindata, Zikri Akmal Santoso, Dormen Hutagalung, Hairunnisa Lubis, Cindy Laurent Ginting yang telah memberikan semangat kepada penulis dalam pengerjaan skripsi. 13. Teman teman seperjuangan Aftika Wulandari dan Mayrisa yang kerap menemani dan memberikan semangat selama pengerjaan skripsi 14. Abangda Rahmat Setyo Aji dan Abangda Muhari Akbar yang senantiasa membantu dan memberi dukungan dalam penulisan skripi ini. 15. Rekan rekan asisten di Ilmu Komputer Laboratory Center (IKLC) USU yang tidak dapat disebutkan satu per satu. 16. Keluarga Kom A 2015 Ilmu Komputer yang banyak memberi motivasi kepada penulis dalam pengerjaan skripsi ini. 17. Teman-teman stambuk 2015, kakak abang senior dan adik-adik junior yang selalu memberi semangat kepada penulis 18. Dan semua pihak yang telah membantu yang tidak dapat disebutkan satu per satu. Terima kasih kepada semua pihak, semoga semua kebaikan, perhatian, bantuan serta dukungan yang telah diberikan kepada penulis semoga mendapatkan balasan yang setimpal dari Allah swt. Semoga Skripsi ini dapat bermanfaat bagi orang banyak. Medan, Februari 2019 Penulis

vi ABSTRAK Penggunaan komputer sebagai media informasi digital merupakan salah satu cara untuk pengaksesan informasi di masyarakat. Informasi yang beredar dapat berupa teks, suara, dan citra yang dikemas secara digital. Tentunya hal ini akan memerlukan media penyimpanan yang lumayan besar. Oleh karena itu diperlukan alternatif dalam penyimpanan data yang dapat meningkatkan efisiensi dari penggunaan media penyimpanan. Salah satu cara yang dapat digunakan adalah teknik kompresi data. Penelitian ini membandingkan dua algoritma kompresi, yaitu algoritma Boldi-Vigna ζ1 Code dan Even-Rodeh Code dalam hal kompresi file teks. Nilai Compression Ratio (CR), Space Savings (SS), Bit rate serta Running Time dihitung dalam pengujian sebagai bahan pertimbangan untuk membandingkan keunggulan dari kedua algoritma yang digunakan. Pengujian yang dilakukan menggunakan string homogen, string heterogen dan artificial corpus. Dalam kompresi string homogen maupun heterogen, algoritma Boldi-Vigna ζ1 Code lebih unggul karena nilai Bit rate yang lebih rendah serta Space Saving yang lebih besar untuk setiap jumlah string yang digunakan. Dari segi waktu kompresi, algoritma Boldi-Vigna ζ1 Code lebih cepat prosesnya daripada algoritma Even-Rodeh Code. Nilai kompleksitas algoritma Boldi-Vigna ζ1 Code dan algoritma Even-Rodeh Code yang dihasilkan dalam penelitian ini sama besar yaitu Θ(n). Kata kunci: Boldi-Vigna ζ1 Code, Even-Rodeh Code, Kompresi, Dekompresi, File teks

vii ANALYSIS OF BOLDI VIGNA ζ1 CODE ALGORITHM AND EVEN-RODEH CODE ALGORITHM FOR COMPRESSION ON TEXT FILE ABSTRACT The use of computers as digital information media is one way to access information in society. It can be digitally packaged in the form of text, sound, and image. Surely this would requires a quite big storage. Therefore, it is required an alternative way in data storage that could increase the efficiency in using of storage media. One way that can be used is data compression techniques. This research compares two compression algorithms, Boldi-Vigna ζ1 Code algorithm and Even-Rodeh Code algorithm in text file compression. The value of Compression Ratio, Space Savings (SS), Bit Rate and Running Time are calculated in testing as consideration to compare the advantage of both algorithms. The testing is done using homogeneous string type, heterogeneous string type and artificial corpus. In compression of both homogeneous string type and heterogeneous string type, Boldi-Vigna ζ1 Code algorithm is superior to Even-Rodeh Code algorithm because of lower Bit Rate and greater Space Saving for each number of strings used. In terms of compression time, Boldi-Vigna ζ1 Code algorithm is faster than Even-Rodeh Code algorithm. The complexity of Boldi-Vigna ζ1 Code and Even-Rodeh Code algorithm produced in this research both are the same as θ(n). Keywords: Boldi-Vigna ζ1 Code, Even-Rodeh Code, Compression, Decompression, Text File

viii DAFTAR ISI Halaman Persetujuan...ii Pernyataan...ii Penghargaan... iv Abstrak... vi Abstract... vii Daftar Isi... viii Bab 1 Pendahuluan...1 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 Metode Penelitian... 4 1.7 Sistematika Penulisan... 4 Bab 2 Landasan Teori...6 2.1. Kompresi Data... 6 2.2. Teknik Kompresi Data... 7 2.2.1 Kompresi Lossless (Lossless Compression)...7 2.2.2 Kompresi Lossy (Lossy Compression)...8 2.3. Konsep Kompresi Data... 8 2.4 Parameter Analisis Kinerja Kompresi... 9 2.5 Algoritma... 10 2.5.1. Algoritma Even-Rodeh Code... 10 2.6.2 Algoritma Boldi-Vigna (ζ1)... 16 2.7 Kompleksitas Algoritma... 21 2.7.1. Big Theta... 22 2.8 Penelitian yang Relevan... 22 Bab 3 Analisis dan Perancangan Sistem... 24

ix 3.1. Analisis Sistem... 24 3.1.1. Analisis Masalah... 24 3.1.2. Analisis Kebutuhan... 25 3.2. Pemodelan Sistem... 26 3.2.1. Use Case Diagram... 27 3.2.2. Activity diagram pada proses kompresi Boldi-Vigna ζ1 Code... 28 3.2.3. Activity diagram pada proses kompresi Even-Rodeh Code... 29 3.2.4. Sequence Diagram... 30 3.3. Pseudocode... 31 3.3.1. Pseudocode Algoritma Boldi-Vigna ζ1 Code... 32 3.3.2. Pseudocode Algoritma Even-Rodeh Code... 32 3.4. Flowchart... 33 3.4.1. Flowchart sistem secara umum... 33 3.4.2. Flowchart Algoritma Boldi-Vigna ζ1 Code... 34 3.4.3. Flowchart Algoritma Even-Rodeh Code... 35 3.5. Perancangan Antarmuka... 36 3.5.1. Halaman Home... 37 3.5.2. Form Compression... 38 3.5.3. Form Decompression... 39 3.5.4. Form Help... 41 3.5.5. Form About... 42 Bab 4 Implementasi dan Pengujian Sistem... 43 4.1. Implementasi Algoritma... 43 4.1.1. Implementasi Algoritma Boldi-Vigna ζ1 Code... 43 4.1.2. Implementasi Algoritma Even-Rodeh Code... 46 4.2. Implementasi Sistem... 49 4.2.1. Form Home... 49 4.2.2. Form Compression... 50 4.2.3. Form Decompression... 51 4.2.4. Form Help... 52 4.2.5. Form About... 53 4.3. Pengujian Sistem... 53 4.3.1. Pengujian Proses Kompresi... 53 4.3.2. Pengujian Proses Dekompresi... 56

x 4.3.3. Hasil Pengujian... 58 4.3.4. Pengujian String Homogen... 59 4.3.5. Pengujian String Heterogen... 64 4.3.6. Pengujian Corpus... 69 4.4. Kompleksitas Algoritma... 71 Bab 5 Kesimpulan dan Saran... 75 5.1. Kesimpulan... 75 5.2. Saran... 76 DAFTAR PUSTAKA... 77

xi DAFTAR TABEL Halaman Tabel 2.1 Kode algoritma Even-Rodeh Code... 11 Tabel 2.2 Jumlah Kode Algoritma Even-Rodeh Code Berdasarkan Variasi Karakter. 11 Tabel 2.3 String yang belum dikompresi... 12 Tabel 2.4 String yang sudah dikompresi dengan Even-Rodeh Code... 13 Tabel 2.5 Kode Daftar Boldi-Vigna ζ1... 17 Tabel 2.6 String yang belum dikompresi... 18 Tabel 2.7 String yang telah dikompresi dengan Boldi-Vigna ζ1 Code... 19 Tabel 4.1 Ukuran String Sebelum Dikompresi... 43 Tabel 4.2 Ukuran String Setelah Dikompresi Dengan Boldi-Vigna ζ1 Code... 44 Tabel 4.3 Ukuran String Setelah Dikompresi Dengan Even-Rodeh Code... 47 Tabel 4.4 File Berisi String Homogen... 58 Tabel 4.5 File Berisi String Heterogen... 59 Tabel 4.6 Hasil Pengujian String Homogen dengan Boldi-Vigna ζ1 Code... 60 Tabel 4.7 Hasil Pengujian String Homogen dengan Even-Rodeh Code... 60 Tabel 4.8 Hasil Pengujian String Heterogen dengan Boldi-Vigna ζ1 Code... 65 Tabel 4.9 Hasil Pengujian String Heterogen dengan Even-Rodeh Code... 65 Tabel 4.10 File Uji Artificial Corpus... 69 Tabel 4.11 Hasil Pengujian Boldi-Vigna ζ1 Code terhadap File Artificial Corpus... 70 Tabel 4.12 Hasil Pengujian Even-Rodeh Code terhadap File Artificial Corpus... 70 Tabel 4.13 Kompleksitas Algoritma Boldi-Vigna ζ1 Code... 71 Tabel 4.14 Kompleksitas Algoritma Even-Rodeh Code... 73

xii DAFTAR GAMBAR Halaman Gambar 2.1 Diagram Blok Proses Kompresi dan Dekompresi Data (Pu, 2005)...6 Gambar 2.2 Diagram Blok Kompresi Lossless (Pu, 2005)...7 Gambar 2.3 Diagram Blok Kompresi Lossy (Pu, 2005)...8 Gambar 2.4 Grafik Θ (Cormen, et al., 2009)... 22 Gambar 3.1 Diagram Ishikawa Analisis Masalah... 25 Gambar 3.2 Use Case Diagram Pada Sistem... 27 Gambar 3. 3 Activity Diagram proses Kompresi Boldi-Vigna ζ1 Code... 28 Gambar 3. 4 Activity Diagram proses Kompresi Even-Rodeh Code... 29 Gambar 3.5 Sequence diagram proses kompresi... 30 Gambar 3.6 Sequence diagram proses dekompresi... 31 Gambar 3.7 Flowchart Sistem Secara Umum... 33 Gambar 3.8 Flowchart algoritma Boldi-Vigna ζ1 Code... 34 Gambar 3. 9 Flowchart algoritma Even-Rodeh Code... 36 Gambar 3.10 Rancangan Halaman Utama... 37 Gambar 3.11 Form Compression pada sistem... 38 Gambar 3.12 Form Decompression pada Sistem... 40 Gambar 3.13 Form Help pada Sistem... 41 Gambar 3.14 Form About pada Sistem... 42 Gambar 4.1 Tampilan Halaman Awal Form Home... 49 Gambar 4.2 Tampilan Form Compression... 51 Gambar 4.3 Tampilan Form Decompression... 52 Gambar 4.4 Tampilan Form Help... 52 Gambar 4.5 Tampilan Form About... 53 Gambar 4.6 Tampilan Proses Kompresi... 54 Gambar 4.7 Tampilan Kotak Dialog Save File Pada Proses Kompresi... 55 Gambar 4. 8 Proses Kompresi Setelah Di Atur Ulang... 55 Gambar 4. 9 Tampilan Menu Dekompresi... 56 Gambar 4.10 Tampilan Kotak Dialog Save File Pada Proses Dekompresi... 57 Gambar 4.11 Proses Dekompresi... 57

xiii Gambar 4.12 Grafik Compression Ratio terhadap String Homogen... 61 Gambar 4.13 Grafik Bitrate terhadap String Homogen... 62 Gambar 4.14 Grafik Space Savings terhadap String Homogen... 62 Gambar 4.15 Grafik Waktu Kompresi terhadap String Homogen... 63 Gambar 4.16 Grafik Waktu Dekompresi terhadap String Homogen... 64 Gambar 4.17 Grafik Compression Ratio terhadap String Heterogen... 66 Gambar 4.18 Grafik Bitrate terhadap String Heterogen... 67 Gambar 4.19 Grafik Space Savings terhadap String Heterogen... 67 Gambar 4.20 Grafik Waktu Kompresi terhadap String Heterogen... 68 Gambar 4.21 Grafik Waktu Dekompresi terhadap String Heterogen... 69

xiv DAFTAR LAMPIRAN Halaman Lampiran 1 LISTING PROGRAM... A-1 Lampiran 2 CURRICULUM VITAE... B-1

BAB 1 PENDAHULUAN 1.1 Latar Belakang Kebutuhan akan informasi sudah tak dapat dipisahkan dari kehidupan sehari-hari masyarakat umum. Penggunaan komputer sebagai media informasi digital merupakan salah satu cara untuk pengaksesan informasi di masyarakat. Informasi yang beredar dapat berupa teks, suara, dan citra yang dikemas secara digital. Tentunya hal ini akan memerlukan media penyimpanan yang lumayan besar. Oleh karena itu diperlukan alternatif dalam penyimpanan data yang dapat meningkatkan efisiensi dari penggunaan media penyimpanan. Salah satu cara yang digunakan untuk mengefisiensikan media penyimpanan adalah teknik kompresi data. Kompresi data merupakan sebuah proses dimana terdapat pegubahan pada aliran data masukan (data asli) ke dalam aliran data yang lain dan mempunyai ukuran data yang lebih kecil (Salomon & Motta, 2010). Dengan melakukan kompresi data, maka kita dapat meminimalisir kebutuhan akan penyimpanan data, mempercepat pengiriman/transmisi data dan memperkecil kebutuhan bandwith. Pada penelitian ini akan dilakukan perbandingan dari kedua algoritma kompresi yaitu algoritma Boldi-Vigna ζ1 Code dan algoritma Even-Rodeh Code. untuk mengetahui algoritma mana yang lebih efisien dalam hal kompresi file teks. Kinerja algoritma tersebut akan diukur berdasarkan parameter Compression Ratio (CR), Space Saving (SS), bit rate, waktu kompresi dan dekompresi yang dihitung dalam satuan milisekon. Algoritma Boldi-Vigna ζ1 Code dikenalkan oleh Paolo Boldi dan Sebastiano Vigna sebagai salah satu anggota variable-length code yang merupakan opsi terbaik dalam kompresi WebGraphs (Salomon, 2007). Algoritma ini dikembangkan pada suatu studi WebGraph yang sekarang dikenal sebagai World Wide Web (WWW) dengan tujuan untuk memperkecil kapasitas konten pada WebGraph tersebut. Sedangkan algoritma Even-Rodeh Code merupakan algoritma kompresi yang hampir

2 sama dengan algoritma Elias Omega Code, namun perbedaan utamanya adalah panjang dari kodenya akan ditambahkan hingga 3 bit dan menjadi kelompok paling kiri dari kode (Salomon, 2007). Dalam pembangkitan kode algoritma kompresi data ini dilakukan dengan cara melakukan pengkodean terhadap setiap karakter dengan menggunakan beberapa rangkaian bit. Pembentukan bit yang merepresentase setiap karakter didasarkan pada frekuensi kemunculan tiap karakter. Berdasarkan pada penelitian terdahulu diantaranya seperti pada penelitian yang berjudul On Using Goldbach G0 Codes and Even-Rodeh Codes for Text Compression (M. A. Budiman dan D. Rachmawati, 2017) yang menunjukkan bahwa hasil dari penelitian tersebut adalah algoritma Even-Rodeh Code cenderung lebih efisien dari algoritma Golbach G0 Code. Hal ini dikarenakan Even-Rodeh Code memiliki nilai Compression Ratio (CR) dan Space Saving yang lebih besar serta nilai Bitrate yang lebih rendah dari Goldbach G0 Code. Berdasarkan latar belakang diatas, penulis ingin membandingkan tingkat efisiensi dari algoritma Boldi-Vigna ζ1 Code dan algoritma Even-Rodeh Code dalam melakukan kompresi pada file teks. 1.2 Rumusan Masalah Berdasarkan latar belakang tersebut, maka rumusan masalahnya yaitu bagaimana perbandingan kinerja penggunaan algoritma Boldi-Vigna ζ1 Code dan algoritma Even- Rodeh Code pada kompresi file teks. 1.3 Batasan Masalah Dalam melakukan penelitian ini, peneliti membatasi ruang masalah yang akan diteliti agar tulisan ini tidak menyimpang dari ruang lingkup pembahasan diperlukan. Batasan-batasan masalah yang digunakan adalah sebagai berikut: 1. Membandingkan dua algoritma kompresi data yaitu Boldi-Vigna ζ1 Code dan Even-Rodeh Code. 2. Kode Boldi-Vigna yang akan digunakan hanya Boldi-Vigna ζ1 Code. 3. Jenis data yang akan dikompresi adalah karakter ASCII sebanyak 256 karakter antara lain: huruf, angka, baris baru, tab, spasi dan simbol dalam file teks yang memiliki ekstensi *.txt

3 4. File uji yang akan dikompresi adalah string homogen, string heterogen dan dan artificial corpus. 5. Parameter yang digunakan dalam pengukuran kinerja algoritma ini adalah time (waktu kompresi(ms) dan waktu dekompresi(ms)), compression ratio (CR), space saving (SS), dan bit rate. 6. Implementasi dari penelitian ini berbasis pada bahasa pemrograman visual yaitu C#. 7. Pengukuran kompleksitas dari algoritma algoritma Boldi-Vigna ζ1 Code dan algoritma Even-Rodeh Code menggunakan notasi Big θ (Theta). 1.4 Tujuan Penelitian Berdasarkan rumusan masalah yang telah dirincikan sebelumnya, maka tujuan penelitian dari judul ini adalah untuk mengetahui algoritma mana yang lebih cocok dan efisien dalam kompresi file teks diantara algoritma Boldi-Vigna ζ1 Code dan algoritma Even-Rodeh Code. 1.5 Manfaat Penelitian Manfaat yang diharapkan dapat dihasilkan dari penelitian ini adalah sebagai berikut: 1. Menghemat ruang penyimpanan data dengan dilakukannya proses kompresi pada file teks dengan algoritma Boldi-Vigna ζ1 Code dan algoritma Even-Rodeh Code. 2. Mengetahui proses kompresi dan dekompresi pada algoritma Boldi-Vigna ζ1 Code dan algoritma Even-Rodeh Code. 3. Mengetahui perbandingan kinerja terbaik dari algoritma mana diantara algoritma Boldi-Vigna ζ1 Code dan algoritma Even-Rodeh Code yang lebih efisien dalam kompresi file teks. 4. Bermanfaat sebagai sumber rujukan dan referensi untuk penelitian selanjutnya terkait kompresi file teks menggunakan algoritma Boldi-Vigna ζ1 Code dan algoritma Even-Rodeh Code.

4 1.6 Metode Penelitian Metode penelitian yang dilakukan dalam penelitian ini adalah: 1. Studi Literatur Penulis melakukan penelitian dimulai dengan mencari referensi dari berbagai sumber terpercaya dan melakukan peninjauan pustaka melalui buku-buku, artikel ilmiah, dan penelitian-penelitian lainnya dalam bentuk jurnal yang berhubungan dengan Algoritma Boldi-Vigna ζ1 Code dan Algoritma Even- Rodeh Code. 2. Analisa dan Perancangan Berdasarkan ruang lingkup penelitian, penulis melakukan analisa terhadap apa saja yang akan dibutuhkan oleh sistem yang akan dibuat. Selain itu, penulis melakukan perancangan sistem dimulai dari desain interface, struktur data, diagram alir (flowchart) dan diagram Ishikawa 3. Implementasi Melakukan proses pembangunan perangkat lunak/coding sebagai realisasi untuk diimplementasikan dalam sebuah sistem yang menggunakan bahasa pemrograman C# sesuai dengan diagram alir (flowchart) yang telah dirancang. 4. Pengujian Pada tahap ini dilakukan uji coba terhadap sistem yang telah dikembangkan. 5. Dokumentasi Pada tahap terakhir ini, penelitian yang telah dilakukan, didokumentasikan mulai dari tahap analisa sampai kepada pengujian dan akhirnya dibuat dalam bentuk skripsi. 1.7 Sistematika Penulisan Sistematika dalam penulisan skripsi ini disusun menjadi beberapa bab, diantaranya yaitu: BAB I PENDAHULUAN Bab ini berisi latar belakang masalah dari penelitian judul skripsi Analisis Perbandingan Algoritma Boldi-Vigna ζ1 Code dan Algoritma Even-Rodeh Code pada Kompresi File Teks, rumusan masalah, batasan

5 masalah, tujuan penelitian, manfaat penelitian, metode penelitian dan sistematika penulisan. BAB II LANDASAN TEORI Bab ini berisi teori-teori yang digunakan sebagai pendukung dalam penulisan penelitian, selain itu dalam bab 2 juga dijelaskan mengenai metode yang digunakan dalam penelitian. BAB III ANALISIS DAN PERANCANGAN SISTEM Bab ini terdiri dari tahap analisis sistem yang mencakup analisis masalah, analisis kebutuhan dan analisis proses kemudian desain/model perancangan dari program yang akan dibuat, dalam hal ini termasuk juga algoritma dari program tersebut. BAB IV IMPLEMENTASI DAN PENGUJIAN SISTEM Bab ini berisi mengenai implementasi dan pengujian dari program yang sistemnya telah dirancang dan dianalisis sebelumnya. BAB V KESIMPULAN DAN SARAN Bab terakhir berisi kesimpulan dari hasil penelitian yang telah selesai dilakukan, juga saran atau rekomendasi yang bermanfaat guna pengembangan dan penelitian lebih lanjut.

BAB 2 LANDASAN TEORI 2.1. Kompresi Data Dalam ilmu komputer, kompresi data merupakan ilmu atau seni dalam mengimplementasikan informasi pada suatu data ke dalam bentuk yang lebih padat (kecil) (Pu, 2005). Kompresi data merupakan seni atau ilmu yang merepresentasikan informasi dalam bentuk yang lebih ringkas. Data dapat berupa karakter dalam file teks, gambar atau urutan angka yang dihasilkan oleh proses lain. Dengan kata lain, menggunakan kompresi data, ukuran file tertentu dapat dikurangi. Dengan merujuk pada beberapa definisi diatas, maka dapat disimpulkan bahwa kompresi adalah cara untuk memadatkan data sehingga hanya memerlukan ruang penyimpanan lebih kecil sehingga lebih efisien dalam penyimpanan maupun dalam proses transfer data pada jaringan. Prinsip dasar kompresi data adalah memperkecil besar bit data untuk merepresentasi tiap-tiap karakter pada teks yang ingin dikompresi (Jamaluddin, 2013). Proses kompresi dan dekompresi pada data dapat ditunjukkan melalui diagram blok seperti pada Gambar 1.1 Uncompressed Data Kompresi Compressed Data Compressed Data Dekompresi Uncompressed Data Gambar 2.1 Diagram Blok Proses Kompresi dan Dekompresi Data (Pu, 2005)

7 2.2. Teknik Kompresi Data Jika dilihat dari segi kemungkinan data/file yang telah dikompresi untuk dapat dikembalikan ke data/file aslinya, teknik kompresi data terbagi dua yaitu kompresi data Lossless dan kompresi data Lossy (Pu, 2005). 2.2.1 Kompresi Lossless (Lossless Compression) Kompresi Lossless merupakan metode kompresi data yang memungkinkan data asli bisa dikembalikan secara utuh. Algoritma kompresi dikatakan lossless jika teknik kompresi data tersebut dapat mengembalikan data hasil kompresi ke data semula tanpa kehilangan informasi apapun dari data asli (Pu, 2005). Kompresi Lossless memiliki akurasi data yang terjaga antara sebelum dan sesudah proses kompresi meskipun dengan derajat kompresi yang lebih rendah. Contoh metode ini adalah Elias Delta Code, Elias Gama Code, Levenstein Code, Shanno-Fano Coding, Run Length Encoding, Even-Rodeh Code dan lain-lain. Konsep dasar kompresi Lossless dapat dilihat pada Gambar 2.2. Compression Original Restored Gambar 2.2 Diagram Blok Kompresi Lossless (Pu, 2005)

8 2.2.2 Kompresi Lossy (Lossy Compression) Kompresi Lossy merupakan metoda kompresi data yang tidak menghasilkan data asli sebelum kompresi. Meskipun perbedaan itu cukup dekfat, kompresi jenis ini tidak baik untuk kompresi data yang seperti data teks, melainkan sering digunakan pada data audio, berkas, dan gambar. Algoritma kompresi dikatakan lossy adalah teknik kompresi data dimana data mengalami sedikit atau banyak kehilangan data pada saat kompresi (Pu, 2005). Kompresi Lossy memiliki derajat kompresi yang lebih tinggi, tetapi akurasi data tidak terjaga antara sebelum dan sesudah proses kompresi karena ada beberapa detail data yang hilang. Contoh metode ini adalah Transform Coding, Walet, dan lain-lain. Konsep dasar kompresi lossy dapat dilihat pada gambar 2.3. Compression Original Restored Gambar 2.3 Diagram Blok Kompresi Lossy (Pu, 2005) 2.3. Konsep Kompresi Data Di dalam komputer, satu karakter dipresentasikan dalam bilangan ASCII (American Standard Code For Information Interchange) yaitu sebanyak 8 bit dalam baingan biner.jika ternhata jumlah bit-bit data tersebut bukan merupakan kelipatan 8, maka dibentuk variable baru sebagai penambahan ke bit-bit data itu agar bit data tersebut habis dibagi oleh 8. Variabel yang dimaksud disini adalah padding dan flag. a. Padding Padding adalah penambahan bit 0 sebanyak kekurangan jumlah bit-bit data pada hasil proses kompresi sehingga jumlah keseluruhan bit-bit data pada hasil kompresi habis

9 dibagi delapan. Sebagai contoh, misalkan terdapat bit bit data hasil kompresi 1111110111010111100001101. Terdapat 26 bit data dalam bilangan biner. Maka dilakukan penambahan bit 0 sebanyak 6 kali agar jumlah bit data tersebut dapat habis bila dibagi delapan. Sehingga bit-bit data tersebut menjadi 1111110111010111100001101000000 setelah diberikan padding (Batubara, 2017). b. Flag Bits Flag bits adalah penambahan bilangan biner sepanjang delapan bit setelah padding dimana flag bits ini adalah sejumlah bilangan yang memberikan sebuah tanda bahwa terdapat n buah padding di dalam bit-bit data hasil dari kompresi. Contoh misalkan bitbit data yang telah diberikan padding adalah 1111110111010111100001101000000. Karena terdapat 7 bit penambahan padding maka flag bits-nya adalah bilangan biner dari 7 dengan panjang 6 bit yaitu 00000110. Sehingga bit-bit datanya menjadi 1100101101010001100001101000000000000110 setelah diberikan flag bits (Batubara, 2017). 2.4 Parameter Analisis Kinerja Kompresi Pada kompresi terdapat beberapa faktor penting yang perlu diperhatikan sebagai bahan pertimbangan untuk mengukur kualitas dari suatu metode kompresi, serta mendapatkan hasil perbandingan dari kedua metode yang diuji, yaitu : 1. Compression Ratio (CR) Compression Ratio (CR) adalah perbandingan ukuran data sebelum dikompresi dengan setelah dikompresi. (Motta, 2006) C R = ukuran data setelah dikompresi ukuran data sebelum dikompresi Misalkan didapat sebuah nilai Compression Ratio sebesar 55%. Itu berarti setelah dikompresi ukuran data adalah 55% dari data sebelum dikompresi. 2. Bitrate Bitrate adalah teknik yang digunakan untuk mengodekan simbol dengan ratarata bit itu sendiri, yang dicari dengan membagi ukuran bit terkompresi dengan jumlah simbol unik (jenis karakter) pada setiap teks (Rao, 2000).

10 Bit rate = ukuran bit terkompresi jumlah jenis karakter 3. Space Savings (SS) Space Savings (SS) adalah persentase penghemaran rang (memori) setelah file dikompresi dengan mencari persentase selisih antara data awal sebelum dikompresi dengan hasil data yang telah dikompresi (Ida, 2006). ukuran data sebelum dikompresi ukuran data setelah dikompresi SS = ( ) 100% ukuran data sebelum dikompresi 4. Waktu Kompresi dan Dekompresi Waktu kompresi dan dekompresi adalah lama waktu yang dibutuhkan untuk melakukan proses kompresi dan dekompresi dari mulai pembacaan data hingga proses encoding pada data tersebut. 2.5 Algoritma 2.5.1. Algoritma Even-Rodeh Code Algoritma Even-Rodeh Code merupakan algoritma untuk mengkompresi data atau file dengan mengkodekan setiap karakter menggunakan beberapa rangkaian bit. Pembentukan bit pada algoritma ini mewakili masing-masing karakter dibuat berdasarkan frekuensi kemunculan setiap karakter. Algoritma Even-Rodeh Code ini bersifat lossless, dimana hal ini merupakan suatu kelebihan karena dengan kompresi lossless dapat meminimalisir adanya kehilangan atau kerusakan data yang terjadi pada sumber data asli yang sangat penting (Pu, 2005). Tahap membangun kode Even-Rodeh Code dengan n sebagai indeks dari karakter yaitu sebagai berikut : 1. Menghitung panjang bit. 2. Jika kode memiliki panjang bit 0 <= n <=3 maka nilai n diubah ke biner, tambahkan 0 didepan nilai biner sehingga bit berjumlah 3 digit. 3. Jika panjang kode sebanyak bit 4 <= n <= 7maka nilai n diubah ke biner, tambahkan 0 dibelakang nilai biner sehingga bit menjadi 4 digit. 4. Jika kode dengan panjang bit n >= 8 maka nilai n diubah ke biner, tambahkan angka 0 dibelakang nilai biner dari kode kemudian ditambahkan nilai biner dari panjang bit dari nilai biner kode tersebut didepan nilai biner kode.

11 Beberapa daftar kode Even-Rodeh Code dan jumlah bit kode Even-Rodeh Code berdasarkan frekuensi karakter terdapat pada Tabel 2.1 dan Tabel 2.2. Tabel 2.1 Kode algoritma Even-Rodeh Code N Even-Rodeh Code 0 000 1 001 2 010 3 011 4 100 0 7 111 0 8 100 1000 0 15 100 1111 0 16 100 10000 0 32 110 100000 0 100 111 1100100 0 Tabel 2.2 Jumlah Kode Algoritma Even-Rodeh Code Berdasarkan Variasi Karakter N Jumlah bit Even- Rodeh Code 0-3 3 4-7 4 8-15 8 16-31 9 32-63 10 64-127 11

12 Contoh sederhana pada proses kompresi serta dekompresi file dengan metode Even- Rodeh Code pada string GALUH ATIKA NABILA adalah sebagai berikut: Penjelasan dari string GALUH ATIKA NABILA sebelum dikompresi terdapat pada tabel 2.3. Tabel 2.3 String yang belum dikompresi Karakter ASCII ASCII Code Freq Bit Freq*Bit Code (Binary) G 71 01000111 1 8 16 A 65 01000001 5 8 40 L 76 01001100 2 8 16 U 85 01010101 1 8 8 H 72 01001000 1 8 8 Sp 32 00100000 2 8 16 T 84 01010100 1 8 8 I 73 01001001 2 8 16 K 75 01001011 1 8 8 N 78 01001110 1 8 8 B 66 01000010 1 8 8 Jumlah Bit 152 Bit Berdasarkan tabel diatas, maka didapat string bit sebelum dikompresi yaitu 01000111010000010100110001010101010010000010000001000001010101000100 1001010010110100000100100000010011100100000101000010010010010100110001 000001 dengan uraian sebagai berikut: 01000111 01000001 01001100 01010101 01001000 G A L U H

13 00100000 01000001 01010100 01001001 01001011 Sp A T I K 01000001 00100000 01001110 01000001 01000010 A Sp N A B 01001001 01001100 01000001 I L A Sebelum dilakukan proses kompresi, karakter akan diurutkan berdasarkan karakter yang memiliki frekuensi yang paling besar hingga yang paling kecil sehingga didapat n (panjang bit dalam karakter yang telah diurutkan) kemudian dilakukan proses pengkodean algoritma Even-Rodeh Code, maka didapat string hasil kompresi seperti pada tabel 2.4. Σ = G, A, L, U, H, Sp, T, I, K, N, B, L, dengan Sp = spasi Maka dibuat sebuah tabel untuk menghitung bit setelah di kompresi terlihat seperti pada tabel 2.4. Tabel 2.4 String yang sudah dikompresi dengan Even-Rodeh Code Σ Freq Even-Rodeh Code Bit Freq*Bit A 5 000 3 15 L 2 001 3 6 Sp 2 010 3 6 I 2 011 3 6 G 1 100 0 4 4 U 1 101 0 4 4 H 1 110 0 4 4 T 1 111 0 4 4

14 Σ Freq Even-Rodeh Code Bit Freq*Bit K 1 100 1000 0 8 8 N 1 100 1001 0 8 8 B 1 100 1010 0 8 8 Jumlah Bit 73 Bit Berdasarkan tabel diatas, maka didapat string bit sebelum dikompresi yaitu 10000000011010110001000011100111001000000001010010010000100101000110 01000 dengan uraian sebagai berikut: G A L U H 100 0 000 001 1010 1100 Sp A T I K 010 000 1110 011 10010000 A Sp N A B 000 010 10010010 000 10010100 I L A 011 001 000 Setelahnya dilakukan penambahan bit-bit padding dan flag bits diawal dan diakhir string bit sehingga panjang string bit bisa habis dibagi delapan. Karena jumlah string adalah 59 bit, tentu tidak habis dibagi delapan dan sisanya adalah 1. Sehingga

15 dibutuhkan bit 0 sebanyak 7 kali, maka padding adalah 0000000 dan flag bits-nya adalah bilangan biner dari 7 yaitu 00000111. Diperoleh: String bit hasil kompresi = 100000000110101100010000111001110010000000010100100100001001010001100 1000000000000000111 Total bit seluruhnya adalah penambahan padding dan flag adalah 73+7+8 = 88. Untuk proses dekompresi terhadap string bit yang telah dikompresi adalah dengan menentukan indeks terkahir untuk proses pembacaan string yaitu total panjang string bit seluruhnya dikurang dengan flag ditambah padding atau dapat ditulis: n = panjang string bit (flag+padding) n = 88 (7+8) n = 73 String bit yang dibaca adalah 73 string bit awal. Maka: G A L U H 100 0 000 001 1010 1100 Sp A T I K 010 000 1110 011 10010000

16 A Sp N A B 000 010 10010010 000 10010100 I L A 011 001 000 2.6.2 Algoritma Boldi-Vigna (ζ1) Kode Zeta (ζ) juga dikenal sebagai Boldi-Vigna code, diperkenalkan oleh Paolo Boldi dan Sebastiano Vigna sebagai keluarga Variable-Length Code yang merupakan pilihan terbaik untuk kompresi. Dimulai dengan hukum Zipf, seorang kuasa hukum empiris [Zipf 07] diperkenalkan oleh Linguis George K. Zipf. menyatakan bahwa frekuensi setiap kata dalam bahasa apapun kira-kira berbanding terbalik dengan posisinya dalam tabel frekuensi. Boldi-Vigna Zeta Code dimulai dengan bilangan bulat k positif yang menjadi faktor penyusutan kode zeta. Himpunan semua bilangan bulat positif dibagi dalam beberapa interval yaitu [2 0, 2 k - 1], [2 k, 2 2k - 1], [2 2k, 2 3k - 1], dan secara umum dapat dituliskan menjadi [2 hk, 2 (h + 1) k - 1]. Panjang setiap interval adalah 2 (h + 1) k - 2 hk (Salomon, 2007). Diberikan interval [0, z-1] dan sebuah integer x di interval ini, pertama kita hitung s =[ log2 z]. Jika x <2 s - z, pada s - 1 bit. Jika tidak, maka dikodekan sebagai (x - z - 2 s ) pada interval di s bit. Dengan latar belakang tersebut, akan dibahas bagaimana kode zeta dibangun. Nilai h dan k yang digunakan untuk membangun kode zeta n dalam dua bagian, nilai h + 1 sebgai unary (0 sebanyak h diikuti dengan 1), lalu diikuti oleh kode biner minimal dari n - 2 hk dalam interval [0, 2 (h + 1) k - 2 hk - 1] (Salomon, 2007). Contoh daftar kode Boldi-Vigna (ζ1) dapat dilihat pada tabel 2.5 seperti berikut:

17 Tabel 2.5 Kode Daftar Boldi-Vigna ζ1 N ζ1 1 1 2 010 3 011 4 00100 5 00101 6 00110 7 00111 8 0001000 9 0001001 10 0001010 11 0001011 12 0001100 13 0001101 14 0001110 15 0001111 16 000010000 Contoh sederhana pada proses kompresi dan dekompresi file dengan metode Boldi- Vigna (ζ1) Code pada string GALUH ATIKA NABILA adalah sebagai berikut:

18 Penjelasan dari string GALUH ATIKA NABILA sebelum dikompresi terdapat pada tabel 2.6. Tabel 2.6 String yang belum dikompresi Karakter ASCII ASCII Code Freq Bit Freq*Bit Code (Binary) G 71 01000111 1 8 16 A 65 01000001 5 8 40 L 76 01001100 2 8 16 U 85 01010101 1 8 8 H 72 01001000 1 8 8 Sp 32 00100000 2 8 16 T 84 01010100 1 8 8 I 73 01001001 2 8 16 K 75 01001011 1 8 8 N 78 01001110 1 8 8 B 66 01000010 1 8 8 Jumlah Bit 152 Bit Berdasarkan tabel diatas, maka didapat string bit sebelum dikompresi yaitu 01000111010000010100110001010101010010000010000001000001010101000100 1001010010110100000100100000010011100100000101000010010010010100110001 000001 dengan uraian sebagai berikut: 01000111 01000001 01001100 01010101 01001000 G A L U H 00100000 01000001 01010100 01001001 01001011 Sp A T I K

19 01000001 00100000 01001110 01000001 01000010 A Sp N A B 01001001 01001100 01000001 I L A Sebelum melakukan proses kompresi, karakter tersebut diurutkan terlebih dahulu berdasarkan dari karakter yang memiliki frekuensi terbesar ke terkecil sehingga didapat n (panjang bit dalam karakter yang telah diurutkan) kemudian dilakukan proses pengkodean algoritma Boldi-Vigna (ζ1) Code, maka didapat string hasil kompresi seperti pada tabel 2.7. Σ = G, A, L, U, H, Sp, T, I, K, N, B, L, dengan Sp = spasi Maka dibuat sebuah tabel untuk menghitung bit setelah di kompresi terlihat seperti pada tabel 2.7. Tabel 2.7 String yang telah dikompresi dengan Boldi-Vigna ζ1 Code Σ Freq Boldi-Vigna ζ1 Code Bit Freq*Bit A 5 1 1 5 L 2 010 3 6 Sp 2 011 3 6 I 2 00100 5 10 G 1 00101 5 5 U 1 00111 5 5 H 1 0001000 7 7 T 1 0001001 7 7 K 1 0001010 7 7 N 1 0001011 7 7 B 1 0001100 7 7 Jumlah Bit 72 Bit

20 Berdasarkan tabel diatas, maka didapat string bit sebelum dikompresi yaitu 00101101000111000100001110001001001000001010101100010111000110000100 0101. Sebelum ditulis ke sebuah file hasil kompresi dilakukan penambahan bit-bit padding dan flag bits diawal dan diakhir string bit sehingga panjang string bit bisa habis dibagi delapan. Karena jumlah string adalah 72 bit, tentu habis dibagi delapan. Sehingga tidak dibutuhkan bit 0 dan flag bits-nya adalah bilangan biner dari 0 yaitu 00000000. Diperoleh: String bit hasil kompresi = 001011010001110001000011100010010010000010101011000101110001100001000 10100000000 Total bit seluruhnya adalah penambahan padding dan flag adalah 72+8 = 80. Untuk proses dekompresi terhadap string bit yang telah dikompresi adalah dengan menentukan indeks terkahir untuk proses pembacaan string yaitu total panjang string bit seluruhnya dikurang dengan flag ditambah padding atau dapat ditulis: n = panjang string bit (flag+padding) n = 80 (0+8) n = 72 String bit yang dibaca adalah 72 string bit awal. Maka: G A L U H 00101 1 010 00111 0001000

21 Sp A T I K 011 1 0001001 00100 0001010 A Sp N A B 1 011 0001011 1 0001100 I L A 00100 010 1 2.7 Kompleksitas Algoritma Algoritma merupakan salah satu cabang ilmu dari ilmu komputer yang membahas prosedur penyelesaian suatu permasalahan. Dengan menggunakan algoritma yang baik maka komputer bisa menyelesaiakan perhitungan dengan cepat dan benar. Sebaliknya jika algoritma kurang baik maka penyelesaian lambat dan bahkan menyebabkan tidak dapat menemukan solusi yang diharapkan. Baik buruknya sebuah algoritma dapat dibuktikan dari kompleksitas waktu yang digunakan (Purwanto, 2008). Kompleksitas algoritma meliputi hal hal berikut ini : 1. Perancangan yang artinya kegiatan untuk melakukan pendeskripsian algoritma pada suatu tingkatan yang memiliki arti bahasa semu (pseudo) dan pembuktian kebenaran bahwa suatu algoritma dapat menyelesaikan suatu permasalahan yang diberikan (Purwanto, 2008). 2. Analisa yang berarti memberikan evaluasi kinerja suatu algoritma terhadap permasalahan yang diberikan. Dua hal yang digunakan untuk mengukur efektivitas suatu algoritma yaitu kompleksitas ruang (keadaan) dan kompleksitas waktu. Kompleksitas ruang berkaitan dengan sistem memori yang dibutuhkan pada eksekusi program. Kompleksitas waktu dari suatu algoritma berisi ekspresi bilangan dan jumlah langkah yang dibutuhkan sebagai fungsi dari ukuran permasalahan. Analisa asimtotik menghasilkan notasi Ο (Big Oh), ϴ (Big Theta), dan Ω (Big Omega) (Purwanto, 2008).

22 2.7.1. Big Theta Didefinisikan bahwa f(n) merupakan Theta dari g(n) dan dinotasikan f(n) = Θ(g(n)) jika dan hanya jika terdapat tiga konstanta positif n0, c1 dan c2 sedemikian sehingga berlaku c1g(n) f (n) c2g(n) ketika n > n0. Dalam grafik nilai f(n) di sebelah kanan n0 selalu berada di antara c1g(n) dan c2g(n) (Cormen, et al., 2009). Gambar 2.4 Grafik Θ (Cormen, et al., 2009) 2.8 Penelitian yang Relevan Berikut ini beberapa penelitian yang berkaitan dengan kompresi file teks dengan algoritma Even-Rodeh Code: 1. Budiman, M. A. dan Dian Rachmawati. 2017. On Using Goldbach Go Codes and Even-Rodeh Codes for Text Compression. Departemen Ilmu Komputer, Fakultas Ilmu Komputer dan Teknologi Informasi, Universitas Sumatera Utara. Dalam penelitian ini dapat di simpulkan bahwa algoritma Even-Rodeh Code lebih efisien dibandingkan dengan algoritma Goldbach Code, karena dalam segi penghematan memori, bitrate dan ratio compression algoritma Even-Rodeh Code lebih baik daripada algoritma Goldbach Go Codes. 2. Pada penelitian yang berjudul Perbandingan Algoritma Even-Rodeh Code dan Algoritma Variable Length Binary Encoding (VLBE) pada Kompresi File Teks oleh Ade Rani Abdullah pada tahun dapat disimpulkan bahwa dalam proses kompresi, algoritma Even-Rodeh Code dan algoritma Variable Length Binary Encoding (VLBE) dipengaruhi oleh jumlah variasi karakter. Hasil pengujian kompresi file teks *.rtf dengan karakter yang berbeda (heterogen) berdasarkan variabel Ratio of Compression (Rc), Compression Ratio (Cr),

23 Redundancy (Rd) dan waktu kompresi menunjukkan bahwa metode Even- Rodeh Code lebih baik dibandingkan dengan metode Variable Length Binary Encoding (VLBE) dengan Compression Ratio ratarata sebesar 60.546 %. Hasil pengujian dekompresi file teks dengan karakter yang berbeda metode Even Rodeh Code dan Variable Length Binary Encoding (VLBE) menunjukkan bahwa Even-Rodeh Code memerlukan waktu yang lebih sedikit untuk mengembalikan file teks hasil kompresi ke file teks semula, dengan ratarata 0.1187 milisekon. 3. Penelitian yang berjudul Analisis Perbandingan Algoritma Even-Rodeh Code dan Algoritma Fibonacci Code untuk Kompresi File Teks oleh Mhd. Ali Subada pada tahun 2018 dapat diperoleh bahwa dari hasil pengujian pada aplikasi kompresi file teks dengan karakter yang sama (homogen) berdasarkan Bitrate, Compression Ratio (CR), dan Waktu Dekompresi bahwah algoritma Even-Rodeh Code lebih baik untuk mengembalikan file teks hasil kompresi ke file teks semula, dengan rata-rata 0,004 millisekon.

BAB 3 ANALISIS DAN PERANCANGAN SISTEM 3.1. Analisis Sistem Analisis sistem merupakan salah satu tahap pembangunan sistem untuk menentukan proses identifikasi mengenai hal-hal yang akan dibutuhkan dan harus ada pada sistem, agar sistem tersebut dapat berjalan sesuai dengan tujuan utama. Tahapantahapan yang akan dilakukan dalam menganalisis sebuah sistem yaitu: 3.1.1. Analisis Masalah Analisis masalah merupakan tahapan pembangunan sistem untuk menentukan proses identifikasi sebab dan akibat dibuatnya sebuah sistem yang dapat berjalan agar sistem tersebut dapat berjalan sesuai dengan tujuan utama sistem dibangun. Permasalahan yang akan di angkat dari penelitian ini yaitu membandingkan algoritma Boldi-Vigna ζ1 Code dan Even-Rodeh Code untuk mengetahui algoritma kompresi terbaik diantara kedua algoritma tersebut. Diagram Ishikawa digunakan untuk memaparkan identifikasi masalah dengan menunjukkan sebab-sebab terjadinya suatu masalah. Analisis masalah ini akan lebih jelas melalui diagram Ishikawa yang dapat dilihat pada Gambar 3.1.

25 Material Manusia File teks (.txt) berukuran besar Sulit menemukan algoritma yang efisien dalam kompresi file teks Metode Kebiasaan menyimpan data yang tidak diperlukan Tidak puas dengan waktu transfer data yang lama Belum ada aplikasi kompresi yang menggunakan algoritma Boldi- Vigna ζ 1 Code dan Even-Rodeh Code Mesin Memperkecil ukuran file teks dengan Boldi- Vigna ζ 1 Code dan Even-Rodeh Code Gambar 3.1 Diagram Ishikawa Analisis Masalah Pada Gambar Diagram 3.1 dapat dilihat bahwa terdapat empat kategori penyebab masalah pada penelitian Analisis Perbandingan Algoritma Even-Rodeh Code dan Algoritma Boldi-Vigna ζ1 Code Untuk Kompresi File Teks yang digambarkan dengan tanda panah yang mengarah ke panah utama, yaitu saling berhubungan dengan Material, Metode, Manusia, dan Sistem. Setiap detail penyebab masalah tersebut digambarkan dengan tanda panah yang mengarah pada masing-masing kategori. 3.1.2. Analisis Kebutuhan Analisis kebutuhan sistem terdiri dari dua jenis kebutuhan, yaitu kebutuhan fungsional dan non-fungsional. Kebutuhan fungsional sistem membahas tentang fungsifungsi yang harus ada pada sistem yang dirancang. Sedangkan kebutuhan nonfungsional membahas tentang fungsi-fungsi yang berperan sebagai pelengkap sistem agar mendapat feedback dari pengguna. a. Kebutuhan Fungsional Kebutuhan fungsional yang harus terdapat pada sistem yang dirancang meliputi beberapa hal di antaranya: 1. Sistem dapat membaca string yang ada pada file teks berekstensi.txt.

26 2. Sistem dapat melakukan proses kompresi maupun dekompresi dengan menggunakan algoritma Boldi-Vigna ζ1 Code dan Even-Rodeh Code pada file teks. 3. Sistem dapat menghitung Compression Ratio (CR), Space Saving (SS), bit rate serta size bit, waktu kompresi dan dekompresi data. b. Kebutuhan non - fungsional Kebutuhan non-fungsional yang harus dimiliki oleh sistem yang dirancang adalah sebagai berikut : 1. Performa Sistem dapat melakukan proses kompresi dan dekompresi file teks dengan jarak waktu yang sedikit. 2. Minimalis Sistem yang dibangun harus dirancang dengan tampilan yang sederhana agar mudah digunakan oleh pengguna. 3. Informasi Sistem menyediakan informasi yang berkaitan dengan data file yang akan atau telah dikompresi oleh sistem. 4. Kualitas Sistem yang dibangun harus mampu memberikan hasil kompresi dan dekompresi yang tepat dan akurat, serta menjamin integritas data 5. Dokumentasi Sistem dapat menyimpan file hasil proses kompres maupun hasil dekompresi. 3.2. Pemodelan Sistem Pemodelan sistem merupakan tahapan yang mengambarkan komponenkomponen dari sistem yang akan dibangun sesuai dengan kebutuhan sistem. Dalam sistem ini terdapat dua proses utama yaitu proses kompresi dan proses dekompresi dengan menggunakan metode Even-Rodeh Code dan Boldi-Vigna ζ1 Code. Permodelan sistem akan digambarkan dengan menggunakan use case diagram, activity diagram dan sequence diagram.

27 3.2.1. Use Case Diagram Use Case Diagram adalah metode untuk merangkum persyaratan fungsional sebuah sisitem. Use case memaparkan interaksi antara para pengguan sistem dengan sistem tersebut, dengan menampilkan gambaran bagaimana sistem itu digunakan. Dalam usecase, para pengguna disebut sebagai aktor. Aktor merupakan peran yang dimainkan seseorang dalam kaitannya dengan sistem. Use case diagram menampilkan aktor, use case, dan hubungan atar keduanya. Use case diagram dari sistem dipaparkan pada Gambar Gambar 3.2 Use Case Diagram Pada Sistem Use Case Diagram pada Gambar 3.2 menjelaskan bahwa sistem dapat di akses oleh seorang pengguna (aktor) dimana pengguna tersebut dapat melakukan kompresi maupun dekompresi dengan dua algoritma yang digunakan, yaitu algoritma Boldi- Vigna ζ1 Code dan Even-Rodeh Code. Hal pertama yang dilakukan ketika melakukan kompresi yaitu memilih file yang ingin dikompresikan. Lalu memilih algoritma apa yang akan digunakan pada proses kompresi. Saat proses kompresi berlangsung, file hasil kompresi secara otomatis tersimpan. pengguna juga dapat mereset sistem. Begitu juga untuk melakukan dekompresi, memilih file yang terkompresi terlebih dahulu dengan membuka file berekstensi *.bvc *.erc, kemudian proses dekompresi dilakukan baik menggunakan algoritma Boldi-Vigna ζ1 Code dan Even-

28 Rodeh Code. Setelah itu user dapat menyimpan file hasil dekompresi atau melakukan reset terhadap sistem. 3.2.2. Activity diagram pada proses kompresi Boldi-Vigna ζ1 Code Activity diagram ini merupakan gambaran proses kompres algoritma Boldi- Vigna ζ1 Code yang berjalan pada sistem dapat di gambarkan pada activity diagram pada Gambar 3.3. Gambar 3. 3 Activity Diagram proses Kompresi Boldi-Vigna ζ1 Code

29 3.2.3. Activity diagram pada proses kompresi Even-Rodeh Code Activity diagram ini merupakan gambaran proses kompresi algoritma Even- Rodeh Code yang berjalan pada sistem dapat di gambarkan pada activity diagram pada Gambar 3.4. Gambar 3. 4 Activity Diagram proses Kompresi Even-Rodeh Code Diagram diatas memaparkan interaksi aktifitas antara pengguna sistem secara terstruktur. Pada Gambar 3.3 kotak paling kiri merupakan aktifitas yang dilakukan oleh

30 pengguna, sedangkan kotak sebelah kanan adalah respon yang diberikan sistem terhadap aktifitas yang dilakukan pengguna terhadap sistem. 3.2.4. Sequence Diagram Sequence diagram merupakan gambaran mengenai interaksi antar objek melalui pesan dalam bentuk eksekusi dimana interaksi tersebut disusun berdasarkan urutan waktu. Sequence diagram untuk sistem ini dapat dilihat pada gambar seperti berikut. 1. Sequence diagram proses kompresi yang terdapat pada sistem dapat dilihat pada gambar 3.5. Gambar 3.5 Sequence diagram proses kompresi

31 2. Sequence diagram proses dekompresi yang terdapat pada sistem dapat dilihat pada gambar 3.6. Gambar 3.6 Sequence diagram proses dekompresi 3.3. Pseudocode Pseudocode adalah kode yang menyerupai program yang dapat menjelaskan cara bagaimana menyelesaikan suatu masalah. Pseudocode mudah dipahami karena kodekodenya mirip dengan program sebenarnya, sehingga sering digunakan untuk menuliskan suatu algoritma.

32 3.3.1. Pseudocode Algoritma Boldi-Vigna ζ1 Code Function BoldiVignaCodes(n) int k 1 int h 0 int hmax Math.Pow(2, (h + 1) * k) 1 while (n > hmax) do h h + 1 hmax Math.Pow(2, (h + 1) * k) 1 end while string unary "1".PadLeft(h + 1, '0') int minbincodeorx n - Math.Pow(2, h * k) int z Math.Pow(2, (h + 1) * k) - Math.Pow(2, h * k) int s Math.Ceiling(Math.Log(z,2) int encodevalue minbincodeorx string encodebin if minbincodeorx >= Math.Pow(2, s) z encodevalue Math.Abs(Math.Abs(minBinCodeorX - z) - Math.Pow(2, s)) encodebin DecToBin(encodedValue).PadLeft(s,'0').Substrin g(0,s) else encodebin DecToBin(encodedValue).PadLeft(s - 1, '0').Substring(0, s-1) return unary+""+encodebin 3.3.2. Pseudocode Algoritma Even-Rodeh Code Function EvenRodehCodes(n) if n<4 c DecToBin(n) int lc c.length for i 0 to 3 lc do code.append( 0 ) end for code.append( c ) else if (n >= 4 && n < 8) c DecToBin(n) code.append( c ) code.append( 0 ) else c DecToBin(n) code.append(dectobin(c.length)) code.append( c ) code.append( 0 ) return code

33 3.4. Flowchart 3.4.1. Flowchart sistem secara umum Perancangan sistem secara umum digambarkan dengan flowchart seperti pada gambar 3.7. b. Flowchart Proses Dekompresi a. Flowchart Proses Kompresi Gambar 3.7 Flowchart Sistem Secara Umum

34 3.4.2. Flowchart Algoritma Boldi-Vigna ζ1 Code Berikut Flowchart kompresi dengan algoritma Boldi-Vigna ζ1 Code seperti yang terlihat pada gambar 3.8. Mulai hmax = (2^(h+1)*k)-1 h = 0 k = 1 Masukkan n n > hmax tidak unary = 1.Padleft(h+1, 0') ya h = h + 1 minbincodeorx = n -2^(h*k) hmax = (2^(h+1)*k)-1 z = 2^ (h + 1) * k) 2^( h * k) s = encodebin = minbincodeorx >= (2 ^ s) - z ya encodevalue = (minbincodeorx - z) (2 ^ s)) tidak encodebin = DecToBin(encodeValue).PadL eft(s - 1, '0').Substring(0, s-1); encodebin = DecToBin(encodeValue).PadL eft(s, '0').Substring(0,s) bvc = unary+""+encodebin Selesai Gambar 3.8 Flowchart algoritma Boldi-Vigna ζ1 Code

35 3.4.3. Flowchart Algoritma Even-Rodeh Code Berikut Flowchart kompresi dengan algoritma Even-Rodeh Code seperti yang terlihat pada gambar 3.9.

36 Mulai Masukkan nilai n c = DecToBin(n) tidak n >=4 && n < 8 tidak n < 4 ya ya lc = len (c) c = DecToBin(n) c = DecToBin(n) lnbin = DecToBin(lc) erc = c + 0 lc = len (c) erc = lnbin + c + 0 i = 0 erc = erc + c tidak i < 3 - lc ya erc = erc + 0 erc i ++ Selesai Gambar 3. 9 Flowchart algoritma Even-Rodeh Code 3.5. Perancangan Antarmuka Perancangan antaramuka sistem berperan penting dalam mendukung kualitas pembangunan suatu sistem. Perancangan antarmuka sistem dapat memberikan

37 pengaruh penting antara pengguna dan sistem dalam berkomunikasi. Sistem yang memiliki perancangan antarmuka yang sulit di mengerti oleh pengguna, maka memungkinkan pengguna melakukan kesalahan pada saat menjalankan sistem. Oleh sebab itu diperlukan perancangan antarmuka yang efisien, sederhana dan menarik sehingga mudah dimengerti dan dijalankan oleh pengguna. 3.5.1. Halaman Home Halaman Home merupakan tampilan pertama kali yang muncul ketika sistem dijalankan. Halaman home menjelaskan secara singkat bagian-bagian sistem dan bagaimana sistem itu dibangun Halaman ini berisi nama sistem, nama pembuat sistem, nama institusi, serta menu yang disediakan oleh sistem. Masing-masing menu dengan design tampilannya menunjukkan fungsinya masing-masing dan memberikan akses secara langsung kepada pengguna. Rancangan halaman home pada aplikasi dapat dilihat pada gambar 3.10. Gambar 3.10 Rancangan Halaman Utama Komponen yang digunakan untuk perancangan interface halaman utama form Home berdasarkan Gambar 3.10. adalah sebagai berikut: 1. Tool Strip Menu : digunakan untuk memilih menu Home 2. Tool Strip Menu : digunakan untuk memilih menu Compression 3. Tool Strip Menu : digunakan untuk memilih menu Decompression

38 4. Tool Strip Menu : digunakan untuk memilih menu Help 5. Tool Strip Menu : digunakan untuk memilih menu About 6. Label : berisi judul sistem 7. PictureBox : berisi logo institusi 8. Label : berisi nama pembuat sistem 3.5.2. Form Compression Pada form compression terdapat button untuk memilih file yang akan dikompresi, richtextbox untuk isi file yang akan dikompresi, string bit sebelum dan setelah dikompresi, data hasil kompresi dan reset. Rancangan interface form compression pada aplikasi dapat dilihat pada Gambar 3.11. Gambar 3.11 Form Compression pada sistem Komponen yang digunakan untuk perancangan interface form Compression berdasarkan Gambar 3.11. adalah sebagai berikut: 1. Tool Strip Menu : digunakan untuk memilih menu Home 2. Tool Strip Menu : digunakan untuk memilih menu Compression 3. Tool Strip Menu : digunakan untuk memilih menu Decompression 4. Tool Strip Menu : digunakan untuk memilih menu Help 5. Tool Strip Menu : digunakan untuk memilih menu About

39 6. Button : button untuk memilih file 7. TextBox : informasi alamat/path file yang dipilih pada device 8. TextBox : informasi mengenai total bit sebelum dikompresi 9. RadioButton :menjalankan proses kompresi dengan Boldi-Vigna Code 10. RadioButton :menjalankan proses kompresi dengan Even-Rodeh Code 11. Button : melakukan proses kompresi 12. Button : mengatur ulang proses kompresi 13. RichTextBox : berisi string bit setelah dikompresi 14. TextBox :menampilkan informasi total size bit setelah dikompresi 15. RichTextBox : berisi string bit dari teks yang dipilih 16. TextBox : informasi nilai compression ratio 17. TextBox : informasi nilai bit rate 18. TextBox : informasi nilai space saving 19. TextBox : informasi mengenai waktu kompresi 20. RichTextBox : berisi teks dari file yang dipilih 3.5.3. Form Decompression Pada Form Dekompresi terdapat button yang berguna dalam mengeksekusi file yang telah dikompresi. Form Dekompresi pada aplikasi dapat dilihat pada Gambar 3.12.

40 Gambar 3.12 Form Decompression pada Sistem Komponen yang digunakan untuk perancangan interface Halaman Dekompresi berdasarkan Gambar 3.12. adalah sebagai berikut: berfungsi untuk menampilkan tampilan Beranda dari sistem yang ada. 1. Tool Strip Menu : digunakan untuk memilih menu Home 2. Tool Strip Menu : digunakan untuk memilih menu Compression 3. Tool Strip Menu : digunakan untuk memilih menu Decompression 4. Tool Strip Menu : digunakan untuk memilih menu Help 5. Tool Strip Menu : digunakan untuk memilih menu About 6. Button : button untuk memilih file 7. TextBox : informasi alamat/path file yang dipilih pada device 8. TextBox :menampilkan informasi total size bit setelah dikompresi 9. RichTextBox : berisi string bit setelah dikompresi 10. Button : melakukan proses dekompresi 11. Button : mengatur ulang proses dekompresi 12. RichTextBox : berisi teks dari file hasil dekompresi 13. TextBox : informasi mengenai total bit setelah proses dekompresi 14. Button : menyimpan file hasil dekompresi

41 3.5.4. Form Help Berisikan keterangan yang dapat membantu user dalam mengoperasikan sistem yang ada Form. Bantuan pada aplikasi dapat dilihat pada Gambar 3.13. Gambar 3.13 Form Help pada Sistem Komponen yang digunakan untuk perancangan interface Halaman Bantuan berdasarkan Gambar 3.13. adalah sebagai berikut: 1. Tool Strip Menu : digunakan untuk memilih menu Home 2. Tool Strip Menu : digunakan untuk memilih menu Compression 3. Tool Strip Menu : digunakan untuk memilih menu Decompression 4. Tool Strip Menu : digunakan untuk memilih menu Help 5. Tool Strip Menu : digunakan untuk memilih menu About 6. Label :menampilkan teks keterangan bantuan untuk menu Compression dan Decompression 7. TextBox :menampilkan teks mengenai keterangan dalam menggunakan menu Kompresi dan Dekompresi yang ada pada sistem.

42 3.5.5. Form About Berisikan informasi mengenai informasi pembuatan di dalam sistem. Form Tentang pada aplikasi dapat dilihat pada Gambar 3.14. Gambar 3.14 Form About pada Sistem Komponen yang digunakan untuk perancangan interface Halaman Tentang berdasarkan Gambar 3.14. adalah sebagai berikut: 1. Tool Strip Menu : digunakan untuk memilih menu Home 2. Tool Strip Menu : digunakan untuk memilih menu Compression 3. Tool Strip Menu : digunakan untuk memilih menu Decompression 4. Tool Strip Menu : digunakan untuk memilih menu Help 5. Tool Strip Menu : digunakan untuk memilih menu About 6. Label : berfungsi untuk menampilkan teks berisi judul dari sistem yang telah dibuat. 7. Group Box : berfungsi untuk mengelompokkan Button dan TextBox dalam sistem. 8. Label : berfungsi untuk menampilkan teks berisi judul dari sistem yang telah dibuat.

BAB 4 IMPLEMENTASI DAN PENGUJIAN SISTEM 4.1. Implementasi Algoritma 4.1.1. Implementasi Algoritma Boldi-Vigna ζ1 Code Proses analisis kompresi file teks dengan menggunakan algoritma Boldi-Vigna ζ1 Code. Di bawah ini adalah contoh proses kompresi file teks dengan menggunakan algoritma Boldi-Vigna ζ1 Code. Terdapat file teks yang berisikan string KUTU BUKU BACA BUKU KALKULUS. Dapat dilihat pada Tabel 4.1 untuk mengukur string itu di dalam komputer. Tabel 4.1 Ukuran String Sebelum Dikompresi Karakter ASCII ASCII Code Freq Bit Freq*Bit Code (Binary) K 75 01001011 5 8 40 U 85 01010101 8 8 64 T 84 01010100 1 8 8 Sp 32 00100000 4 8 32 B 66 01000010 3 8 24 A 65 01000001 3 8 24 C 67 01000011 1 8 8 L 76 01001100 2 8 16 S 83 01010011 1 8 8 Jumlah Bit 224 Bit

44 Berdasarkan kode ASCII, satu karakter bernilai delapan bit bilangan biner. Sehingga 28 karakter pada string mempunyai nilai biner sebanyak 224 bit. Sebelum melakukan proses kompresi, karakter terlebih dahulu diurutkan dari frekuensi terbesar ke yang terkecil. Proses kompresi untuk algoritma Boldi-Vigna ζ1 Code dapat dilihat pada tabel 4.2. Tabel 4.2 Ukuran String Setelah Dikompresi Dengan Boldi-Vigna ζ1 Code N Σ Freq Boldi-Vigna ζ1 Code Bit Freq*Bit 1 U 8 1 1 8 2 K 5 010 3 15 3 Sp 4 011 3 12 4 B 3 00100 5 15 5 A 3 00101 5 15 6 L 2 00110 5 10 7 T 1 00111 5 5 8 C 1 0001000 7 7 9 S 1 0001001 7 7 Jumlah Bit 94 Bit Berdasarkan tabel diatas, maka didapat string bit sebelum dikompresi yaitu 01010011110110010010101011001000010100010000010101100100101010110100 01010011001010011010001001 dengan uraian sebagai berikut: K U T U Sp 010 1 00111 1 011

45 B U K U Sp 00100 1 010 1 011 B A C A Sp 00100 00101 0001000 00101 011 B U K U Sp 00100 1 010 1 011 K A L K 010 00101 00110 010 U L U S 1 00110 1 0001001 Sebelum ditulis ke sebuah file hasil kompresi dilakukan penambahan bit-bit padding dan flag bits diawal dan diakhir string bit sehingga panjang string bit bisa habis dibagi delapan. Karena jumlah string adalah 94 bit, tentu tidak habis dibagi delapan dan sisanya adalah 6. Sehingga dibutuhkan bit 0 sebanyak 2 kali, maka padding adalah 00 dan flag bits-nya adalah bilangan biner dari 4 yaitu 00000010. Diperoleh: String bit hasil kompresi = 010100111101100100101010110010000101000100000101011001001010101101000 10100110010100110100010010000000010 Total bit seluruhnya adalah penambahan padding dan flag adalah 94+2+8 = 104. Dari hasil kompresi dengan algoritma Boldi-Vigna ζ1 Code di atas dapat dihitung kinerja kompresinya yaitu :

46 a. Compression Ratio C R = C R = 104 224 ukuran data setelah dikompresi ukuran data sebelum dikompresi C R = 0,4643 b. Bitrate Bitrate = Bitrate = 104 9 ukuran data setelah dikompresi jumlah h karakter unik teks Bitrate = 11 bits symbol c. Space Savings (SS) ukuran data sebelum dikompresi ukuran data setelah dikompresi SS = ( ) 100% ukuran data sebelum dikompresi 224 104 SS = ( ) 100% 224 SS = 53.57% 4.1.2. Implementasi Algoritma Even-Rodeh Code Proses analisis kompresi file teks dengan menggunakan algoritma Even-Rodeh Code. Di bawah ini adalah contoh proses kompresi file teks dengan menggunakan algoritma Even-Rodeh Code. Terdapat file teks yang berisikan string KUTU BUKU BACA BUKU KALKULUS. Dapat dilihat pada Tabel 4.1. untuk mengukur string itu di dalam komputer. Berdasarkan kode ASCII, satu karakter bernilai delapan bit bilangan biner. Sehingga 28 karakter pada string mempunyai nilai biner sebanyak 224 bit. Sebelum melakukan proses kompresi, karakter terlebih dahulu diurutkan dari frekuensi terbesar ke yang terkecil. Proses kompresi untuk algoritma Even-Rodeh Code dapat dilihat pada tabel 4.3.

47 Tabel 4.3 Ukuran String Setelah Dikompresi Dengan Even-Rodeh Code N Σ Freq Even-Rodeh Code Bit Freq*Bit 0 U 8 000 3 24 1 K 5 001 3 15 2 Sp 4 010 3 12 3 B 3 011 3 9 4 A 3 1000 4 12 5 L 2 1010 4 8 6 T 1 1100 4 4 7 C 1 1110 4 4 8 S 1 10010000 8 8 Jumlah Bit 96 Bit Berdasarkan tabel diatas, maka didapat string bit sebelum dikompresi yaitu 00100011000000100110000010000100111000111010000100110000010000100011 0001010001000101000010010000 dengan uraian sebagai berikut: K U T U Sp 001 000 1100 000 010 B U K U Sp 011 000 001 000 010 B A C A Sp 011 1000 1110 1000 010

48 B U K U Sp 011 000 001 000 010 K A L K 001 1000 1010 001 U L U S 000 1010 000 10010000 Sebelum ditulis ke sebuah file hasil kompresi dilakukan penambahan bit-bit padding dan flag bits diawal dan diakhir string bit sehingga panjang string bit bisa habis dibagi delapan. Karena jumlah string adalah 96 bit, tentu habis dibagi delapan. Sehingga tidak diperlukan untuk menambahkan padding bit 0 dan flag bits-nya adalah bilangan biner dari 0 yaitu 00000000. Diperoleh: String bit hasil kompresi = 001000110000001001100000100001001110001110100001001100000100001000110 00101000100010100001001000000000000 Total bit seluruhnya adalah penambahan padding dan flag adalah 96+8 = 104. Dari hasil kompresi dengan algoritma Even-Rodeh Code di atas dapat dihitung kinerja kompresinya yaitu : a. Compression Ratio C R = C R = 104 224 ukuran data setelah dikompresi ukuran data sebelum dikompresi C R = 0,4643

49 b. Bitrate Bitrate = Bitrate = 104 9 ukuran data setelah dikompresi jumlah h karakter unik teks Bitrate = 11 bits symbol c. Space Savings (SS) 100% ukuran data sebelum dikompresi ukuran data setelah dikompresi SS = ( ) 100% ukuran data sebelum dikompresi 224 104 SS = ( ) 100% 224 SS = 53.57% 4.2. Implementasi Sistem Pada tahap ini sistem dibangun menggunakan bahasa pemrograman C# dan menggunakan aplikasi Sharp Develop 5.1, pada proses membangun sistem ini akan dibagi lima form dalam bahasa C# di antaranya ada form Beranda, Tab Kompresi, Tab Dekompresi, Tab Bantuan dan Tab Tentang. 4.2.1. Form Home Form home adalah tampilan pertama kali muncul saat aplikasi dijalankan. Form home dapat dilihat pada Gambar 4.1. Gambar 4.1 Tampilan Halaman Awal Form Home

50 4.2.2. Form Compression Form compression adalah Tab yang menampilkan proses kompresi. Tampilan form compression dapat dilihat pada Gambar 4.2. Ada beberapa fungsi dari interface form compression di bawah ini : 1. Button Open berfungsi untuk memanggil atau menampilkan lokasi file yang akan di kompresi. 2. Text Box merupakan informasi tempat pengambilan dari file yang akan dikompresi. 3. Rich Text Box untuk menampilkan isi file yang telah di panggil dari direktori. 4. Group Box digunakan untuk mengelompokkan Rich Text Box yang berfungsi untuk menampilkan file teks yang telah dipanggil. 5. Button Kompresi berfungsi sebagai tombol perintah untuk mengkompresi file text. 6. Radio Button digunakan untuk menentukan inputan metode atau algoritma apa yang akan digunakan. 7. Group Box informasi digunakan untuk mengelompokkan setiap Label dan Text Box yang berfungsi untuk menampilkan hasil dari Compression Ratio (CR), Bitrate, Space Saving dan Waktu Kompresi pada saat proses kompresi bejalan. 8. Tombol Button Reset berfungsi untuk menghapus hasil dari tampilan file teks yang telah dipanggil, menghapus karakter unik dari hasil kompresi, menghapus informasi parameter tanpa menghapus file terkompresi yang sudah disimpan.

51 Gambar 4.2 Tampilan Form Compression 4.2.3. Form Decompression Form Decompression adalah form yang digunakan untuk melakukan proses dekompresi. Tampilan form decompression dapat dilihat pada Gambar 4.3. Ada beberapa fungsi interface di form decompression dibawah ini: 1. Tombol Button open berfungsi untuk memanggil atau menampilkan lokasi file yang sudah dikompresi. 2. Group Box Hasil digunakan untuk mengelompokkan Rich Text Box yang berfungsi untuk menampilkan simbol unik hasil dari kompresi. 3. Tombol Button decompress adalah tombol perintah untuk mendekompresi file teks (simbol unik) yang sudah dikompresi terlebih dahulu, sehingga yang muncul tidak lagi simbol unik melainkan file teks sebelum dikompresi. 4. Group Box Informasi digunakan untuk mengelompokkan setiap Label, Rich Text Box, dan Text Box yang berfungsi untuk menampilkan waktu dan hasil dari dekompresi. 5. Tombol Button Reset berfungsi untuk menghapus hasil dari tampilan file teks yang telah dipanggil, menghapus karakter unik dari hasil kompresi, menghapus informasi waktu dan hasil dekompresi.

52 Gambar 4.3 Tampilan Form Decompression 4.2.4. Form Help yang dibuat Form Help berfungsi sebagai informasi tentang cara pengoperasian sistem Gambar 4.4 Tampilan Form Help

53 4.2.5. Form About Form About adalah form yang digunakan hanya untuk menampilkan informasi sistem yang dibuat dan informasi tentang penulis. Gambar 4.5 Tampilan Form About 4.3. Pengujian Sistem Tahap ini merupakan proses mengidentifikasi hasil dari implementasi sistem apakah sistem telah berjalan sesuai dengan fungsi yang sebelumnya telah ditentukan pada tahap analisis dan perancangan sistem. Tahap pengujian sistem ini dilakukan pada file teks dengan format *.txt. Proses utama dari sistem ini adalah proses pengujian kompresi dan proses pengujian dekompresi. 4.3.1. Pengujian Proses Kompresi Tahap awal untuk melakukan proses kompresi adalalah menekan Tab Kompresi. Ketika tampilan form kompresi muncul selanjutnya lakukan langkahlangkah berikut ini untuk melakukan kompresi : 1. Klik tombol Buka untuk membuka File Dialog, dan pilih file teks (*.txt) sebagai file yang akan dikompresi. 2. Setelah dipilih file yang akan dikompresi, isi file yang dipilih akan muncul di Rich Text Box yang berada di dalam Group Box File Teks.

54 3. Klik tombol Compress untuk melakukan proses kompresi, otomatis akan ditampilkan jumlah bit awal sebelum terkompresi, jumlah bit terkompresi, dari Algoritma Boldi-Vigna ζ1 Code dan Algoritma Even-Rodeh Code yang akan muncul di Text Box. 4. Klik tombol Reset apabila user akan mengulangi proses kompresi, dan tampilan data hasil file yang telah terkompresi akan terhapus. Gambar 4.6 Tampilan Proses Kompresi Dari Gambar 4.6. Pada saat proses kompresi, akan ditampilkan secara otomatis jumlah bit awal sebelum terkompresi, jumlah bit terkompresi dan parameter dari Algoritma Even-Rodeh Code dan Algoritma Boldi-Vigna ζ1 Code yang akan muncul di Text Box.

55 Gambar 4.7 Tampilan Kotak Dialog Save File Pada Proses Kompresi Gambar 4.7 adalah kotak dialog untuk menentukan direktori dan menyimpan file yang telah terkompresi. Gambar 4. 8 Proses Kompresi Setelah Di Atur Ulang Gambar 4.8 adalah form untuk mengulangi proses kompresi, apabila user mengklik tomol atur ulang maka semua hasil kompresi yang di tampilkan pada Gambar 4.7 akan terhapus.

56 4.3.2. Pengujian Proses Dekompresi Tahap awal untuk melakukan proses dekompresi adalah menekan Tab Dekompresi. Ketika tampilan form Dekompresi muncul, selanjutnya lakukan langkahlangkah berikut ini untuk melakukan proses dekompresi : 1. Klik tombol Buka untuk menampilkan lokasi kotak dialog, dan pilih file hasil kompresi (*.bvc atau *.erc) sebagai masukan. Setelah dipilih file hasil kompresi, akan muncul hasil kompresi di Rich Text Box. 2. Klik tombol Dekompresi untuk melakukan proses dekompresi. Klik tombol Buka untuk menampilkan lokasi kotak dialog, dan pilih file hasil kompresi (*.bvc atau *.erc) sebagai masukan. Setelah dipilih file hasil kompresi, akan muncul hasil kompresi di Rich Text Box di dalam Group Box Hasil Kompresi. Gambar 4. 9 Tampilan Menu Dekompresi

57 Gambar 4.10 Tampilan Kotak Dialog Save File Pada Proses Dekompresi Gambar 4.10 adalah kotak dialog untuk menentukan direktori dan menyimpan file yang telah didekompresi. Gambar 4.11 Proses Dekompresi Gambar 4.11 adalah tampilan proses dekompresi dari file hasil kompresi dari file teks yang telah kita pilih sebelumnya..

58 4.3.3. Hasil Pengujian Dari hasil pengujian penelitian ini adalah proses kompresi dan dekompresi yang telah dilakukan terhadap string dengan dua jenis yang berbeda, yaitu string dengan karakter yang sama (String Homogen) dan string yang terdiri dari beberapa jenis karakter yang berbeda (String Heterogen). File yang akan digunakan untuk String Heterogen dan String Homogen terdapat pada Tabel 4.4 dan Tabel 4.5. Tabel 4.4 File Berisi String Homogen Frekuensi Karakter String Homogen 1 G 10 GGGGGGGGGG 100 1000 10000 GGGGGGGGGGGGGGGGGGGGGGGGGGGGG GGGGGGGGG G GGGGGGGGGGGGGGGGGGGGGGGGGGGGG GGGGGGGGGGGGGGGGGGGGGGGGGGGGG GGGGG G GGGGGGGGGGGGGGGGGGGGGGGGGGGGG GGGGGGGGGGGGGGGGGGGGGGGGGGGGG GGGGGGGGGGGGGGGGGGGGGGGGGGGGG GGGGG G

59 Tabel 4.5 File Berisi String Heterogen Frekuensi Karakter Jenis Karakter String Heterogen 1 1 0 10 10 012345ABCDE 012345ABCDE012345ABCDE012345ABCDE 100 10 012345ABCDE012345ABCDE012345ABCDE 012345ABCDE012345ABCDE012345ABCDE 012345ABCDE 012345ABCDE012345ABCDE012345ABCDE 1000 10 012345ABCDE012345ABCDE012345ABCDE 012345ABCDE012345ABCDE012345ABCDE 012345ABCDE012345ABCDE.ABCDE 012345ABCDE012345ABCDE012345ABCDE 012345ABCDE012345ABCDE012345ABCDE 10000 10 012345ABCDE012345ABCDE012345ABCDE 012345ABCDE012345ABCDE012345ABCDE 012345ABCDE.ABCDE 4.3.4. Pengujian String Homogen Hasil dari uji String Homogen yang dilakukan oleh algoritma Boldi-Vigna ζ1 Code dan algoritma Even-Rodeh Code dapat dilihat pada Tabel 4.6 dan Tabel 4.7.

60 Tabel 4.6 Hasil Pengujian String Homogen dengan Boldi-Vigna ζ1 Code String Homogen Boldi-Vigna ζ1 Code Jumlah Jenis Bit Bit Bitrate SS Waktu Waktu Karakter Karakter Sebelum Terkompresi C R (Bits/ Kompresi Dekompresi Kompresi Symbol) (ms) (ms) 1 1 8 16 2 16-100 0.002 0 10 1 80 24 0.3 80 70 0.004 0.001 100 1 800 112 0.14 800 86 0.002 0.001 1000 1 8000 1008 0.13 1008 87.4 0.009 0.007 10000 1 80000 10008 0.13 10008 87.49 0.05 0.034 Rata-Rata 0.54 2382.4 46.18 0.013 0.008 Tabel 4.7 Hasil Pengujian String Homogen dengan Even-Rodeh Code String Homogen Even-Rodeh Code Jumlah Karakter Jenis Karakter Bit Sebelum Kompresi Bit Terkompresi C R Bitrate (Bits/ Symbol) SS Waktu Kompresi (ms) Waktu Dekompresi (ms) 1 1 8 16 2 16-100 0.002 0.001 10 1 40 40 0.5 40 50 0.002 0.001 100 1 800 312 0.39 312 61 0.002 0.001 1000 1 8000 3008 0.38 3008 62.4 0.013 0.013 10000 1 80000 30008 0.38 30008 62.49 0.081 0.034 Rata-Rata 0.73 6676.8 27.17 0.021 0.001

61 Dari hasil pengujian Tabel 4.6 dan Tabel 4.7 dapat dibuat grafik perbandingan hasil pengujian String Homogen algoritma Boldi-Vigna ζ1 Code dan algoritma Even- Rodeh Code berdasarkan variabel: Compression Ratio (CR), Bitrate, Space Saving, Waktu Kompresi, dan Waktu Dekompresi seperti pada Gambar 4.12, Gambar 4.13, Gambar 4.14, Gambar 4.15, dan Gambar 4.16. 2.5 Grafik Compression Ratio terhadap String Homogen Compression Ratio 2 1.5 1 0.5 0 1 10 100 1000 10000 Panjang String Boldi-Vigna ζ1 Code Even-Rodeh Code Gambar 4.12 Grafik Compression Ratio terhadap String Homogen Dari Gambar 4.12. Grafik Compression Ratio dapat disimpulkan bahwa algoritma Even-Rodeh Code lebih efisien dalam hal Compression Ratio. Jika algoritma yang memiliki nilai CR lebih besar maka algoritma tersebut lebih baik untuk digunakan dalam proses kompresi file dengan jumlah karakter yang sangat besar dengan string yang sama (homogen).

62 Grafik Bitrate terhadap String Homogen 35000 30000 25000 Bitrate 20000 15000 10000 5000 0 1 10 100 1000 10000 Panjang String Boldi-Vigna ζ1 Code Even-Rodeh Code Gambar 4.13 Grafik Bitrate terhadap String Homogen Dari Gambar 4.13 Grafik Bitrate dapat disimpulkan bahwa algoritma Boldi-Vigna ζ1 Code lebih efisien dalam segi Bitrate dibandingkan dengan algoritma Even-Rodeh Code. Hal ini dikarenakan nilai Bitrate yang dimiliki oleh algoritma Boldi-Vigna ζ1 Code lebih rendah. 100 Grafik Penghematan Ruang Penyimpanan (Space Savings) terhadap String Homogen 50 Space Savings 0-50 -100 1 10 100 1000 10000-150 Panjang String Boldi-Vigna ζ1 Code Even-Rodeh Code Gambar 4.14 Grafik Space Savings terhadap String Homogen

63 Dari Gambar 4.14. Grafik Space Savings dapat disimpulkan bahwah algoritma Boldi-Vigna ζ1 Code lebih baik dan efisien dalam melakukan Space Savings (penghematan ruang) dalam proses kompresi file dengan jumlah karakter yang besar dengan string yang sama (homogen). Grafik Waktu Kompresi terhadap String Homogen Waktu Kompresi 0.09 0.08 0.07 0.06 0.05 0.04 0.03 0.02 0.01 0 1 10 100 1000 10000 Panjang String Boldi-Vigna ζ1 Code Even-Rodeh Code Gambar 4.15 Grafik Waktu Kompresi terhadap String Homogen Dari Gambar 4.15. Grafik Waktu Kompresi dapat disimpulkan bahwa algoritma Boldi-Vigna ζ1 Code tidak memerlukan waktu yang lebih lama untuk melakukan proses kompresi file. Sedangkan algoritma Even-Rodeh Code memerlukan waktu yang lama untuk melakukan proses kompresi file teks dengan string yang sama (homogen).

64 Grafik Waktu Dekompresi terhadap String Homogen 0.04 0.035 Waktu Dekompresi 0.03 0.025 0.02 0.015 0.01 0.005 0 1 10 100 1000 10000 Panjang String Boldi-Vigna ζ1 Code Even-Rodeh Code Gambar 4.16 Grafik Waktu Dekompresi terhadap String Homogen Dari Gambar 4.16. Grafik Waktu Dekompresi dapat disimpulkan bahwa algoritma Boldi-Vigna ζ1 Code relatif lebih lama sedangkan algoritma Even-Rodeh Code relatif lebih cepat, akan tetapi ke dua algoritma baik dan efisien untuk melakukan kompresi file teks dengan string yang sama (homogen) di karenakan ujung garis grafik kedua algoritma sejajar. 4.3.5. Pengujian String Heterogen Hasil dari uji String Heterogen yang dilakukan oleh algoritma Boldi-Vigna ζ1 Code dan algoritma Even-Rodeh Code dapat dilihat pada Tabel 4.8 dan Tabel 4.9.

65 Tabel 4.8 Hasil Pengujian String Heterogen dengan Boldi-Vigna ζ1 Code String Heterogen Boldi-Vigna ζ1 Code Jumlah Jenis Bit Bit Bitrate SS Waktu Waktu Karakter Karakter Sebelum Terkompresi C R (Bits/ Kompresi Dekompresi Kompresi Symbol) (ms) (ms) 1 1 8 16 2 16-100 0.002 0.001 10 10 80 56 0.7 5 30 0.002 0.001 100 10 800 488 0.61 48 39 0.002 0.002 1000 10 8000 1008 0.6 480 39.9 0.024 0.009 10000 10 80000 10008 0.13 4800 87.49 0.051 0.034 Rata-Rata 0.81 1069.8 19.27 0.016 0.009 Tabel 4.9 Hasil Pengujian String Heterogen dengan Even-Rodeh Code String Heterogen Even-Rodeh Code Jumlah Karakter Jenis Karakter Bit Sebelum Kompresi Bit Terkompresi C R Bitrate (Bits/ Symbol) SS Waktu Kompresi (ms) Waktu Dekompresi (ms) 1 1 8 16 2 16-100 0.002 0 10 10 80 56 0.7 5 30 0.002 0 100 10 800 448 0.56 44 44 0.002 0.002 1000 10 8000 4408 0.55 440 44.9 0.025 0.013 10000 10 80000 44008 0.55 4400 44.99 0.14 0.092 Rata-Rata 0.87 981 12.77 0.034 0.033

66 Dari hasil pengujian Tabel 4.8 dan Tabel 4.9 dapat dibuat grafik perbandingan hasil pengujian String Homogen algoritma Boldi-Vigna ζ1 Code dan algoritma Even- Rodeh Code berdasarkan variabel Compression Ratio (CR), Bitrate, Space Saving, Waktu Kompresi, dan Waktu Dekompresi seperti pada Gambar 4.17, Gambar 4.18, Gambar 4.19, Gambar 4.20 dan Gambar 4.21. 2.5 Grafik Compression Ratio terhadap string heterogen Compression Ratio 2 1.5 1 0.5 0 1 10 100 1000 10000 Panjang String Boldi-Vigna ζ1 Code Even-Rodeh Code Gambar 4.17 Grafik Compression Ratio terhadap String Heterogen Dari Gambar 4.17. Grafik Compression Ratio dapat disimpulkan bahwa algoritma Even-Rodeh Code lebih efisien dalam hal Compression Ratio. Hal ini dikarenakan jika sebuah algoritma yang memiliki nilai CR lebih besar maka algoritma tersebut lebih baik untuk digunakan dalam proses kompresi file dengan jumlah karakter yang sangat besar dengan string yang berbeda (heterogen).

67 Grafik Bitrate terhadap String Heterogen 6000 5000 4000 Bitrate 3000 2000 1000 0 1 10 100 1000 10000 Panjang String Boldi-Vigna ζ1 Code Even-Rodeh Code Gambar 4.18 Grafik Bitrate terhadap String Heterogen Dari Gambar 4.18 Grafik Bitrate dapat disimpulkan bahwa algoritma Even- Rodeh Code lebih efisien dalam segi Bitrate dibandingkan dengan algoritma Boldi- Vigna ζ1 Code. Dikarenakan nilai Bitrate yang dimiliki oleh algoritma Even-Rodeh Code lebih rendah dalam proses kompresi file dengan jumlah karakter yang sangat besar dengan string yang berbeda (heterogen). 100 Grafik Penghematan Ruang Penyimpanan (Space Savings) terhadap String Heterogen 50 Space Savings 0-50 -100 1 10 100 1000 10000-150 Panjang String Boldi-Vigna ζ1 Code Even-Rodeh Code Gambar 4.19 Grafik Space Savings terhadap String Heterogen

68 Dari Gambar 4.19. Grafik Space Saving dapat disimpulkan bahwah algoritma Boldi- Vigna ζ1 Code lebih baik dan efisien dalam melakukan Space Saving (penghematan ruang) dalam proses kompresi file dengan jumlah karakter yang besar dengan string yang berbeda (heterogen) jika dibandingkan dengan algoritma Even-Rodeh Code. Waktu Kompresi 0.16 0.14 0.12 0.1 0.08 0.06 0.04 0.02 Grafik Waktu Kompresi terhadap String Heterogen 0 1 10 100 1000 10000 Panjang String Boldi-Vigna ζ1 Code Even-Rodeh Code Gambar 4.20 Grafik Waktu Kompresi terhadap String Heterogen Dari Gambar 4.20. Grafik Waktu Kompresi dapat disimpulkan bahwa algoritma Boldi-Vigna ζ1 Code tidak memerlukan waktu yang lebih lama untuk melakukan proses kompresi file. Sedangkan algoritma Even-Rodeh Code memerlukan waktu yang lebih lama untuk melakukan proses kompresi file teks dengan string yang berbeda (heterogen).

69 Grafik Waktu Dekompresi terhadap String Heterogen Waktu Dekompresi 0.1 0.09 0.08 0.07 0.06 0.05 0.04 0.03 0.02 0.01 0 1 10 100 1000 10000 Panjang String Boldi-Vigna ζ1 Code Even-Rodeh Code Gambar 4.21 Grafik Waktu Dekompresi terhadap String Heterogen Dari Gambar 4.21. Grafik Waktu Dekompresi dapat disimpulkan bahwa algoritma Boldi-Vigna ζ1 Code tidak memerlukan waktu yang lebih lama untuk melakukan proses kompresi file. Sedangkan algoritma Even-Rodeh Code memerlukan waktu yang lebih lama untuk melakukan proses dekompresi file teks dengan string yang berbeda (heterogen). 4.3.6. Pengujian Corpus Pengujian sistem ini juga dilakukan terhadapa file Corpus. Dimana file Corpus yang digunakan ialah Artificial Corpus. Artificial Corpus berisi file yang dikembangkan khusus untuk pengujian kinerja algoritma kompresi berdasarkan kemampuannya untuk merepresentasikan hasil kinerja algoritma kompresi. Artificial Corpus terdiri dari empat file uji. Isi dari keempat file uji dipaparkan pada Tabel 4.10. Tabel 4.10 File Uji Artificial Corpus File Isi file Frek Karakter Keterangan a.txt a 1 Huruf a aaa.txt aaa 100000 Huruf a yang diulang alphabet.txt alphabet 100000 Alphabet yang diulang random.txt Karater acak 100000 100000 karakter random

70 Hasil pengujian Boldi-Vigna ζ1 Code dan Even-Rodeh Code terhadap Artificial Corpus dipaparkan pada Tabel 4.11 dan Tabel 4.12. Tabel 4.11 Hasil Pengujian Boldi-Vigna ζ1 Code terhadap File Artificial Corpus Artificial Corpus Boldi-Vigna ζ1 Code Jumlah File Bit Bit C R Bitrate SS Waktu Waktu Karakter Sebelum Terkompresi (%) (Bits/ Kompresi Dekompresi Kompresi Symbol) (ms) (ms) 1 a.txt 8 16 2 16-100 0.001 0.001 100000 aaa.txt 800000 100008 0.13 100008 87.5 0.514 0.252 100000 alphabet.txt 8000 699992 0.88 26922 12.5 1.943 1.821 100000 random.txt 800000 919256 1.14 14363-14.91 2675 4.649 Rata-Rata 1.04 14367-3.72 1.283 1.68 Tabel 4.12 Hasil Pengujian Even-Rodeh Code terhadap File Artificial Corpus Artificial Corpus Even-Rodeh Code Jumlah Karakter File Bit Sebelum Kompresi Bit Terkompresi C R (%) Bitrate (Bits/ Symbol) SS Waktu Kompresi (ms) Waktu Dekompresi (ms) 1 a.txt 8 16 2 16-100 0.002 0.001 100000 aaa.txt 800 300008 0.38 300008 62.5 0.741 0.364 100000 alphabet.txt 8000 699992 0.88 26922 12.5 2.057 1.818 100000 random.txt 80000 864192 1.08 13503-8.02 2.608 4.696 Rata-Rata 1.09 85112.3-8.25 1.352 1.719

71 4.4. Kompleksitas Algoritma Kompleksitas algoritma dari algoritma Boldi-Vigna ζ1 Code dan Even-Rodeh Code yang akan diuji dan dijelaskan pada Tabel 4.13 dan Tabel 4.14 berikut : Tabel 4.13 Kompleksitas Algoritma Boldi-Vigna ζ1 Code Pseudocode Algoritma C # C.# Function BoldiVignaCodes(n) k 1 C1 1 C1 h 0 C1 1 C1 hmax Math.Pow(2, (h + 1) * k) 1 C1 1 C1 while (n > hmax) do C2 n C2n h h + 1 C1 n C1n hmax Math.Pow(2, (h + 1) * k) 1 C1 n C1n end while unary "1".PadLeft(h + 1, '0') C1 1 C1 minbincodeorx n - Math.Pow(2, h * k) C1 1 C1 z Math.Pow(2, (h + 1) * k) -Math.Pow(2, h * k) C1 1 C1 s Math.Ceiling(Math.Log(z,2) C1 1 C1 encodevalue minbincodeorx C1 1 C1 encodebin C1 1 C1

72 Pseudocode Algoritma C # C.# if minbincodeorx >= Math.Pow(2, s) z C3 1 C3 encodevalue Math.Abs(Math.Abs (minbincodeorx - z) - Math.Pow(2, s)) C1 1 C1 encodebin DecToBin(encodedValue). PadLeft(s,'0').Substring(0,s) C1 1 C1 Else C3 1 C3 encodebin DecToBin(encodedValue).PadLeft(s 1, '0').Substring(0, s-1) C1 1 C1 return unary+""+encodebin C4 1 C4 Berdasarkan data pada Tabel 4.13, nilai kompleksitas algoritma Boldi-Vigna ζ1 Code dapat dihitung sebagai berikut. T(n) = ( Ci. #i ) = 12C1 + 2C1n + C2n + C3 + C4 = 12C1 + (2C1 + C2)n + C3 + C4 = θ (n)

73 Tabel 4.14 Kompleksitas Algoritma Even-Rodeh Code Pseudocode Algoritma C # C.# Function EvenRodehCodes(n) if n < 4 C1 1 C1 c DecToBin(n) C2 1 C2 int lc c.length C2 1 C2 for i 0 to 3 lc do C3 n C3n code.append( 0 ) C4 n C4n end for code.append( c ) C4 1 C4 else if (n >= 4 && n < 8) C1 1 C1 c DecToBin(n) C2 1 C2 code.append( c ) C4 1 C4 code.append( 0 ) C4 1 C4 else C1 1 C1 c DecToBin(n) C2 1 C1 code.append(dectobin(c.length)) C4 1 C4 code.append( c ) C4 1 C4 code.append( 0 ) C4 1 C4 return code C5 1 C5

74 Berdasarkan data pada Tabel 4.14, nilai kompleksitas algoritma Even-Rodeh Code dapat dihitung sebagai berikut. T(n) = ( Ci. #i ) = 3C1 + 4C2 + C3n + C4n + 6C4 + C5 = 3C1 + 4C2 + (C3 + C4)n + 6C4 + C5 = θ (n)

BAB 5 KESIMPULAN DAN SARAN 5.1. Kesimpulan Berdasarkan hasil dari pengujian yang dilakukan pada penelitian ini, diperoleh beberapa kesimpulan yang berkaitan dengan perbandingan kinerja kompresi dari algoritma Boldi- Vigna ζ1 Code dan algoritma Even-Rodeh Code. Di antaranya sebagai berikut: 1. Pada pengujian kompresi file teks yang berisi string homogen algoritma Boldi- Vigna ζ1 Code memilki kinerja yang lebih baik dibandingkan Even-Rodeh Code karena memilki nilai space savings yang lebih tinggi, bit rate yang lebih kecil serta waktu kompresi yang lebih cepat. 2. Dilihat dari nilai compression ratio yang diperoleh dari pengujian terhadap string homogen dan heterogen diketahui bahwa compression ratio algoritma Even-Rodeh Code lebih baik pada string homogen dan string heterogen. 3. Berdasarkan nilai space savings yang didapat dari uji coba sistem terhadap string homogen dan heterogen diketahui bahwa space savings algoritma Boldi-Vigna ζ1 Code lebih baik pada file string homogen dan file string heterogen 4. Dilihat dari bit rate yang didapat dari hasil pengujian terhadap file string homogen dan string heterogen menunjukkan bahwa bit rate Boldi-Vigna ζ1 Code lebih baik pada file berisi string homogen, sedangkan Even-Rodeh Code lebih baik pada file berisi string heterogen. 5. Dilihat dari hasil pengujian terhadap string homogen dan heterogen diketahui bahwa proses kompresi menggunakan Boldi-Vigna ζ1 Code lebih cepat pada string homogen dan string heterogen 6. Hasil pengujian terhadap file berisi string homogen menunjukkan bahwa waktu yang dibutuhkan untuk proses dekompresi algoritma Even-Rodeh Code lebih sedikit dibandingkan algoritma Boldi-Vigna ζ1 Code. Sementara hasil pengujian file string heterogen menunjukkan bahwa waktu yang dibutuhkan algoritma Boldi-Vigna ζ1 Code Code lebih sedikit dibandingkan algoritma Even-Rodeh Code untuk proses dekompresi.

76 7. Berdasarkan perhitungan yang dilakukan nilai kompleksitas algoritma yang didapat dalam penelitian ini yaitu, nilai kompleksitas algoritma Boldi-Vigna ζ1 Code dan algoritma Even-Rodeh Code adalah sebesar Θ(n). 5.2. Saran Berdasarkan penelitian yang dilakukan, beberapa saran yang dapat dipertimbangkan untuk penelitian selanjutnya adalah adalah sebagai berikut: 1. Pada penelitian ini proses kompresi hanya dilakukan terhadap file teks yang berekstensi.txt, untuk itu diharapkan pada penelitian selanjutnya mampu mengkompresi file teks dengan ekstensi lainnya, seperti.docx dan lain-lain. 2. Pada penelitian ini kompresi hanya dilakukan pada file teks, setelahnya diharapkan dapat mengkompresi bentuk file lain seperti file audio, video, dan lain-lain. 3. Pada penelitian ini, sistem dibangun dengan menggunakan bahasa pemrograman C#, diharapkan setelahnya dapat menggunakan bahasa pemrograman yang lain seperti Java, Python dan lain-lain. 4. Pada penelitian ini, sistem yang dibangun hanya dapat barjalan pada platform desktop, untuk itu pada penelitian berikutnya sistem diharapkan dapat berjalan pada platform android.

77 DAFTAR PUSTAKA Abdullah, A. R. (2016). Perbandingan Algoritma Even-Rodeh dan Algoritma Variable Length Binary Encoding (VLBE) pada kompresi file teks. Skripsi.. Medan Batubara, M. M. (2018). Implementasi Algoritma Vigenere Cipher dan Algoritma Even-Rodeh Code pada Pengamanan dan Kompresi File. Skripsi. Universitas Sumatera Utara. Medan Budiman, M. A. & Dian Rachmawati. (2017). On Using Goldbach Go Codes and Even- Rodeh Codes for Text Compression. Jurnal. IOP Conf. Series: Materials Science and Engineering, No. 012062. DOI: 10.17605/OSF.IO/8HJVB. Cormen, T.H., Leiserson, C.E., Rivest, R.L. & Stein, C. (2009). Introduction to Algorithms. Third Edition. The MIT Press: London. Ida, M. P. (2006). Fundamental Data Compression. Elsevier Publishers: New York. Retrieved April, 23, 2013. Jamaluddin, J. (2018). Analisis Perbandingan Kompresi Data dengan Fixed-Length Code, Variable-Length Code dan Algoritma Huffman. Skripsi. Universitas Sumatera Utara. Medan Kodituwakku, S. R., & Amarasinghe, U. S. (2010). Comparison of lossless data compression algorithms for text data. Indian journal of computer science and engineering, 1(4), 416-425. Lestari, E. (2018). Implementasi Algoritma Knapsack dan Algoritma Boldi-Vigna (ζ4) pada Keamanan dan Kompresi File Teks. Skripsi. Universitas Sumatera Utara. Medan Motta, G., Rizzo, F., & Storer, J. A. (Eds.). (2006). Hyperspectral Data Compression. Springer Science & Business Media. Pu, I. M. (2005). Fundamental Data Compression. Butterworth-Heinemann.

78 Rao, K. R., & Yip, P. C. (2000). The Transform and Data Compression Handbook. CRC press. Salomon, D. (2007).Variable-Length Codes For Data Compression. Springer Science & Business Media. Salomon, D., & Motta, G. (2010). Handbook of Data Compression. Springer Science & Business Media.

A-1 LISTING PROGRAM Mainform.cs using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; namespace sistem_skripsi /// <summary> /// Description of MainForm. /// </summary> public partial class MainForm : Form public MainForm() // // The InitializeComponent() call is required for Windows Forms designer support. // InitializeComponent(); // // TODO: Add constructor code after the InitializeComponent() call. // void Label1Click(object sender, EventArgs e) void KompresiToolStripMenuItemClick(object sender, EventArgs e) Kompresi k = new Kompresi(); k.show(); this.hide(); void MainFormLoad(object sender, EventArgs e) void DekompresiToolStripMenuItemClick(object sender, EventArgs e) Dekompresi k = new Dekompresi(); k.show(); this.hide(); void BantuanToolStripMenuItemClick(object sender, EventArgs e) Bantuan k = new Bantuan(); k.show(); this.hide(); void TentangToolStripMenuItemClick(object sender,

A-2 EventArgs e) Tentang k = new Tentang(); k.show(); this.hide(); void BerandaToolStripMenuItemClick(object sender, EventArgs e) Kompresi.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Diagnostics; using System.Drawing; using System.Windows.Forms; namespace sistem_skripsi /// <summary> /// Description of Kompresi. /// </summary> public partial class Kompresi : Form public static int[] fr; public static String cs; public static String[] bv; public static String[] erc; public static int k = 1; public Kompresi() // // The InitializeComponent() call is required for Windows Forms designer support. // InitializeComponent(); // // TODO: Add constructor code after the InitializeComponent() call. // void GroupBox1Enter(object sender, EventArgs e) void BerandaToolStripMenuItemClick(object sender, EventArgs e)

A-3 MainForm k = new MainForm(); k.show(); this.hide(); void KompresiToolStripMenuItemClick(object sender, EventArgs e) Kompresi k = new Kompresi(); k.show(); this.hide(); void DekompresiToolStripMenuItemClick(object sender, EventArgs e) Dekompresi k = new Dekompresi(); k.show(); this.hide(); void BantuanToolStripMenuItemClick(object sender, EventArgs e) Bantuan k = new Bantuan(); k.show(); this.hide(); void TentangToolStripMenuItemClick(object sender, EventArgs e) Tentang k = new Tentang(); k.show(); this.hide(); public static string StringToBinary(string data) StringBuilder sb = new StringBuilder(); foreach (char c in data.tochararray()) sb.append(convert.tostring(c, 2).PadLeft(8, '0')); return sb.tostring(); public static String GetCharSet(String st) // fungsi untuk membuat tabel string StringBuilder s = new StringBuilder(); int n = st.length; for (int i = 0; i < n; i++) char c = st[i]; if (s.tostring().indexof(c) == -1) s.append(c); return s.tostring();

A-4 public static int CountChar(String s, char ch) // fungsi menghitung banyaknya karakter return s.split(ch).length - 1; public static int[] CountFreq(String st) // fungsi untuk menghitung frekuensi 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[i]); return freq; public static void InsertionSort(int[] freq, String charset) // fungsi untuk mengurutkan karakter dan frekuensi fr = freq; cs = charset; int n = charset.length; StringBuilder sb = new StringBuilder(charset); for (int i = 1; i < n; i++) for (int j = 0; j < i; j++) if (fr[i] > fr[j]) int frtemp = fr[i]; fr[i] = fr[j]; fr[j] = frtemp; char sbtemp = sb[i]; sb[i] = sb[j]; sb[j] = sbtemp; cs = sb.tostring(); public static String Reverse(String sb) // fungsi untuk membalikkan array char[] chararray = sb.tochararray(); Array.Reverse(charArray); return new String(charArray); public static String DecToBin(int dec) // fungsi untuk mengubah decimal ke biner StringBuilder bin = new StringBuilder(); int r = dec % 2; bin.insert(0, r); dec = dec / 2; while (dec!= 0) r = dec % 2; bin.insert(0, r); dec = dec / 2; return bin.tostring();

A-5 public static int BinToDec(String bin) // fungsi untuk mengubah biner ke decimal StringBuilder sb = new StringBuilder(Reverse(bin)); int n = 1; int dec = 0; for (int i = 0; i < sb.length; i++) dec = dec + (int)(char.getnumericvalue(sb[i])) * n; n = n * 2; return dec; String[] s) // converts strings into stringbits public static String StringToStb(String st, String c, StringBuilder stb = new StringBuilder(); for (int i = 0; i < st.length; i++) String z = Char.ToString(st[i]); int k = c.indexof(z); stb.append(s[k]); int x = stb.length % 8; int pad = 0; if (x!= 0) pad = 8 - x; for (int i = 0; i < pad; i++) stb.append("0"); String d = DecToBin(pad); int y = 8 - d.length; for (int i = 0; i < y; i++) stb.append("0"); stb.append(d); return stb.tostring(); public static String Encode(String stb) // fungsi mengubah string ke biner untuk proses kompresi StringBuilder code = new StringBuilder(); for (int i = 0; i < stb.length; i+= 8) String x = stb.substring(i, 8); char y = (char)(bintodec(x)); code.append(y); return code.tostring(); public static String Decode(String code) //fungsi untuk mengubah biner ke string untuk proses dekompres

A-6 StringBuilder sb = new StringBuilder(); int t = code.length; for (int i = 0; i < t; i++) char x = code[i]; StringBuilder y = new StringBuilder(DecToBin((int)x)); if (y.length < 8) int z = 8 - y.length % 8; for (int j = 0; j < z; j++) y.insert(0, "0"); sb.append(y); return sb.tostring(); k)); public static String GetBoldiVigna(int n) int h = 0; int hmax = (int) Math.Pow(2, (h + 1) * k) - 1; while (n > hmax) h++; hmax = (int)math.pow(2, (h + 1) * k) - 1; string unary = "1".PadLeft(h + 1, '0'); int minbincodeorx = n - (int)math.pow(2, h * k); int z = (int)(math.pow(2, (h + 1) * k) - Math.Pow(2, h * int s = (int) Math.Ceiling(Math.Log(z,2)); int encodevalue = minbincodeorx; string encodebin=""; if (minbincodeorx >= Math.Pow(2, s) - z) encodevalue = (int) Math.Abs(Math.Abs(minBinCodeorX - z) - Math.Pow(2, s)); encodebin = Convert.ToString(encodeValue, 2).PadLeft(s, '0').Substring(0, s); else encodebin = Convert.ToString(encodeValue, 2).PadLeft(s - 1, '0').Substring(0, s-1); return unary+""+encodebin; public static void BoldiVignaCodes(String st) //fungsi untuk memanggil kode boldi-vigna int[] freq = CountFreq(st); String charset = GetCharSet(st); int t = charset.length; InsertionSort(freq, charset);

A-7 freq = fr; charset = cs; bv = new String[t]; int c = 0; for (int n = 0; n < t; n++) bv[c++] = GetBoldiVigna(n+1); public static String GetEvenRodeh(int n) //fungsi untuk membangkitkan kode even-rodeh StringBuilder sb = new StringBuilder(); if (n < 4) String c = Convert.ToString(n,2); int lc = c.length; for (int i = 0; i < 3 - lc; i++) sb.append("0"); sb.append(c); //return sb.tostring(); else if (n >= 4 && n < 8) String c = Convert.ToString(n,2); sb.append(c); sb.append("0"); //return sb.tostring(); else String c = Convert.ToString(n,2); sb.append(convert.tostring(c.length,2)); sb.append(c); sb.append("0"); return sb.tostring(); public static void EvenRodehCodes(String st) //fungsi untuk memanggil kode even-rodeh int[] freq = CountFreq(st); String charset = GetCharSet(st); int t = charset.length; InsertionSort(freq, charset); freq = fr; charset = cs; erc = new String[t]; int c = 0; for (int n = 0; n < t; n++) erc[c++] = GetEvenRodeh(n); void Btn_bukaClick(object sender, EventArgs e) OpenFileDialog open = new OpenFileDialog(); open.filter = "TXT files *.txt"; if(open.showdialog() == System.Windows.Forms.DialogResult.OK)

A-8 richtextbox1.text = ""; textbox1.text = open.filename; if(path.getextension(open.filename) == ".txt") string strfilename = open.filename; string txt = File.ReadAllText(strfilename); richtextbox1.text = txt; int ukuran = richtextbox1.text.length*8; textbox_awal.text = ukuran.tostring() +" bits"; richtextbox_uncompbin.text = StringToBinary(richTextBox1.Text); /* void Btn_simpanClick(object sender, EventArgs e) void Rbtn_ercCheckedChanged(object sender, EventArgs e) void RichTextBox1TextChanged(object sender, EventArgs e) */ void Btn_aturulangClick(object sender, EventArgs e) richtextbox1.text = null; richtextbox_compbin.text = null; richtextbox_uncompbin.text = null; textbox1.text = null; textbox_kompresiratio.text = null; textbox_bitrate.text = null; textbox_ss.text = null; textbox_waktukompresi.text=null; rbtn_erc.checked = false; rbtn_bv.checked = false; textbox_awal.text=null; textbox_akhir.text=null; void Btn_kompresiClick(object sender, EventArgs e) String kalimat = richtextbox1.text; if(rbtn_bv.checked == true) Stopwatch watch = new Stopwatch();// running time watch.start();

A-9 BoldiVignaCodes(kalimat); String stb = StringToStb(kalimat,cs,bv); String code = Encode(stb); String dc = Decode(code); richtextbox_compbin.text=stb; textbox_akhir.text=stb.length.tostring()+" bits"; double CR = (stb.length/(kalimat.length* 8 * 1.0))*100; textbox_kompresiratio.text =Math.Round(CR,2).ToString()+" %"; double SS = 100-CR; textbox_ss.text = Math.Round(SS,2).ToString()+" %"; textbox_waktukompresi.text = Math.Round(Convert.ToDecimal(watch.ElapsedMilliseconds)/1000,4).ToStr ing()+" ms"; double BR = stb.length/cs.length; textbox_bitrate.text = BR.ToString()+" bits/symbol"; textbox_akhir.text = stb.length.tostring()+" bits"; watch.stop(); SaveFileDialog simpan = new SaveFileDialog(); simpan.filter = "Compressed Files( *.bvc) *.bvc"; simpan.filename = "*.bvc"; if (simpan.showdialog() == DialogResult.OK) using(streamwriter writer = new StreamWriter(simpan.FileName)) writer.writeline(richtextbox_compbin.text); for(int i=0;i<bv.length;i++) writer.write(cs[i]+" "); writer.writeline(bv[i]); MessageBox.Show("File berhasil dikompresi dengan Boldi-Vigna Code"); else if(rbtn_erc.checked == true) Stopwatch watch = new Stopwatch();// running time watch.start(); EvenRodehCodes(kalimat); String stb = StringToStb(kalimat,cs,erc); String code = Encode(stb); String dc = Decode(code); richtextbox_compbin.text=stb; textbox_akhir.text=stb.length.tostring()+"

A-10 bits"; double CR = (stb.length/(kalimat.length* 8 * 1.0))*100; textbox_kompresiratio.text =Math.Round(CR,2).ToString()+" %"; double SS = 100-CR; textbox_ss.text = Math.Round(SS,2).ToString()+" %"; textbox_waktukompresi.text = Math.Round(Convert.ToDecimal(watch.ElapsedMilliseconds)/1000,4).ToStr ing()+" ms"; double BR = stb.length/cs.length; textbox_bitrate.text = BR.ToString()+" bits/symbol"; textbox_akhir.text = stb.length.tostring()+" bits"; watch.stop(); SaveFileDialog simpan = new SaveFileDialog(); simpan.filter = "Compressed Files( *.erc) *.erc"; simpan.filename = "*.erc"; if (simpan.showdialog() == DialogResult.OK) using(streamwriter writer = new StreamWriter(simpan.FileName)) writer.writeline(richtextbox_compbin.text); for(int i=0;i<erc.length;i++) writer.write(cs[i]+" "); writer.writeline(erc[i]); MessageBox.Show("File berhasil dikompresi dengan Boldi-Vigna Code"); else MessageBox.Show("Algoritma belum dipilih","peringatan",messageboxbuttons.ok,messageboxicon.warning); Dekompresi.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Diagnostics; using System.Drawing;

A-11 using System.Windows.Forms; namespace sistem_skripsi /// <summary> /// Description of Dekompresi. /// </summary> public partial class Dekompresi : Form string hasil,dc; List<string> cst = new List<string>(); List<string> str = new List<string>(); public Dekompresi() // // The InitializeComponent() call is required for Windows Forms designer support. // InitializeComponent(); // // TODO: Add constructor code after the InitializeComponent() call. // void DekompresiLoad(object sender, EventArgs e) void Button2Click(object sender, EventArgs e) richtextbox_decompressed.text = null; richtextbox_compressed.text = null; textbox1.text = null; textbox_waktudec.text = null; textbox_awaldec.text = null; textbox_akhirdec.text = null; void Btn_bukadekomClick(object sender, EventArgs e) e) void BantuanToolStripMenuItemClick(object sender, EventArgs Bantuan B = new Bantuan(); B.Show(); this.hide(); e) void TentangToolStripMenuItemClick(object sender, EventArgs Tentang t = new Tentang(); t.show(); this.hide();

A-12 e) e) void KompresiToolStripMenuItemClick(object sender, EventArgs Kompresi t = new Kompresi(); t.show(); this.hide(); void BerandaToolStripMenuItemClick(object sender, EventArgs MainForm t = new MainForm(); t.show(); this.hide(); public static string StringToBinary(string data) StringBuilder sb = new StringBuilder(); foreach (char c in data.tochararray()) sb.append(convert.tostring(c, 2).PadLeft(8, '0')); return sb.tostring(); public static String Reverse(String sb) // fungsi untuk membalikkan array char[] chararray = sb.tochararray(); Array.Reverse(charArray); return new String(charArray); private static String DecToBin(int dec) // fungsi untuk mengubah decimal ke biner StringBuilder bin = new StringBuilder(); int r = dec % 2; bin.insert(0, r); dec = dec / 2; while (dec!= 0) r = dec % 2; bin.insert(0, r); dec = dec / 2; return bin.tostring(); decimal int BinToDec(String bin) // fungsi untuk mengubah biner ke StringBuilder sb = new StringBuilder(Reverse(bin)); int n = 1; int dec = 0; for (int i = 0; i < sb.length; i++)

A-13 dec = dec + (int)(char.getnumericvalue(sb[i])) * n; n = n * 2; return dec; String Decode(String code) //fungsi untuk mengubah biner ke string untuk proses dekompres StringBuilder sb = new StringBuilder(); int t = code.length; for (int i = 0; i < t; i++) char x = code[i]; StringBuilder y = new StringBuilder(DecToBin((int)x)); if (y.length < 8) int z = 8 - y.length % 8; for (int j = 0; j < z; j++) y.insert(0, "0"); sb.append(y); return sb.tostring(); String DecompressFile() StringBuilder st = new StringBuilder(); StringBuilder bit = new StringBuilder(); StringBuilder stb2; int t = dc.length; int pad = BinToDec(dc.Substring(t - 8, 8)); stb2 = new StringBuilder(dc.Substring(0, t - pad - 8)); for (int i = 0; i < stb2.length; i++) bit.append(stb2[i]); if (str.contains(bit.tostring())) int x = str.indexof(bit.tostring()); st.append(cst[x]); bit = new StringBuilder(); return st.tostring(); void BukadekomClick(object sender, EventArgs e) int counter = 0; string line, temp; cst.clear(); str.clear(); OpenFileDialog open = new OpenFileDialog(); open.filter = "Compressed Files( *.bvc) *.bvc Compressed Files( *.erc) *.erc"; if (open.showdialog() == DialogResult.OK) textbox1.text = open.filename;

A-14 richtextbox_compressed.text=""; System.IO.StreamReader File = new System.IO.StreamReader(textBox1.Text); while ((line = File.ReadLine())!= null) if(counter == 0) hasil=line; else cst.add(line[0].tostring()); temp=""; for(int i=2; i<line.length;i++) temp+= line[i]; str.add(temp); counter++; File.Close(); richtextbox_compressed.text+=hasil; //for(int h = 0; h< cs.count; h++) //richtextboxcompressed.text += cs[h] + " "+ sssc[h] + Environment.NewLine; dc = hasil; var ukuran2 = dc.length; textbox_awaldec.text=ukuran2.tostring()+" bits"; void Button1Click(object sender, EventArgs e) Stopwatch watch = new Stopwatch(); watch.start(); String hasil = DecompressFile(); richtextbox_decompressed.text = hasil; textbox_akhirdec.text= (hasil.count() * 8).ToString()+" bits"; textbox_waktudec.text = Math.Round(Convert.ToDecimal(watch.ElapsedMilliseconds)/1000,4).ToStr ing()+" ms"; watch.stop(); void Btn_simpandekomClick(object sender, EventArgs e) SaveFileDialog simpan = new SaveFileDialog(); simpan.filter = "TXT files *.txt"; simpan.filename = "*.txt"; simpan.title = "Save File"; simpan.showdialog(); if(simpan.showdialog() == System.Windows.Forms.DialogResult.OK)

B-1 CURRICULUM VITAE Nama Lengkap Nama Panggilan Tempat/Tanggal Lahir Jenis Kelamin Agama Warga Negara Alamat Nomor Telepon : : Galuh Atika Nabila : Galuh : Lubuk Pakam / 1 Februari 1998 : Wanita : Islam : Indonesia : Jl. Muspika Gang. Cemara IV, Batang Kuis, Deli Serdang, Sumatera Utara 081290160669 E-mail : galuhatk@gmail.com PENDIDIKAN Perguruan Tinggi Fakultas Ilmu Komputer dan Teknologi Informasi Program Studi S1 Ilmu Komputer IPK 3.68 2015 - Sekarang Sekolah Menengah Atas SMAN 1 BATANG KUIS 2012-2015 Sekolah Menengah Pertama SMPN 1 LUBUK PAKAM 2009-2012 Sekolah Dasar SD YAYASAN PERGURUAN NUSANTARA 2003-2009