ANALISIS PERBANDINGAN KINERJA ALGORITMA SHANNON-FANO, ARITHMETIC CODING, DAN HUFFMAN PADA KOMPRESI BERKAS TEKS DAN BERKAS CITRA DIGITAL SKRIPSI SYARIFAH KEUMALA ANDRIATY 091401084 PROGRAM STUDI S1 ILMU KOMPUTER FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA MEDAN 2013
ANALISIS PERBANDINGAN KINERJA ALGORITMA SHANNON-FANO, ARITHMETIC CODING, DAN HUFFMAN PADA KOMPRESI BERKAS TEKS DAN BERKAS CITRA 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 MEDAN 2013
ii PERSETUJUAN Judul Kategori Nama : ANALISIS PERBANDINGAN KINERJA ALGORITMA SHANNON-FANO, ARITHMETIC CODING, DAN HUFFMAN PADA KOMPRESI BERKAS TEKS DAN BERKAS CITRA DIGITAL : SKRIPSI : SYARIFAH KEUMALA ANDRIATY Nomor Induk Mahasiswa : 091401084 Program Studi : S1 ILMU KOMPUTER Fakultas Komisi Pembimbing : : ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA Diluluskan di Medan, 24 Juli 2013 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, Dr. Poltak Sihombing, M.Kom NIP. 19620317 199103 1 001
iii 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 Syarifah Keumala Andriaty 091401084
iv 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),. 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. 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. 12. Semua pihak yang terlibat langsung maupun tidak langsung yang tidak dapat penulis ucapkan satu demi satu yang telah membantu penyelesaian skripsi ini. Penulis menyadari bahwa skripsi ini masih terdapat kekurangan. Oleh karena itu, penulis mengharapkan kritik dan saran yang bersifat membangun demi kesempurnaan skripsi ini.
v Medan, Juli 2013 Penulis, Syarifah Keumala Andriaty
vi 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(n 2 ). Katakunci: kompresi data, Shannon-Fano, Arithmetic Coding, Huffman.
vii 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(n 2 ). Keyword: data compression, Shannon-Fano, Arithmetic Coding, Huffman.
viii DAFTAR ISI Persetujuan Pernyataan Penghargaan Abstrak Abstract Daftar Isi Daftar Tabel Daftar Gambar Hal. ii iii iv vi vii viii xi 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 17 BMP
ix 2.15.4 Analisis Perbandingan Teknik Kompresi Menggunakan Algoritma Shannon-Fano, dan Run Length Encoding pada Citra Berformat BMP dan PNG Hal. 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 5.2 Saran 131
x Hal. Daftar Pustaka 133 Lampiran Listing Program A-1 Lampiran Curriculum Vitae B-1
xi 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 71 Coding 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 4.35 Analisis Kompresi Berkas Teks Algoritma Shannon-Fano 101
xii 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 109 Teks 4.40 Kompleksitas Waktu Algoritma Arithmetic Coding pada 110 Berkas Teks 4.41 Kompleksitas Waktu Algoritma Huffman pada Berkas Teks 111 4.42 Kompleksitas Waktu Algoritma Shannon-Fano, Arithmetic 112 Coding, dan Huffman pada Berkas Teks 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 127 Citra 4.53 Kompleksitas Waktu Algoritma Arithmetic Coding pada 128 Berkas Citra 4.54 Kompleksitas Waktu Algoritma Huffman pada Berkas Citra 129 4.55 Kompleksitas Waktu Algoritma Shannon-Fano, Arithmetic Coding, dan Huffman pada Berkas Citra 130
xiii 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 Aktivitas pada Aplikasi Kompresi 25 3.4 Diagram Sekuensial Proses Kompresi 27 3.5 Diagram Sekuensial Proses 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 4.10 Tree γ 75
xiv 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 104 Teks 4.36 Grafik Analisis Algoritma Huffman pada Berkas Teks 106 4.37 Grafik Analisis Algoritma Shannon-Fano, Arithmetic 108 Coding, dan Huffman pada Berkas Teks 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 122 Citra 4.45 Grafik Analisis Algoritma Huffman pada Berkas Citra 124 4.46 Grafik Analisis Algoritma Shannon-Fano, Arithmetic 126 Coding, dan Huffman pada Berkas Citra