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
MEDAN
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
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,
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
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.
Medan, Juli 2013 Penulis,
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).
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).
DAFTAR ISI
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
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 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
Hal.
Daftar Pustaka 133
Lampiran Listing Program A-1
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
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
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
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