• Tidak ada hasil yang ditemukan

Analisis Perbandingan Kinerja Algoritma Shannon-Fano, Arithmetic Coding, Dan Huffman Pada Kompresi Berkas Teks Dan Berkas Citra Digital

N/A
N/A
Protected

Academic year: 2016

Membagikan "Analisis Perbandingan Kinerja Algoritma Shannon-Fano, Arithmetic Coding, Dan Huffman Pada Kompresi Berkas Teks Dan Berkas Citra Digital"

Copied!
151
0
0

Teks penuh

(1)

ANALISIS PERBANDINGAN KINERJA ALGORITMA SHANNON-FANO, ARITHMETIC CODING, DAN HUFFMAN PADA KOMPRESI

BERKAS TEKS DAN BERKASCITRA DIGITAL

SKRIPSI

SYARIFAH KEUMALA ANDRIATY 091401084

PROGRAM STUDI S1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

(2)

ANALISIS PERBANDINGAN KINERJA ALGORITMA SHANNON-FANO, ARITHMETIC CODING, DAN HUFFMAN PADA KOMPRESI

BERKAS TEKS DAN BERKASCITRA DIGITAL

SKRIPSI

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

SYARIFAH KEUMALA ANDRIATY 091401084

PROGRAM STUDI S1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

(3)

PERSETUJUAN

Judul : ANALISIS PERBANDINGAN KINERJA

ALGORITMA SHANNON-FANO, ARITHMETIC CODING, DAN HUFFMAN PADA KOMPRESI BERKAS TEKS DAN BERKAS CITRA DIGITAL

Kategori : SKRIPSI

Nama : SYARIFAH KEUMALA ANDRIATY

Nomor Induk Mahasiswa : 091401084

Program Studi : S1 ILMU KOMPUTER

Fakultas : ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA Diluluskan di

Medan, 24 Juli 2013 Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

Syahriol Sitorus, S.SI, MIT Drs. James Pieter Marbun, M.Kom NIP. 19710310 199703 1 004 NIP. 19580611 198603 1 002

Diketahui/disetujui oleh

Program Studi S1 Ilmu Komputer Ketua,

(4)

PERNYATAAN

ANALISIS PERBANDINGAN KINERJA ALGORITMA SHANNON-FANO, ARITHMETIC CODING, DAN HUFFMAN PADA KOMPRESI

BERKAS TEKS DAN BERKAS CITRA DIGITAL

SKRIPSI

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

Medan, Juli 2013

(5)

PENGHARGAAN

Puji dan syukur penulis panjatkan ke hadirat Allah SWT, yang telah memberikan rahmat dan hidayah-Nya, serta segala sesuatu dalam hidup, sehingga penulis dapat menyelesaikan penyusunan skripsi ini, sebagai syarat untuk memperoleh gelar Sarjana Komputer, Program Studi S1 Ilmu Komputer, Fakultas Ilmu Komputer dan Teknologi Informasi (Fasilkom-TI), Universitas Sumatera Utara.

Ucapan terima kasih penulis sampaikan kepada semua pihak yang telah membantu penulis dalam menyelesaikan skripsi ini baik secara langsung maupun tidak langsung. Pada kesempatan ini penulis ingin mengucapkan terima kasih yang sebesar-besarnya kepada:

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

2. Bapak Prof. Dr. Muhammad Zarlis selaku Dekan Fasilkom-TI Universitas Sumatera Utara.

3. Bapak Dr. Poltak Sihombing, M. Kom. selaku Ketua Program Studi S1 Ilmu Komputer dan Dosen Penguji I.

4. Ibu Maya Silvi Lydia, B.Sc. M.Sc. selaku Sekretaris Program Studi S1 Ilmu Komputer dan Dosen Penguji II.

5. Bapak Drs. James Pieter Marbun, M. Kom. selaku Dosen Pembimbing I. 6. Bapak Syahriol Sitorus, S.Si., MIT. selaku Dosen Pembimbing II.

7. Seluruh dosen serta pegawai di Program Studi S1 Ilmu Komputer Fasilkom-TI USU.

8. Ayahanda Said Adnan dan Ibunda Darmiaty yang selalu memberikan dukungan, perhatian, dan doa tanpa henti kepada penulis.

9. Kakanda penulis Syarifah Dian Andriaty, SE, Ak., dr. Syarifah Nora Andriaty, Syarifah Lisa Andriati, SH, M.Hum., dan Syarifah Lia Andriaty, S.Hut. yang telah memberikan motivasi dan dukungan tanpa henti kepada penulis.

10.Muhammad Aidil Akbar, S.Kom. yang telah memberikan bimbingan, dukungan, dan perhatian kepada penulis.

11.Teman-teman sekaligus keluarga besar Program Studi S1 Ilmu Komputer Fasilkom-TI USU.

(6)

Medan, Juli 2013 Penulis,

(7)

ABSTRAK

Kompresi data merupakan proses mereduksi ukuran suatu data untuk menghasilkan representasi digital yang padat atau mampat (compact) namun tetap dapat mewakili

kuantitas informasi yang terkandung pada data tersebut. Proses kompresi data sangat diperlukan pada dunia komputerisasi, yaitu pada proses pengiriman data, dan pada penyimpanan data tersebut. Kompresi data dapat dilakukan secara lossy dan lossless.

Pada kompresi data yang bersifat lossy, data dapat dimampatkan dan didekompresi

dengan perubahan informasi di dalamnya, sehingga data asli berbeda dengan data hasil. Pada kompresi data yang bersifat lossless, data dapat dimampatkan dan

didekompresi tanpa kehilangan informasi, sehingga metode kompresi dengan sifat

lossless dapat diterapkan pada keperluan medis dan lain sebagainya. Pada penelitian ini dilakukan implementasi beberapa algoritma kompresi yang bersifat lossless, yaitu Shannon-Fano, Arithmetic Coding dan Huffman yang bertujuan untuk mengetahui algoritma paling optimal di antara ketiga algoritma tersebut. Parameter perbandingan kinerja algoritma yang digunakan adalah waktu kompresi, rasio kompresi, faktor kompresi, saving percentage, dan kompleksitas algoritma (Big-O). Aplikasi

pendukung yang dibangun pada penelitian ini adalah suatu aplikasi kompresi dengan berkas teks dengan format *.txt dan berkas citra digital dengan format *.bmp. Berdasarkan percobaan pada lima buah berkas teks dan lima buah berkas citra digital, diketahui bahwa algoritma Shannon-Fano merupakan algoritma teroptimal dibandingkan Arithmetic Coding dan Huffman, notasi Big-O dari algoritma Shannon-Fano dan Arithmetic Coding adalah O(n), sedangkan nilai notasi Big-O dari algoritma Huffman adalah O(n2).

(8)

COMPARATIVE PERFORMANCE ANALYSIS OF COMPRESSION ALGORITHMS SHANNON-FANO, ARITHMETIC CODING, AND

HUFFMAN IN TEXT FILE AND DIGITAL FILE IMAGE

ABSTRACT

Data compression is process of reducing the size of data to produce a digital representation of a compressed or compact but still be able to represent the quantity of information that contained in the data. Data compression is required in computerization, which in the process of data sending, and in data storage. Data compression can be implemented in lossy method or lossles method. In lossy data compression, data can be compressed and decompressed with some differences of information between original data and result data. In lossless data compression, data can be compressed and decompressed without lossing any information, so that nature of lossless compression method can be applied to medical purposes and so on. In this research, algorithms of compression data implemented with lossless method, which are Shannon-Fano, Arithmetic Coding, and Huffman that aims to find the most optimal algorithm between them. The comparison parameters of the performance of the algorithms used are compression time, compression ratio, compression factor, saving percentage of memory, and algorithmic complexity (Big-O). Supporting application that built in this research is a compression application with text file formatted in *.txt and digital image file formatted in *.bmp. Based on experiments on five text files and five image files, concluded that Shannon-Fano algorithm is the most optimal algorithm compared to Arithmetic Coding and Huffman, Big-O notation from Shannon-Fano and Arithmetic Coding algorithm is O(n), and Big-O notation from Huffman algorithm is O(n2).

(9)

DAFTAR ISI

Hal.

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrak vi

Abstract vii

Daftar Isi viii

Daftar Tabel xi

Daftar Gambar xiii

Bab 1 Pendahuluan

1.1 Latar Belakang Masalah 1

1.2 Rumusan Masalah 2

1.3 Batasan Masalah 2

1.4 Tujuan Penelitian 2

1.5 Manfaat Penelitian 3

1.6 Metodologi Penelitian 3

1.7 Sistematika Penulisan 4

Bab 2 Landasan Teori

2.1 Definisi Data 5

2.2 Kompresi Data 6

2.3 Data Berlebihan (Data Redundancy) 7

2.4 Teknik Kompresi Citra 8

2.5 Berkas Teks 9

2.6 Citra Digital 10

2.7 Pengolahan Citra Digital 10

2.8 Format Berkas Bitmap (*.bmp) 11

2.9 Informasi Teori dan Entropi 11

2.10 Algoritma Shannon-Fano 12

2.11 Algoritma Arithmetic Coding 12

2.12 Algoritma Huffman 13

2.13 Kompleksitas Algoritma (Notasi Big-O) 14

2.14 Evaluasi Kinerja Algoritma 15

2.15 Penelitian yang Relevan 16

2.15.1 Studi perbandingan kinerja algoritma kompresi 16 Shannon-Fano dan Huffman pada citra digital

2.15.2 Analisis kinerja dan implementasi algoritma kompresi 16 Arithmetic Coding pada file teks dan citra digital

2.15.3 Implementasi Algoritma Huffman pada Kompresi Citra BMP

(10)

Hal. 2.15.4 Analisis Perbandingan Teknik Kompresi Menggunakan

Algoritma Shannon-Fano, dan Run Length Encoding pada Citra Berformat BMP dan PNG

17

Bab 3 Analisis Dan Perancangan Sistem

3.1 Analisis Sistem 18

3.1.1 Ruang lingkup masalah 18

3.1.2 Analisis masalah 18

3.1.3 Analisis kebutuhan 20

3.1.4 Desain logis 20

3.2 Pseudocode 28

3.2.1 Pseudocode pembacaan berkas 28

3.2.2 Pseudocode pengurutan frekuensi 29 3.2.3 Pseudocode kompresi algoritma Shannon-Fano 31 3.2.4 Pseudocode dekompresi algoritma Shannon-Fano 34

3.2.5 Pseudocode kompresi algoritma Arithmetic Coding 36

3.2.6 Pseudocode dekompresi algoritma Arithmetic Coding 41 3.2.7 Pseudocode kompresi algoritma Huffman 43

3.2.8 Pseudocode dekompresi algoritma Huffman 49

3.3 Perancangan Antarmuka 51

3.3.1 Struktur menu 51

3.3.2 Perancangan grafis antarmuka 51 Bab 4 Implementasi Dan Pengujian

4.1 Implementasi Algoritma Shannon-Fano 54

4.1.1 Kompresi algoritma Shannon-Fano 54

4.1.2 Dekompresi algoritma Shannon-Fano 57 4.1.3 Kompleksitas waktu algoritma Shannon-Fano 57 4.2 Implementasi Algoritma Arithmetic Coding 61 4.2.1 Kompresi algoritma Arithmetic Coding 61 4.2.2 Dekompresi algoritma Arithmetic Coding 64 4.2.3 Kompleksitas waktu algoritma Arithmetic Coding 68

4.3 Implementasi Algoritma Huffman 73

4.3.1 Kompresi algoritma Huffman 73 4.3.2 Dekompresi algoritma Huffman 77 4.3.3 Kompleksitas waktu algoritma Huffman 78

4.4 Implementasi Perangkat Lunak 82

4.4.1 Konfigurasi perangkat keras 82 4.4.2 Konfigurasi perangkat lunak 82 4.4.3 Hasil eksekusi aplikasi 82

4.5 Pengujian Sistem 93

4.5.1 Skenario pengujian 93

4.5.2 Pengujian kompresi berkas teks 95

4.5.3 Pengujian kompresi berkas citra 114

Bab 5 Kesimpulan dan Saran 131

5.1 Kesimpulan 131

(11)

Hal.

Daftar Pustaka 133

Lampiran Listing Program A-1

(12)

DAFTAR TABEL

Nomor

Tabel Nama Tabel Halaman

3.1 Penyebab dan Akibat 19

3.2 Dokumentasi Naratif Use Case Kompresi 22 3.3 Dokumentasi Naratif Use Case Dekompresi 23

3.4 Dokumentasi Naratif Use Case Tentang Aplikasi 24

4.1 Pendataan Karakter Shannon-Fano 54

4.2 Pengurutan Frekuensi Shannon-Fano 55

4.3 Pembagian Bobot Frekuensi I 55

4.4 Pembagian Bobot Frekuensi II 55

4.5 Pembagian Bobot Frekuensi III 56

4.6 Pembagian Bobot Frekuensi IV 56

4.7 Codebook Shannon-Fano 56

4.8 Kompleksitas Waktu Kompresi Algoritma Shannon-Fano 58 4.9 Kompleksitas Waktu Dekompresi Algoritma Shannon-Fano 60

4.10 Pendataan Karakter Arithmetic Coding 61

4.11 Probabilitas Frekuensi Kemunculan Setiap Karakter 61

4.12 Jangkauan Setiap Karakter 62

4.13 Kompresi Arithmetic Coding 62

4.14 Library Arithmetic Coding 65

4.15 Kompleksitas Waktu Kompresi Algoritma Arithmetic Coding 69 4.16 Kompleksitas Waktu Dekompresi Algoritma Arithmetic

Coding

71

4.17 Pendataan Karakter Huffman 73

4.18 Pengurutan Frekuensi Huffman I 73

4.19 Frekuensi Huffman I 74

4.20 Pengurutan Frekuensi Huffman II 74

4.21 Frekuensi Huffman II 74

4.22 Pengurutan Frekuensi Huffman III 75

4.23 Frekuensi Huffman III 75

4.24 Pengurutan Frekuensi Huffman IV 75

4.25 Codebook Huffman 76

4.26 Kompleksitas Waktu Kompresi Algoritma Huffman 78 4.27 Kompleksitas Waktu Dekompresi Algoritma Huffman 81

4.28 Berkas Teks Uji 94

4.29 Berkas Citra Uji 94

4.30 Properties Berkas Teks satu.txt 96

4.31 Properties Berkas Teks bab4.txt 97

4.32 Properties Berkas Teks excel.txt 98

4.33 Properties Berkas Teks data.txt 99

4.34 Properties Berkas Teks flower.txt 100

(13)

Nomor

Tabel Nama Tabel Halaman

4.36 Analisis Kompresi Berkas Teks Algoritma Arithmetic Coding 103 4.37 Analisis Kompresi Berkas Teks Algoritma Huffman 105

4.38 Analisis Algoritma Kompresi pada Berkas Teks 107 4.39 Kompleksitas Waktu Algoritma Shannon-Fano pada Berkas

Teks

109 4.40 Kompleksitas Waktu Algoritma Arithmetic Coding pada

Berkas Teks

110 4.41 Kompleksitas Waktu Algoritma Huffman pada Berkas Teks 111 4.42 Kompleksitas Waktu Algoritma Shannon-Fano, Arithmetic

Coding, dan Huffman pada Berkas Teks

112

4.43 Properties Berkas Citra bee.bmp 114

4.44 Properties Berkas Citra bow.bmp 115

4.45 Properties Berkas Citra butterfly.bmp 116

4.46 Properties Berkas Citra flower.bmp 117 4.47 Properties Berkas Citra rainbow.bmp 118

4.48 Analisis Kompresi Berkas Citra Algoritma Shannon-Fano 119

4.49 Analisis Kompresi Berkas Citra Algoritma Arithmetic Coding 121 4.50 Analisis Kompresi Berkas Citra Algoritma Huffman 123 4.51 Analisis Algoritma Kompresi pada Berkas Citra 125 4.52 Kompleksitas Waktu Algoritma Shannon-Fano pada Berkas

Citra

127 4.53 Kompleksitas Waktu Algoritma Arithmetic Coding pada

Berkas Citra

128 4.54 Kompleksitas Waktu Algoritma Huffman pada Berkas Citra 129 4.55 Kompleksitas Waktu Algoritma Shannon-Fano, Arithmetic

Coding, dan Huffman pada Berkas Citra

(14)

DAFTAR GAMBAR

Nomor

Gambar Nama Gambar Halaman

2.1 Model Dasar Sistem Informasi 5

2.2 Model Pengembangan Sistem Informasi 5

2.3 Susunan Data 6

2.4 Ilustrasi Kompresi Lossless 9

2.5 Ilustrasi Kompresi Lossy 9

2.6 Nilai-nilai pada Piksel 10

3.1 Diagram Ishikawa 19

3.2 Use Case Diagram pada Aplikasi Kompresi 21

3.3 Diagram Aktivitaspada Aplikasi Kompresi 25

3.4 Diagram SekuensialProses Kompresi 27

3.5 Diagram SekuensialProses Dekompresi 27

3.6 Flowchart Pembacaan Berkas 29

3.7 Flowchart Pengurutan Frekuensi Karakter 30

3.8 Flowchart Kompresi Algoritma Shannon-Fano 1 32

3.9 Flowchart Kompresi Algoritma Shannon-Fano 2 33

3.10 Flowchart Dekompresi Algoritma Shannon-Fano 35

3.11 Flowchart Kompresi Algoritma Arithmetic Coding 1 38

3.12 Flowchart Kompresi Algoritma Arithmetic Coding 2 39 3.13 Gambar 3.13 Flowchart Method FindDecimal() 39

3.14 Flowchart Method FindBinary() 40

3.15 Flowchart Dekompresi Algoritma Arithmetic Coding 1 42 3.16 Flowchart Dekompresi Algoritma Arithmetic Coding 2 43

3.17 Flowchart Method FindLowest() 1 46

3.18 Flowchart Method FindLowest() 2 47

3.19 Flowchart Kompresi Algoritma Huffman 48

3.20 Flowchart Dekompresi Algoritma Huffman 50

3.21 Struktur Menu Aplikasi Kompresi 51

3.22 Rancangan Halaman Utama 52

3.23 Rancangan Halaman Kompresi 52

3.24 Rancangan Halaman Dekompresi 53

3.25 Rancangan Halaman About 53

4.1 Rescaling Bilangan Desimal I 63

4.2 Rescaling Bilangan Desimal II 63

4.3 Rescaling Bilangan Desimal III 64

4.4 Rescaling Library Arithmetic Coding 66

4.5 Pencarian Bilangan Biner I 66

4.6 Pencarian Bilangan Biner II 67

4.7 Pencarian Bilangan Biner III 68

4.8 Treeα 73

4.9 Treeβ 74

(15)

No

Gambar Nama Gambar Halaman

4.11 Treeδ 76

4.12 Huffman’s Tree 76

4.13 Tampilan Halaman Utama 83

4.14 Tampilan Halaman Kompresi 83

4.15 Tampilan Dialog Pilih Berkas Kompresi 84

4.16 Tampilan Properties Berkas I 84

4.17 Tampilan Berkas “bab4.txt” 85

4.18 Tampilan Kompresi Algoritma Shannon-Fano 85

4.19 Tampilan Berkas “bab4.sh” 86

4.20 Tampilan Kompresi Algoritma Arithmetic Coding 87

4.21 Tampilan Berkas “bab4.ar” 88

4.22 Tampilan Kompresi Algoritma Huffman 89

4.23 Tampilan Berkas “bab4.hf” 89

4.24 Tampilan Halaman Dekompresi 90

4.25 Tampilan Dialog Pilih Berkas Dekompresi 91

4.26 Tampilan Properties Berkas II 91

4.27 Tampilan Dekompresi Algoritma 92

4.28 Tampilan Halaman Tentang Aplikasi 93

4.29 Pengujian Berkas Teks satu.txt 96

4.30 Pengujian Berkas Teks bab4.txt 97

4.31 Pengujian Berkas Teks excel.txt 98

4.32 Pengujian Berkas Teks data.txt 99

4.33 Pengujian Berkas Teks flower.txt 100

4.34 Grafik Analisis Algoritma Shannon-Fano pada Berkas Teks 102 4.35 Grafik Analisis Algoritma Arithmetic Coding pada Berkas

Teks

104 4.36 Grafik Analisis Algoritma Huffman pada Berkas Teks 106 4.37 Grafik Analisis Algoritma Shannon-Fano, Arithmetic

Coding, dan Huffman pada Berkas Teks

108

4.38 Pengujian Berkas Citra bee.bmp 114

4.39 Pengujian Berkas Citra bow.bmp 115

4.40 Pengujian Berkas Citra butterfly.bmp 116

4.41 Pengujian Berkas Citra flower.bmp 117

4.42 Pengujian Berkas Citra rainbow.bmp 118 4.43 Grafik Analisis Algoritma Shannon-Fano pada Berkas Citra 120 4.44 Grafik Analisis Algoritma Arithmetic Coding pada Berkas

Citra

122 4.45 Grafik Analisis Algoritma Huffman pada Berkas Citra 124 4.46 Grafik Analisis Algoritma Shannon-Fano, Arithmetic

Coding, dan Huffman pada Berkas Citra

(16)

ABSTRAK

Kompresi data merupakan proses mereduksi ukuran suatu data untuk menghasilkan representasi digital yang padat atau mampat (compact) namun tetap dapat mewakili

kuantitas informasi yang terkandung pada data tersebut. Proses kompresi data sangat diperlukan pada dunia komputerisasi, yaitu pada proses pengiriman data, dan pada penyimpanan data tersebut. Kompresi data dapat dilakukan secara lossy dan lossless.

Pada kompresi data yang bersifat lossy, data dapat dimampatkan dan didekompresi

dengan perubahan informasi di dalamnya, sehingga data asli berbeda dengan data hasil. Pada kompresi data yang bersifat lossless, data dapat dimampatkan dan

didekompresi tanpa kehilangan informasi, sehingga metode kompresi dengan sifat

lossless dapat diterapkan pada keperluan medis dan lain sebagainya. Pada penelitian ini dilakukan implementasi beberapa algoritma kompresi yang bersifat lossless, yaitu Shannon-Fano, Arithmetic Coding dan Huffman yang bertujuan untuk mengetahui algoritma paling optimal di antara ketiga algoritma tersebut. Parameter perbandingan kinerja algoritma yang digunakan adalah waktu kompresi, rasio kompresi, faktor kompresi, saving percentage, dan kompleksitas algoritma (Big-O). Aplikasi

pendukung yang dibangun pada penelitian ini adalah suatu aplikasi kompresi dengan berkas teks dengan format *.txt dan berkas citra digital dengan format *.bmp. Berdasarkan percobaan pada lima buah berkas teks dan lima buah berkas citra digital, diketahui bahwa algoritma Shannon-Fano merupakan algoritma teroptimal dibandingkan Arithmetic Coding dan Huffman, notasi Big-O dari algoritma Shannon-Fano dan Arithmetic Coding adalah O(n), sedangkan nilai notasi Big-O dari algoritma Huffman adalah O(n2).

(17)

COMPARATIVE PERFORMANCE ANALYSIS OF COMPRESSION ALGORITHMS SHANNON-FANO, ARITHMETIC CODING, AND

HUFFMAN IN TEXT FILE AND DIGITAL FILE IMAGE

ABSTRACT

Data compression is process of reducing the size of data to produce a digital representation of a compressed or compact but still be able to represent the quantity of information that contained in the data. Data compression is required in computerization, which in the process of data sending, and in data storage. Data compression can be implemented in lossy method or lossles method. In lossy data compression, data can be compressed and decompressed with some differences of information between original data and result data. In lossless data compression, data can be compressed and decompressed without lossing any information, so that nature of lossless compression method can be applied to medical purposes and so on. In this research, algorithms of compression data implemented with lossless method, which are Shannon-Fano, Arithmetic Coding, and Huffman that aims to find the most optimal algorithm between them. The comparison parameters of the performance of the algorithms used are compression time, compression ratio, compression factor, saving percentage of memory, and algorithmic complexity (Big-O). Supporting application that built in this research is a compression application with text file formatted in *.txt and digital image file formatted in *.bmp. Based on experiments on five text files and five image files, concluded that Shannon-Fano algorithm is the most optimal algorithm compared to Arithmetic Coding and Huffman, Big-O notation from Shannon-Fano and Arithmetic Coding algorithm is O(n), and Big-O notation from Huffman algorithm is O(n2).

(18)

BAB 1 PENDAHULUAN

1.1 Latar Belakang Masalah

Kompresi data erat kaitannya dengan representasi informasi. Namun representasi informasi berisi banyak redundansi. Pengobralan kata dalam penulisan berita akan mengakibatkan kelimpahan kata atau redundansi. Dengan kata lain, redundansi merupakan penggandaan dari simbol yang sama dalam suatu string (Kridalaksana, 1993).

Hal yang penting dalam kompresi data adalah penghapusan dari redundansi. Setelah redundansi dihilangkan, informasi harus dienkode menjadi kode biner. Pada tahap implementasi, digunakan code word yang lebih pendek untuk merepresentasikan

huruf yang muncul lebih sering agar dapat mengurangi angka dari bit yang dibutuhkan untuk merepresentasi setiap huruf.

Situasi yang sama terdapat dalam komunikasi digital. Kecepatan dalam saluran komunikasi, baik melalui kabel atau nirkabel meningkat perlahan, maka dari itu data yang terkirim antara saluran telepon, mesin faksimile, telepon genggam, bahkan setelit dapat dimampatkan. Gambar-gambar yang diunggah ke suatu situs internet juga mengalami proses kompresi sebelum gambar tersebut ditampilkan.

Ada terdapat banyak metode untuk memampatkan data. Metode-metode ini berdasarkan dari berbagai ide yang disesuaikan dengan beberapa tipe data dan menghasilkan kompresi yang sedikit berbeda, namun tetap memampatkan data tersebut dengan menghilangkan redundansi dari data aslinya. Beberapa metode kompresi data ini antara lain adalah algoritma Shannon-Fano, Arithmetic Coding, dan Huffman.

(19)

ditinjau dari kecepatan proses kompresi dan dekompresinya, memori yang dibutuhkan rasio atau ukuran berkas hasil kompresi terhadap berkas asli) dan kualitas citra hasil kompresi yang dihasilkan.

Pada penelitian ini dilakukan analisis statistik dan perbandingan kinerja dari algoritma Shannon-Fano, Arithmetic Coding, dan Huffman pada kompresi berkas teks dan berkas citra digital.

1.2 Rumusan Masalah

Permasalahan yang diteliti dan diuraikan dalam penelitian ini adalah :

1. bagaimana membandingkan kinerja algoritma Shannon-Fano, Arithmetic Coding, dan Huffman agar proses pengiriman data menjadi lebih cepat dan menghemat memori penyimpanannya,

2. bagaimana kompleksitas (notasi Big-O) pada algoritma Shannon-Fano, Arithmetic Coding, dan Huffman, dan

3. bagaimana kompleksitas waktu kompresi dan dekompresi terbaik dan terburuk di antara algoritma Shannon-Fano, Arithmetic Coding, dan Huffman.

1.3 Batasan Masalah

Ruang lingkup penelitian ini dibatasi pada:

1. jenis berkas yang dikompresi adalah teks dengan format *.txt dan citra digital dengan format *.bmp,

2. kinerja algoritma dianalisis berdasarkan waktu kompresi, rasio kompresi, faktor kompresi, saving percentage, panjang karakter, waktu dekompresi, dan kompleksitas algoritma (notasi Big-O), dan

3. bahasa pemrograman yang digunakan adalah Java dengan editor Netbeans IDE 7.0.1.

1.4 Tujuan Penelitian

Tujuan dari penelitian ini adalah:

(20)

2. mengetahui kompleksitas algoritma (notasi Big-O) pada algoritma

Shannon-Fano, Arithmetic Coding, dan Huffman, dan

3. mengetahui kompleksitas waktu kompresi dan dekompresi terbaik dan terburuk di antara algoritma Shannon-Fano, Arithmetic Coding, dan Huffman.

1.5 Manfaat Penelitian

Manfaat yang diharapkan dari penelitian ini adalah menentukan algoritma yang optimal dalam proses kompresi teks dan citra digital sehingga dapat meminimalkan pemakaian memori ataupun bandwidth, mempercepat proses pengiriman data, serta sebagai bahan referensi mengenai algoritma Shannon-Fano, Arithmetic Coding, dan Huffman.

1.6 Metode Penelitian

Adapun tahapan-tahapan yang dilakukan dalam merancang dan mengembangkan penelitian ini adalah sebagai berikut:

1. Studi Literatur

Pada tahap ini dipelajari teori tentang berkas teks, berkas citra digital, dan algoritma kompresi.

2. Analisis sistem.

Pada tahap ini dianalisis proses kerja kompresi menggunakan algoritma Shannon-Fano, Arithmetic Coding, dan Huffman.

3. Perancangan sistem.

Pada tahap ini dilakukan perancangan sistem yang meliputi perancangan proses kerja sistem, perancangan interface, serta algoritma pemrograman.

4. Implementasi sistem.

Pada tahap ini dilakukan implementasi hasil analisis dan perancangan sistem ke dalam bahasa pemrograman.

5. Pengujian sistem.

Pada tahap ini dilakukan pengujian aplikasi untuk mengetahui apakah aplikasi sudah berjalan sesuai dengan tujuan penelitian atau tidak, dan mengevaluasi hasil analisis masing-masing algoritma.

(21)

Pada tahap ini dilakukan dokumentasi hasil analisis dan perancangan yang digunakan untuk menuangkan hasil penelitian tersebut ke dalam laporan akhir dalam bentuk skripsi.

1.7 Sistematika Penulisan BAB 1: PENDAHULUAN

Bab ini membahas konsep dasar penyusunan skripsi, yaitu mengenai latar belakang pemilihan judul “Analisis Perbandingan Kinerja Algoritma Shannon-Fano, Arithmetic Coding, dan Huffman pada Kompresi Berkas Teks dan BerkasCitra Digital”, rumusan masalah, batasan masalah, tujuan penulisan, manfaat penulisan, metode penelitian dan sistematika penulisan.

BAB 2: TINJAUAN PUSTAKA

Bab ini membahas dasar teori yang menunjang penulisan skripsi mengenai teori-teori yang mendukung penelitian.

BAB 3: ANALISIS DAN PERANCANGAN

Bab ini membahas analisis langkah-langkah dalam pembangunan sistem dan pemodelan sistem secara fungsional.

BAB 4: IMPLEMENTASI DAN PENGUJIAN

Bab ini membahas implementasi dan pengujian aplikasi yang telah selesai dibangun dengan algoritma Shannon-Fano, Arithmetic Coding, dan Huffman.

BAB 5: KESIMPULAN DAN SARAN

(22)

BAB 2

LANDASAN TEORI

2.1Definisi Data

Data merupakan bahan baku informasi, dapat didefinisikan sebagai kelompok teratur simbol-simbol yang mewakili kuantitas, fakta, tindakan, benda dan sebagainya (Supriyanto & Muhsin, 2008: 69). Data terbentuk dari karakter, dapat berupa alfabet, angka, maupun simbol khusus seperti *,$ dan /. Data disusun mulai dari bits, bytes, fields, records, file dan database.

Sistem informasi menerima masukan data dan instruksi, mengolah data tersebut sesuai instruksi, dan mengeluarkan hasilnya. Fungsi pengolahan informasi sering membutuhkan data yang telah dikumpulkan dan diolah dalam periode sebelumnya, karena itu ditambahkan sebuah penyimpanan data file (data file storage) ke dalam model sistem informasi. Dengan begitu, kegiatan pengolahan tersedia, baik bagi data baru maupun data yang telah dikumpulkan dan disimpan sebelumnya.

Data Proses Informasi

Gambar 2.1 Model Dasar Sistem Informasi

Masukan Pengolahan Informasi Penyimpanan

(23)

Tablespace

SYSTEM Tablespace 1 Tablespace 2

Database

Segment 1 Segment 2

Segment 3

Extend 1

Extend 2

Data Block

Tablespace

Segment

Gambar 2.3 Susunan Data

Sistem di komputer akan mengorganisasi data dalam sebuah hirarki yang terdiri dari satuan-satuan bit, byte, field, record, file, dan database.Bit merupakan unit

data yang terkecil, tingkatan terendah; singkatan dari binary digit (Joos et al, 2009:

12). Byte adalah kumpulan dari kombinasi bits, biasanya terdiri 8 bit yang menjadi

unit terkecil dalam storage dan mempunyai alamat, sering kali menjadi bagian dari

word (Supriyanto et al, 2008: 71). Field merupakan karakter-karakter yang

membentuk arti tertentu, misalnya field untuk nomor mahasiswa, dan sebagainya

Record adalah kumpulan dari fields yang membentuk sebuah arti yang saling berhubungan. (Noersasongko, 2010: 36). File adalah kumpulan dari records yang sejenis, contoh file tentang kepegawaian di berbagai departemen di sebuah instansi (Supriyanto et al, 2008: 71). Database adalah sekumpulan data yang berhubungan secara logika dan memiliki beberapa arti yang saling berpautan (Mata-Toledo, 2007: 1).

2.2 Kompresi Data

Proses kompresi merupakan proses mereduksi ukuran suatu data untuk menghasilkan representasi digital yang padat atau mampat (compact) namun tetap dapat mewakili

(24)

lebih kecil dan lebih ringan dalam proses transmisi dan menghemat ruang memori dalam penyimpanan data (Putra, 2010: 261).

Ada beberapa faktor yang memunculkan data berlebihan sehingga harus diperlukan proses kompresi. Faktor-faktor tersebut antara lain sebagai berikut:

1. pada suatu citra tunggal atau pada frame tunggal video dapat terjadi korelasi

yang signifikan antara suatu piksel dengan piksel tetangga. Korelasi ini disebut dengan korelasi spasial (spatial correlation),

2. pada data yang diambil dari beberapa sensor (multi sensor), terdapat korelasi yang signifikan antarsampel yang diambil oleh sensor-sensor tersebut. Korealasi ini disebut dengan korelasi spektral (spectral correlation),

3. pada data temporal seperti video, terdapat korelasi yang signifikan antara sampel data pada segmen waktu yang berbeda. Korelasi ini disebut sebagai korelasi temporal (temporal correlation),

4. pada suatu data terdapat informasi yang tidak relevan dengan sudut pandang persepsi mata.

2.3 Data Berlebihan (Data Redundancy)

Terdapat beberapa faktor yang memunculkan data berlebihan (data redundancy). Data

berlebihan ini dapat dinyatakan secara sistematis. Bila n1 dan n2 menyatakan jumlah satuan (unit) informasi dalam dua himpunan data (data set) yang mewakili data yang

sama maka data berlebihan relatif (relative data redundancy) RD dari himpunan data pertama dinyatakan sebagai berikut:

�� = 1−1

� ... (1)

Dimana RD merupakan redundansi, dan CR merupakan rasio kompresi. Rasio kompresi (CR ) dinyatakan sebagai berikut:

�� =�1

2 ... (2)

Dimana n1 merupakan nilai dari data hasil kompresi, dan n2 merupakan nilai dari data asli.

(25)

mendekati 0, sehingga RD mendekati minus tak terhingga. Ini berarti data set kedua mengandung informasi jauh lebih banyak dibandingkan data set pertama. Secara umum, CR dan RD berturut-turut beada dalam interval (1,∞) dan (-∞,1). Dalam praktik, rasio kompresi 20 (atau 20:1) berarti data set pertama mengandung 20 satuan (unit) informasi untuk setiap 1 unit pada data set kedua (atau pada data terkompresi). Dengan kata lain, untuk kasus citra, citra asli (citra belum termampatkan) mengandung 20 bit informasi untuk setiap 1 bit pada data terkompresi. Redundansi

0.8 berarti 80% data pada data set pertama adalah berlebihan.

2.4 Teknik Kompresi Citra

Menurut Putra (2010), ada dua teknik yang dapat dilakukan dalam memampatkan citra digital.

1. Kompresi Lossless

Pada kompresi jenis ini informasi yang terkandung pada berkas hasil sama dengan informasi pada berkas asli. Berkas hasil proses kompresi dapat dikembalikan secara sempurna menjadi berkas asli, tidak terjadi kehilangan informasi, tidak terjadi kesalahan informasi. Oleh karena itu metode ini disebut juga error free compression.

Pada kompresi lossless, karena harus mempertahankan kesempurnaan

informasi, sehingga hanya terdapat proses coding dan decoding, tidak terdapat

proses kuantitasi. Kompresi tipe ini cocok diterapkan pada berkas basis data (database), spread sheet, berkas word processing, citra biomedis dan lain

sebagainya. 2. Kompresi Lossy

Kompresi data yang bersifat lossy mengijinkan terjadinya kehilangan sebagian

(26)

pada penyimpanan data analog yang didigitasi seperti gambar, video, dan suara.

Ilustrasi kompresi lossless dan lossy dapat dilihat pada Gambar 2.4 dan Gambar 2.5.

Algoritma Coding

Algoritma Decoding

000011100101011

000011100101011 BAABBA

BAABBA

Gambar 2.4 Ilustrasi Kompresi Lossless

Algoritma Coding

Algoritma Decoding

000110001010110 BAABBA

BAABA 000110001010110

Gambar 2.5 Ilustrasi Kompresi Lossy

2.5 Berkas Teks

(27)

2.6 Citra Digital

Citra digital merupakan obyek nyata yang direpresentasi secara elektronis (Mulyanta, 2006: 5). Obyek dapat bersumber dari dokumen, foto, barang cetakan, hingga lukisan. Unsur utama citra digital adalah grid berisi elemen obyek yang sangat dasar, yaitu picture element (piksel). Setiap piksel mempunyai tingkatan nilai tertentu, sehingga

menghasilkan representasi data yang ditangkap oleh mata manusia sebagai bentuk tingkatan warna hitam, putih, abu-abu, hingga penuh dengan warna.

Setiap bit dalam piksel akan disimpan dalam urutan tertentu oleh komputer dengan penghitungan matematis agar menghasilkan file yang optimal dibaca oleh media perangkat yang mendukungnya. Setiap informasi bit digital akan diinterpretasikan dan dibaca oleh komputer agar menghasilkan versi analog untuk ditampilkan dan dicetak oleh media lain. Versi yang dilihat oleh mata manusia adalah data bersifat analog yang dirangkat oleh peralatan digital pada media komputer.

1 0 0 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1

1 0 1 1 0 1 0 1 1 0 1 1 0 1 0 1 1 1 0 1 0 1

1 0 1 1 1 0 1 1 1 0 1 1 0 1 1 1 0 1 1 1 0 1

1 0 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 0 1

1 0 1 1 1 1 1 1 1 0 1

1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1

Gambar 2.6 Nilai-nilai pada Piksel

Gambar 2.6 memperlihatkan bahwa bentuk-bentuk obyek dihasilkan dari kombinasi nilai 0 untuk warna hitam dan 1 untuk warna putih, sehingga membentuk

bitonal image. Bitonal image tidak mengenal gradasi warna, sehingga citra yang

dihasilkan mempunyai kesan sangat kaku dan tidak alami.

2.7 Pengolahan Citra Digital

(28)

tujuan analisis, melakukan proses penarikan informasi atau deskripsi obyek atau pengenalan obyek yang terkandung pada citra, melakukan kompresi atau reduksi data untuk tujuan penyimpanan data, transmisi data, dan waktu proses data. Masukan dari pengolahan citra adalah citra, sedangkan keluarannya adalah citra hasil pengolahan (Sutoyo, 2009: 5).

2.8 Format Berkas Bitmap (*.bmp)

Gambar bitmap adalah citra yang dihasilkan oleh sejumlah titik berwarna-warni yang disebut piksel. Piksel-piksel itu ditempatkan pada suatu bidang matriks. Warna-warna piksel yang sama atau senada yang berada pada suatu area dan berdampingan dengan warna-warna dapat menimbulkan nuansa bentuk. Gabungan dari beberapa nuansa itu ditangkap oleh mata manusia sebagai citra atau gambar (Budijanto, 2006: 253).

Format *.bmp adalah format penyimpanan standar tanpa kompresi umum yang dapat digunakan untuk menyimpan citra biner hingga citra warna. Format ini terdiri dari beberapa jenis yang setiap jenisnya ditentukan dengan jumlah bit yang digunakan untuk menyimpan sebuah nilai piksel (Putra, 2010:58).

Struktur dari format *.bmp dapat dilihat pada Gambar 2.7.

Header

berkas

Header

bitmap

Informasi

palet Data bitmap

14 byte 12-64 byte 0-1024 byte N byte Gambar 2.7 Struktur Format Berkas *.bmp

Berkas dengan format *.bmp memerlukan memori penyimpanan yang besar, karena berkas ini merupakan format yang belum terkompresi dan menggunakan sistem warna Red, Green, Blue (RGB) dimana masing-masing warna pikselnya terdiri dari 3 komponen yang dicampur menjadi satu.

2.9 Informasi Teori dan Entropi

(29)

pada pengkodean. Jika informasi tambahan itu bisa diambil, maka data yang diperlukan tersebut bisa direduksi.

Teori informasi memanfaatkan terminologi entropi sebagai tolak ukur

seberapa besar informasi yang dikodekan pada sebuah data. Menurut Adriani (2009),

entropi merupakan suatu ukuran informasi yang dikandung oleh suatu citra dan

digunakan sebagai ukuran untuk mengukur kemampuan kompresi dari data. Entropi

memiliki persamaan matematis sebagai berikut:

�(�) = − ∑ ���=1 ���2�� ... (3) Dimana m merupakan jumlah simbol dan pi merupakan probabilitas simbol ke-i. Semakin kecil nilai entropi yang dihasilkan, maka kemampuan kompresi lebih baik.

Entropi juga didefinisikan sebagai limit kemampuan kompresi citra yang tidak dapat

dilampau oleh algoritma manapun.

2.10 Algoritma Shannon-Fano

Algoritma Shannon-Fano dinamai berdasarkan nama pengembangnya yaitu Claude Shannon dan Robert Fano. Metode ini dimulai dengan deretan dari simbol n dengan kemunculan frekuensi yang diketahui. Mula-mula simbol disusun secara menaik (ascending order) berdasarkan frekuensi kemunculannya. Lalu set simbol tersebut dibagi menjadi dua bagian yang berbobot sama atau hampir sama. Seluruh simbol yang berada pada subset I diberi biner 0, sedangkan simbol yang berada pada subset II diberi biner 1. Setiap subset dibagi lagi menjadi dua subsubset dengan bobot kemunculan frekuensi yang kira-kira sama, dan biner kedua diberikan seperti subset I dan subset II. Ketika subset hanya berisi dua simbol, biner diberikan pada setiap simbol. Proses akan berlanjut sampai tidak ada subset yang tersisa (Salomon: 2010).

Algoritma Shannon-Fano merupakan kompresi yang bersifat lossless, dimana

metode ini harus mendekompresi berkas agar dapat direkonstruksikan menjadi berkas semula tanpa kehilangan informasi.

2.11 Algoritma Arithmetic Coding

(30)

namun pada saat itu metode ini belum memenuhi solusi yang pantas untuk masalah yang akan dihadapi, yaitu keakurasian Arithmetic Coding harus ditingkatkan dengan panjang dari pesan yang dimasukkan. Untungnya, pada tahun 1976 Pasco dan Rissanen membuktikan bahwa panjang angka yang terbatas sebenarnya memadai untuk encoding, tanpa mengurangi akurasinya. Pada tahun 1979 – 1980, Rubin,

Guazzo, Rissanen, dan Langdon mempublikasikan algoritma dasar encoding yang

masih digunakan sampai sekarang. Algoritma ini berdasarkan ketelitian aritmatik yang terbatas (Bodden et al, 2007)

Arithmetic Coding menggantikan satu deretan simbol input dengan sebuah

bilangan floating point. Semakin panjang dan semakin kompleks pesan yang

dikodekan, semakin banyak bit yang diperlukan untuk keperluan tersebut. Output dari

metode ini adalah satu angka yang lebih kecil dari 1 dan lebih besar atau sama dengan 0. Angka ini secara unik dapat di-encode sehingga menghasilkan deretan simbol yang dipakai untuk menghasilkan angka tersebut (Salomon, 2010).

2.12 Algoritma Huffman

Metode ini dikembangkan oleh David Huffman sebagai bagian dari tugas kuliahnya. Kelas tersebut merupakan bagian dari teori informasi dan diajarkan oleh Robert Fano di MIT. Kode yang dihasilkan menggunakan metode ini dinamakan Huffman Codes.

Kode ini merupakan kode prefiks dan optimal untuk model yang diberikan.

Menurut Sayood (2012), prosedur algoritma Huffman berdasarkan dua penelitian mengenai kode prefix yang optimum, yaitu:

1. Simbol yang mempunyai frekuensi kemunculan lebih sering akan memiliki

code word yang lebih pendek dari simbol lainnya.

2. Dua simbol yang mempunyai frekuensi kemunculan paling sedikit akan memiliki code word dengan panjang yang sama.

Algoritma Huffman merupakan kompresi yang bersifat lossless, dimana

(31)

2.13 Kompleksitas Algoritma (Notasi Big-O)

Dalam aplikasinya, setiap algoritma memiliki dua buah ciri yang khas yang dapat digunakan sebagai parameter pembanding, yaitu jumlah proses yang dilakukan dan jumlah memori yang digunakan untuk melakukan proses. Jumlah proses ini dikenal sebagai kompleksitas waktu yang disimbolkan dengan T(n), sedangkan jumlah memori ini dikenal sebagai kompleksitas ruang yang disimbolkan dengan S(n).

Kenyataannya, jarang sekali dibutuhkan kompleksitas waktu yang detail dari suatu algoritma. Biasanya yang dibutuhkan hanyalah bagian paling signifikan dari kompleksitas waktu yang sebenarnya. Kompleksitas waktu ini dinamakan kompleksitas waktu asimptotik yang dinotasikan dengan O (O-besar atau Big-O). Kompleksitas waktu asimptotik ini diperoleh dengan mengambil term terbesar dari suatu persamaan kompleksitas waktu.

Misalnya jika diperoleh waktu eksekusi dari suatu algoritma T(n) adalah sebanyak 5n3+4n+3 langkah untuk besar input sebesar n, maka akan lebih mudah

untuk menghapus pangkat yang kecil seperti 4n dan 3 karena keduanya tidak terlalu signifikan terhadap input n. Koefisien 5 pada 5n3 juga dihilangkan dengan anggapan

bahwa komputer beberapa tahun kedepan akan menjadi 5 kali lipat lebih cepat dari komputer sekarang, sehingga keberadaan koefisien 5 juga tidak terlalu signifikan. Maka waktu yang diperlukan oleh algoritma tersebut untuk memproses input sebesar

n adalah n3, atau biasa dituliskan Big-O=n3 (Dasgupta et al, 2006).

Notasi Big-O yang sering dijumpai pada algoritma antara lain:

1. O(1) – constant time

Algoritma yang menghasilkan nilai selalu tetap tanpa bergantung kepada banyak masukan.

2. O(2log n) – logarithmic time

Algoritma yang berdasarkan pada binary tree biasanya memiliki kompleksitas O(log n).

3. O(n) – linear time

(32)

4. O(n 2log n) – linearithmic time

Algoritma yang memecahkan masalah menjadi masalah yang lebih kecil, lalu menyelesaikan tiap masalah secara independen.

5. O(n2) – quadratic time

Algoritma yang melibatkan proses perulangan bersarang (nested loop).

6. O(n3) – cubic time

Algoritma dengan kompleksitas O(n3) mirip dengan O(n2), namun

menggunakan loop bersarang sebanyak 3 kali. Algoritma sejenis ini hanya

cocok jika n kecil. Jika n besar, waktu yang dibutuhkan akan sangat lama. 7. O(2n) – exponential time

Salah satu algoritma yang mempunyai kompleksitas O(2n) adalah brute force

dalam menebak suatu password. Setiap penambahan karakter, akan melipatgandakan waktu yang dibutuhkan.

8. O(n!) – factorial time

O(n!) merupakan kompleksitas yang sangat cepat pertumbuhan waktu yang diperlukannya. Algoritma ini memproses setiap masukan dan menghubungkannya dengan n-1 masukan lainnya.

2.14 Evaluasi Kinerja Algoritma

Beberapa parameter untuk evaluasi kinerja algoritma, antara lain: 1. Rasio Kompresi

Rasio Kompresi merupakan rasio antara ukuran dari berkas terkompres dan berkas asli.

����������������= ������������������� ���������������������� ... (4) 2. Faktor Kompresi

Faktor kompresi merupakan invers dari rasio kompresi, yaitu hubungan antara berkas asli dan berkas terkompres.

�����������������= ���� ������ �����������

���� ����� ����������� ... (5) 3. Saving Percentage (SP)

Saving percentage menghitung pemampatan dari berkas asli sebagai

(33)

��= ���������� ����������� −�������� ������ ���������������� ����������� % .. ... (6)

2.15 Penelitian yang Relevan

2.15.1 Studi Perbandingan Kinerja Algoritma Kompresi Shannon-Fano dan

Arithmetic Coding pada Citra Digital

Pada penelitian Andriani (2009) yang berjudul Studi Perbandingan Kinerja Algoritma Kompresi Shannon-Fano dan Arithmetic Coding pada Citra Digital, perbandingan kinerja algoritma kompresi bertujuan untuk mengetahui performansi masing-masing algoritma terhadap citra digital. Untuk mengetahui performansi hasil proses kompresi dilakukan melalui perhitungan rasio kompresi, ukuran file hasil kompresi, kecepatan proses kompresi dan dekompresi dan nilai PSNR. Berdasarkan seluruh hasil pengujian, sistem kompresi menggunakan Arithmetic Coding Coding memiliki performansi yang baik berdasarkan rasio kompresi serta ukuran file hasil kompresi, sedangkan dari segi kecepatan proses kompresi dan dekompresi algoritma Shannon-Fano lebih baik daripada algoritma Arithmetic Coding.

2.15.2 Analisis Kinerja dan Implementasi Algoritma Kompresi Arithmetic Coding pada File Teks dan Citra Digital

Pada penelitian Sarifah (2010) yang berjudul Analisis Kinerja dan Implementasi Algoritma Kompresi Arithmetic Coding pada File Teks dan Citra Digital, penelitian

diimplementasi menggunakan Matlab 7.5.0. Analisis kinerja algoritma ini bertujuan untuk mengetahui performansi algoritma ini pada file teks dan citra digital. Untuk

mengetahui performansi hasil proses kompresi dilakukan melalui perhitungan rasio kompresi, ukuran file hasil kompresi, kecepatan proses kompresi dan dekompresi dan

(34)

2.15.3 Implementasi Algoritma Huffman pada Kompresi Citra BMP

Pada penelitian Ginting (2012) yang berjudul Implementasi Algoritma Huffman pada Kompresi Citra BMP, penelitian diimplementasikan menggunakan Microsoft Visual Basic 2008. Implementasi algoritma Huffman tersebut bertujuan untuk mengkompresi citra bmp sehingga ukuran file hasil kompresi lebih kecil dibandingkan dengan ukuran

citra asli dimana parameter yang digunakan untuk mengukur kinerja algoritma adalah rasio kompresi yang dihasilkan. Berdasarkan dari seluruh hasil pengujian, hasil kompresi citra menggunakan algoritma Huffman hanya mencapai tingkat rasio 2% - 8% untuk citra yang mengandung banyak variasi warna sedangkan untuk citra yang mengandung sedikit variasi warna (duplikasi warna) tingkat rasionya dapat mencapai hingga 80%.

2.15.4 Analisis Perbandingan Teknik Kompresi Menggunakan Algoritma Shannon-Fano, dan Run Length Encoding pada Citra Berformat BMP dan PNG.

(35)

BAB 3

ANALISIS DAN PERANCANGAN SISTEM

3.1 Analisis Sistem

Analisis sistem merupakan tahap awal dalam sebuah penelitian yang bertujuan mengetahui masalah terkait dalam pembuatan sebuah sistem dan menggambarkan proses-proses yang ada di dalam sistem untuk menghasilkan keluaran yang sesuai dengan kebutuhan pemakai (user).

3.1.1 Ruang lingkup masalah

Tools yang digunakan untuk membuat aplikasi kompresi Shannon-Fano, Arithmetic Coding, dan Huffman ini adalah NetBeans IDE 7.0.1. Desain interface yang ada

dalam aplikasi ini berupa tampilan form aplikasi untuk proses kompresi dari berkas teks dengan format *.txt atau berkas citra dengan format *.bmp yang dimasukkan secara digital beserta properties dari masing-masing algoritma kompresi dan untuk

proses dekompresi dari berkas dengan format *.sf, *.ar, atau *.hf beserta properties

dari masing-masing algoritma dekompresi. Tujuan dari adanya properties ini adalah

sebagai parameter yang menentukan algoritma optimal pada kompresi berkas teks atau berkas citra digital.

3.1.2 Analisis masalah

(36)
[image:36.595.117.517.97.323.2]

Tabel 3.1 Penyebab dan Akibat

Analisis Penyebab dan Akibat Perbaikan Tujuan Sistem Masalah atau

Peluang Masalah

Penyebab dan

Akibat Tujuan Sistem Kendala Sistem 1. Ukuran dari

berkas teks dan berkas citra digital besar. 2. Banyak algoritma yang dapat diterapkan untuk kompresi berkas.

1. Proses transmisi data (berkas teks atau berkas citra digital) lambat.

2. Membutuhkan memori yang besar untuk menyimpan berkas teks atau berkas citra digital. 1. Dibutuhkan aplikasi untuk proses kompresi dan dekompresi berkas.

1. Tidak tersedianya aplikasi kompresi dan dekompresi berkas yang menggunakan algoritma Shannon-Fano, Arithmetic Coding, dan Huffman.

Penyebab dan akibat pada Tabel 3.1 merepresentasikan sejumlah analisis masalah yang mempengaruhi aplikasi kompresi. Selanjutnya, masalah-masalah tersebut didekomposisi untuk mendapatkan rincian masalah yang lebih detil sebagai bahan pertimbangan untuk menghasilkan solusi teknis.

Adapun dekomposisi masalah tersebut digambarkan dengan diagram ishikawa

dan dapat dilihat pada Gambar 3.1.

Ukuran berkas teks atau berkas citra digital besar Sulit untuk memampatkan

berkas dengan cepat

Boros memori penyimpanan berkas Tidak ada aplikasi

kompresi dan dekompresi berkas dengan menggunakan algoritma Shannon-Fano,

Arithmetic Coding, dan Huffman

Machine / Tools Materials Methods Man

Banyaknya algoritma kompresi yang dapat diterapkan

[image:36.595.114.514.467.696.2]
(37)

3.1.3 Analisis kebutuhan

Analisis kebutuhan suatu sistem dikelompokkan menjadi 2 bagian, yaitu analisis fungsional dan analisis non-fungsional. Fungsional sistem adalah aktivitas dan pelayanan yang harus dimiliki oleh sebuah sistem yang dapat berupa input, output,

proses maupun data yang tersimpan. Terkait dengan tahapan analisis perbandingan kinerja algoritma kompresi, khususnya analisis fungsional, tentunya sistem yang diinginkan dapat:

1. memampatkan berkas teks atau berkas citra digital, 2. menampilkan properties dari kinerja algoritma kompresi,

3. mendekompresi berkas yang telah dimampatkan, dan 4. menampilkan properties dari kinerja algoritma dekompresi.

Non-fungsional sistem adalah karakteristik atau batasan yang menentukan kepuasan sebuah sistem yakni seperti kinerja, kemudahan penggunaan, anggaran, serta tenggat waktu yang mampu bekerja tanpa mengganggu fungsionalitas sistem lainnya. Non-fungsional sistem dari sistem yang dibangun dari segi performance adalah sistem

memiliki kemampuan dalam melakukan kompresi berkas teks dan berkas citra digital dengan baik. Dari segi information adalah kemampuan sistem dalam menyediakan

pesan konfirmasi keberhasilan proses kompresi dan dekompresi berkas. Dari segi

economic adalah kemampuan sistem bekerja dengan baik tanpa biaya (cost) perangkat

lunak dan perangkat keras, sehingga penggunaannya tidak mengeluarkan biaya ekstra.

3.1.4 Desain logis

Model yang dihasilkan berdasarkan analisis di atas menunjukkan apa saja yang ada dalam aplikasi Shannon-Fano, Arithmetic Coding, dan Huffman pada kompresi berkas teks dan berkas citra digital, dan bagaimana bagian-bagian sistem tersebut diintegrasikan sehingga membentuk sistem yang utuh. Hal tersebut merupakan solusi yang memenuhi kebutuhan yang telah dianalisis. Desain logis yang digunakan pada penelitian ini antara lain:

1. Diagram Use case

(38)

Pada sistem aplikasi kompresi terdapat satu aktor yaitu user. Untuk

mendapatkan use case dari aktor, maka harus ditentukan hal-hal apa saja yang dapat dilakukan pemain pada sistem. Hal-hal yang dapat dilakukan oleh aktor antara lain:

a. melakukan kompresi berkas, b. melakukan dekompresi berkas, c. melihat halaman Tentang Aplikasi.

Diagram use case yang terjadi berdasarkan aktor dan use case yang telah diperoleh dapat dilihat pada Gambar 3.2.

Kompresi

[image:38.595.238.428.280.533.2]

Tentang Aplikasi Dekompresi

Gambar 3.2 Diagram Use Case pada Aplikasi Kompresi

(39)
[image:39.595.112.524.96.624.2]

Tabel 3.2 Dokumentasi Naratif Use Case Kompresi

Nama Use Case Kompresi

Aktor User

Deskripsi Use casejendela “Kompresi” dari Aplikasi Kompresi. ini mendeskripsikan proses menampilkan Pra-kondisi Sudah masuk ke tampilan Aplikasi Kompresi

Bidang khas suatu kejadian

Kegiatan Aktor Respon Sistem 1. Klik menuFile

2. Klik menu item

“Kompresi”

4. Klik button “Cari

File

7. Klik button

“Kompres”

3. Menampilkan jendela “Kompresi”

5. Membaca berkas yang telah

dimasukkan aktor 6. Menampilkan

properties berkas yang telah

dimasukkan aktor

8. Melakukan proses kompresi dari berkas yang dimasukkan aktor 9. Menampilkan

properties berkas yang telah

dikompresi Pasca-kondisi Aplikasi dilanjutkan tanpa perubahan

Dokumentasi naratif untuk proses dekompresi yang terdapat dalam diagram

(40)
[image:40.595.111.522.96.609.2]

Tabel 3.3 Dokumentasi Naratif Use Case Dekompresi

Nama Use Case Dekompresi

Aktor User

Deskripsi Use casejendela “Dekompresi” dari Aplikasi Kompresi. ini mendeskripsikan proses menampilkan Pra-kondisi 1.2. Sudah masuk ke tampilan Aplikasi Kompresi, Sudah melakukan proses kompresi.

Bidang khas suatu kejadian

Kegiatan Aktor Respon Sistem 1. Klik menuFile

2. Klik menu item

“Dekompresi”

4. Klik button “Cari File

7. Klik button

“Dekompres”

3. Menampilkan jendela

“Dekompresi”

5. Membaca berkas yang dimasukkan aktor

6. Menampilkan

properties berkas

yang dimasukkan aktor

8. Melakukan proses dekompresi dari berkas yang dimasukkan aktor 9. Menampilkan

properties berkas

yang telah didekompresi Pasca-kondisi Aplikasi dilanjutkan tanpa perubahan

(41)
[image:41.595.112.521.99.367.2]

Tabel 3.4 Dokumentasi Naratif Use Case Tentang Aplikasi

Nama Use Case Tentang Aplikasi

Aktor User

Deskripsi Use casejendela “Tentang Aplikasi” dari Aplikasi Kompresi. ini mendeskripsikan proses menampilkan Pra-kondisi Sudah masuk ke tampilan Aplikasi Kompresi

Bidang khas suatu kejadian

Kegiatan Pemain Respon Sistem 1. Klik menu

“Bantuan” 2. Klik menu item

“Tentang Aplikasi” 3. Menampilkan jendela “Tentang Aplikasi”

Pasca-kondisi Aplikasi dilanjutkan tanpa perubahan

2. Diagram aktivitas

(42)

USER SYSTEM

Input berkas

Baca berkas *.bmp

*.txt

Pilih Algoritma

Kompresi Shannon-Fano

Menyimpan berkas terkompresi ke direktori

Menampilkan properties terkompresi Menampilkan properties berkas

!= Shannon-Fano

Huffman Kompresi != Kompresi

Pilih Menu

Arithmetic Coding

Input berkas

*.sf

Baca berkas

Menampilkan properties berkas != *.sf

*.ar

*.hf Dekompresi

Dekompresi

*.sf != *.sf

*.ar

*.hf

Dekompresi

Menyimpan berkas terdekompresi ke direktori

Menampilkan properties terdekompresi

Tentang Aplikasi Menampilkan Tentang Aplikasi

[image:42.595.110.525.81.748.2]

!=Dekompresi

(43)

3. Diagramsekuensial

Diagram ini menggambarkan hubungan statis antara aktor dan lifeline. Hubungan pada proses kompresi berkas terdiri dari proses sebagai berikut: a. pemanggilan berkas,

b. pembacaan isi berkas, c. pemasukkan algoritma,

d. penyimpanan berkas hasil kompresi, dan e. perhitungan properties kompresi.

(44)

Kompresi Berkas Input Berkas

Input berkas *.txt || *.bmp

Baca Isi Berkas

Baca isi berkas

Input Algoritma

Kode ASCII terkompresi

Simpan Berkas Terkompresi Menghitung Properties

Properties Algoritma

Shannon-Fano, Arithmetic Coding, dan Huffman

Gambar 3.4 Diagram Sekuensial Proses Kompresi

Dekompresi Berkas Input berkas *.sh || *.ar || *.hf

Baca isi berkas

Input Berkas Baca Isi Berkas Input Algoritma

Algoritma Shannon-Fano, Arithmetic Coding, dan Huffman

Simpan Berkas Terkompresi Menghitung Properties

Properties Kode ASCII

terdekompresi

(45)

3.2 Pseudocode

Pseudocode adalah penjelasan dari algoritma pemrograman komputer yang

menggunakan struktur sederhana dari bahasa pemrograman. Biasanya yang ditulis dari

pseudocode adalah variabel dan fungsi. Tujuan penggunaan utama dari pseudocode

adalah untuk memudahkan dalam memahami prinsip-prinsip dari suatu algoritma.

3.2.1 Pseudocode pembacaan berkas

Pada pembacaan berkas, berkas yang dibaca merupakan berkas yang dimasukkan secara digital. Pseudocode pembacaan berkas:

bacafile()

{

input file; String keluaran;

if (file == "*.txt")

{

file = StringBuffer.toString();

}

else if (file == "*.bmp")

{

byte[] imageBytes = ByteArrayOutputStream.toByteArray(); file = BASE64Encoder.encode(imageBytes);

}

output keluaran; }

(46)

Input File; String keluaran;

File == *.txt

File = StringBuffer.toString(); File == *.bmp

Output keluaran

Selesai

Mulai

ya ya

tidak tidak

Byte[] imageBytes = ByteArrayOutputStream.toByteArray();

File =

[image:46.595.144.494.76.384.2]

BASE64Encoder.encode(imageBytes);

Gambar 3.6 Flowchart Pembacaan Berkas

3.2.2 Pseudocode pengurutan frekuensi

Pada pengurutan frekuensi, pengurutan dilakukan secara menaik. Pseudocode

pengurutan frekuensi: sorting()

{

array arr_char[int count,String char];

nchar = arr_char.count();

kchar = arr_char.char(); String char temp;

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

for (int j=0; j<char.length-1; j++)

{

if (nchar[j] > nchar[j+1])

{

temp = nchar[j];

nchar[j] = nchar[j+1];

nchar[(j+1)] = temp; }

nchar[j].index = j;

(47)

}

(char.length-1)--;

}

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

{

output kchar[i],nchar[i]; }

}

Flowchart pengurutan frekuensi karakter dapat dilihat pada Gambar 3.7.

array arr_char[int count,String char]; nchar = arr_char.count();

kchar = arr_char.char(); String char temp;

Mulai

nchar[j] > nchar[j+1]

temp = nchar[j]; nchar[j] = nchar[j+1];

nchar[(j+1)] = temp; ya ya ya

nchar[j].index = j; nchar[j+1].index = j+1;

tidak

Output kchar[i],nchar[i];

Selesai ya int i=0; i<char.length(); i++

int j=0; j<char.length-1; j++

int i=0; i<char.length(); i++ tidak

tidak

tidak

[image:47.595.150.480.235.740.2]

(char.length-1)--;

(48)

3.2.3 Pseudocode kompresi algoritma Shannon-Fano Pseudocode proses kompresi algoritma Shannon-Fano:

split(int my_index) {

if(my_index > 1)

{

array my_char[int s0_index, int s1_index, int s0_count, int s1_count];

String g_char, g_code;

s0_char = my_char.length()];

s1_char = my_char.length()]; int i_s0_char = 0;

int i_s1_char = 0;

s0_index = 0;

s1_index = my_index-1;

s0_count = my_char[s0_index].g_count();

s1_count = my_char[s1_index].g_count();

s0_char = s_add(my_char[s0_index],s0_char,i_s0_char); i_s0_char++;

s1_char = s_add(my_char[s1_index],s1_char,i_s1_char); i_s1_char++;

karakter_s0 = my_char[s0_index].g_char();

kode_s0 = my_char[s0_index].g_code();

karakter_s1 = my_char[s1_index].g_char();

kode_s1 = my_char[s1_index].g_code();

my_char[s0_index].add_code("1");

output(karakter_s0+" , "+kode_s0); my_char[s1_index].add_code("0");

output(karakter_s1+" , "+kode_s1);

for(int i=0; i<my_index; i++)

{

if(!((s1_index-s0_index == 1) || (s1_index-s0_index == - 1)))

{

if(s0_count < s1_count)

{

s0_index++;

(49)

my_char[s0_index].add_code("1"); s0_char =

s_add(my_char[s0_index],s0_char,i_s0_char); i_s0_char++;

output(karakter_s0+" , "+kode_s0);

}

else {

s1_index--;

s1_count += my_char[s1_index].g_count();

my_char[s1_index].add_code("0"); s1_char =

s_add(my_char[s1_index],s1_char,i_s1_char); i_s1_char++;

output(karakter_s1+" , "+kode_s1); } } } split(s0_char, i_s0_char); split(s1_char, i_s1_char); } }

[image:49.595.172.467.459.743.2]

Flowchart proses kompresi algoritma Shannon-Fano dapat dilihat pada Gambar 3.8 dan Gambar 3.9.

Mulai

My_index > 1

array my_char[int s0_index, int s1_index, int s0_count, int s1_count];

String g_char, g_code;

s0_char = my_char.length(); s1_char = my_char.length();

s1_index = my_index-1; s0_count = my_char[s0_index].g_count(); s1_count = my_char[s1_index].g_count(); s0_char = s_add(my_char[s0_index],s0_char,i_s0_char);

i_s0_char++;

s1_char = s_add(my_char[s1_index],s1_char,i_s1_char); i_s1_char++;

ya tidak

a b

(50)

int i=0; i<my_index; i++

karakter_s0 = my_char[s0_index].g_char(); kode_s0 = my_char[s0_index].g_code() karakter_s1 = my_char[s1_index].g_char();

kode_s1 = my_char[s1_index].g_code()

my_char[s0_index].add_code("1"); my_char[s1_index].add_code("0");

s0_count < s1_count ya

ya

tidak

split(s0_char, i_s0_char); split(s1_char, i_s1_char); ya

output (karakter_s0+" , "+kode_s0); output (karakter_s1+" , "+kode_s1);

Selesai s0_index++;

s0_count += my_char[s0_index].g_count(); my_char[s0_index].add_code("1");

s0_char = s_add(my_char[s0_index],s0_char,i_s0_char); i_s0_char++;

s1_index--;

s1_count += my_char[s1_index].g_count(); my_char[s1_index].add_code("0");

s1_char = s_add(my_char[s1_index],s1_char,i_s1_char); i_s1_char++;

! ((s1_index – s0_index == 1) || (s1_index – s0_index == -1)) tidak

tidak

[image:50.595.126.541.68.690.2]

a b

(51)

3.2.4 Pseudocode dekompresi algoritma Shannon-Fano Pseudocode proses dekompresi algoritma Shannon-Fano:

decode() {

String bin, biner;

array tree[String g_char, String g_code]; int binLength = bin.length();

char[] binCharAt = bin.toCharArray();

Stringbuffer bf;

biner = "";

for (int i=0; i<binLength; i++)

{

biner += binCharAt[i];

for (int j=0; j<tree.length; j++)

{

output (biner+" , "+tree[j].g_code()); if (biner.equals(tree[j].g_code()))

{

output ("karakter : "+tree[j].g_char()); bf.append(tree[j].g_char());

output ("string : "+bf); biner = "";

}

} } }

Flowchart proses dekompresi algoritma Shannon-Fano dapat dilihat pada

(52)

String bin, biner;

array tree[String g_char, String g_code]; int binLength = bin.length(); char[]

binCharAt = bin.toCharArray(); Mulai

int i=0; i<binLength; i++

biner += binCharAt[i];

int j=0; i<treeLength; j++

biner.equals(tree[j].g_code())

bf.append(tree[j].g_char()); biner;

Output tree[j].g_char()+bf; ya

ya

ya

tidak

tidak tidak

[image:52.595.174.446.80.607.2]

Selesai

(53)

3.2.5 Pseudocode kompresi algoritma Arithmetic Coding Pseudocode proses kompresi algoritma Arithmetic Coding:

findDecimal(double low, double high, String text) {

array header[symbol,range_min,range_max];

double min,max;

if(text.length() > 0)

{

int i = 0;

while(text.charAt(0) != header.symbol[i] )

{

i++;

}

min = low+(high-low)*header.range_min[i];

max = low+(high-low)*header.range_max[i];

text =removeFirstChar(text);

findDecimal(min, max, text); }

}

final String findBinary(double a,double b, String result){ if(a<0.5 && b<0.5){

result = findBinary(2*a, 2*b, result+"0"); }else if(a>0.5 && b>0.5){

result = findBinary((a-0.5)*2, (b-0.5)*2, result+"1");

}else if(a==0 && b>=0.5){ result = result+"0";

}else if(a<=0.5 && b==1){

result = result+"1"; }else if(a<=0.5 && b>= 0.5){

(54)

String buff,bin;

ifLength = inputfile.length(); ifCharAt = inputfile.toCharArray();

buff = "";

for (int i=0; i<ifLength; i++)

{

buff += ifCharAt[i];

if (buff.length() == 2) {

findDecimal(0,1,buff);

bin = findBinary(min,max,"");

output (buff+ " : " + min + " - " + max + " bin : "+bin);

sb.append(bin);

buff = ""; }

}

if (buff.length() == 1)

{

findDecimal(0,1,buff);

bin = findBinary(min,max,"");

output (buff+ " : " + min + " - " + max + " bin : "+bin);

sb.append(bin); }

Output sb; }

Flowchart proses kompresi Arithmetic Coding dapat dilihat pada Gambar

(55)

Mulai

Double ifLength; Char[] ifCharAt; StringBuffer sb;

String buff,bin;

ifLength = inputFile.length(); ifCharAt = inputFile.toCharArray();

buff = “”;

int i=0; i<ifLength; i++;

buff += ifCharAt[i];

buff.length() == 2

findDecimal(0,1,buff);

bin = findBinary(min,max,””);

sb.append(bin); buff = “”;

ya ya

tidak

tidak

output (buff+ " : " + min + " - " + max + " bin : "+bin);

[image:55.595.183.458.80.746.2]

a

(56)

buff.length() == 1

findDecimal(0,1,buff);

bin = findBinary(min,max,””);

sb.append(bin); ya tidak

Selesai

a

Output sb;

Gambar 3.12 Flowchart Kompresi Algoritma Arithmetic Coding 2

double low,high; String text;

array

header[symbol,range_min,range_max]; double min,max;

int i = 0; Mulai findDecimal()

text.length() > 0

text.charAt(0) != header.symbol[i]

i++; tidak

ya ya

min = low+(high-low)*header.range_min[i]; max = low+(high-low)*header.range_max[i];

text =removeFirstChar(text); findDecimal(min, max, text);

Selesai tidak

[image:56.595.212.465.80.352.2] [image:56.595.202.469.388.734.2]
(57)

Mulai findBinary()

Double a,b; String result;

a<0.5 && b<0.5

result = findBinary(2*a, 2*b, result +”0");

a>0.5 && b>0.5

result = findBinary((a-0.5)*2, (b-0.5)*2, result +”1");

ya

ya tidak

a==0 && b>=0.5

result = result +”0"; ya tidak

a<=0.5 && b==1

result = result +”1"; ya

tidak

a<=0.5 && b>= 0.5

re

Gambar

Tabel 3.1 Penyebab dan Akibat
Gambar 3.2 Diagram Use Case pada Aplikasi Kompresi
Tabel 3.2 Dokumentasi Naratif Use Case Kompresi
Tabel 3.3 Dokumentasi Naratif Use Case Dekompresi
+7

Referensi

Dokumen terkait

Oleh karena itu, penulis menggunakan algoritma Shannon-Fano untuk mengetahui bagaimana kinerja kompresi jika digunakan pada file audio serta ingin membuat

Dari penelitian yang penulis lakukan, dapat disimpulkan bahwa kompresi menggunakan algoritma Arithmetic Coding dapat menghasilkan citra dengan ukuran file yang lebih

Berdasarkan data pengujian pada Tabel 4.4 untuk algoritma Elias Gamma Code dan pada Tabel 4.6 untuk algoritma Shannon-Fano, berikut adalah grafik perbandingan

Database yang digunakan berupa Terjemahan dari Alquran dengan format .text , Melihat teks terjemahan AlQuran dan cara kerja Algoritma Shannon Fano dengan perhitungan

Algoritma Shannon-Fano digunakan untuk membuat kamus data kode biner Shannon-Fano yang digunakan untuk proses kompresi berkas citra, yang dilanjutkan dengan

Puji dan syukur penulis panjatkan ke hadirat Allah SWT, yang telah memberikan rahmat dan hidayah-Nya, serta segala sesuatu dalam hidup, sehingga penulis dapat

Hasil dari penelitian ini yaitu kompresi menggunakan algoritma Arithmetic Coding dapat menghasilkan citra dengan ukuran file yang lebih kecil, namun apabila citra

Disimpulkan bahwa, secara rata-rata algoritma Huffman menghasilkan rasio file hasil pemampatan yang terbaik (61,3%) dari pada algoritma Shannon-Fano (76,9%). Akan tetapi,