Analisis Perbandingan Kinerja Algoritma Shannon-Fano, Arithmetic Coding, Dan Huffman Pada Kompresi Berkas Teks Dan Berkas Citra Digital
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
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, Dr. Poltak Sihombing, M.Kom NIP. 19620317 199103 1 001
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
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.
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.
Medan, Juli 2013 Penulis, Syarifah Keumala Andriaty
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
2 algoritma Huffman adalah O(n ).
Katakunci: kompresi data, Shannon-Fano, Arithmetic Coding, Huffman.
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
2 Huffman algorithm is O(n ).
Keyword: data compression, Shannon-Fano, Arithmetic Coding, Huffman.
DAFTAR ISI
Hal.12
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
2.12 Algoritma Huffman
8
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
2.5 Berkas Teks
2.4 Teknik Kompresi Citra
Persetujuan ii
1.3 Batasan Masalah
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
2
7
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)
17 Hal.
17 Bab 3 Analisis Dan Perancangan Sistem
2.15.4 Analisis Perbandingan Teknik Kompresi Menggunakan
51
51
49
3.2.8 Pseudocode dekompresi algoritma Huffman
43
3.2.7 Pseudocode kompresi algoritma Huffman
41
3.2.6 Pseudocode dekompresi algoritma Arithmetic Coding
36
3.2.5 Pseudocode kompresi algoritma Arithmetic Coding
34
3.2.4 Pseudocode dekompresi algoritma Shannon-Fano
31
3.2.3 Pseudocode kompresi algoritma Shannon-Fano
Algoritma Shannon-Fano, dan Run Length Encoding pada Citra Berformat BMP dan PNG
3.2.2 Pseudocode pengurutan frekuensi
18
3.1 Analisis Sistem
18
3.1.1 Ruang lingkup masalah
18
3.1.2 Analisis masalah
3.1.3 Analisis kebutuhan
28
20
3.1.4 Desain logis
20
3.2 Pseudocode
28
3.2.1 Pseudocode pembacaan berkas
29
3.3 Perancangan Antarmuka
3.3.1 Struktur menu
54
4.5.1 Skenario pengujian
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
93
4.4 Implementasi Perangkat Lunak
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
51 Bab 4 Implementasi Dan Pengujian
3.3.2 Perancangan grafis antarmuka
82
78
4.1.1 Kompresi algoritma Shannon-Fano
61
54
4.1.2 Dekompresi algoritma Shannon-Fano
4.1 Implementasi Algoritma Shannon-Fano
4.1.3 Kompleksitas waktu algoritma Shannon-Fano
57
4.2 Implementasi Algoritma Arithmetic Coding
61
4.2.1 Kompresi algoritma Arithmetic Coding
4.2.2 Dekompresi algoritma Arithmetic Coding
4.3.3 Kompleksitas waktu algoritma Huffman
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
57 Hal. Daftar Pustaka
133 Lampiran Listing Program
A-1 Lampiran Curriculum Vitae
B-1
DAFTAR TABEL
Nomor Tabel Nama Tabel Halaman4.21 Frekuensi Huffman II
4.24 Pengurutan Frekuensi Huffman IV
75
4.23 Frekuensi Huffman III
75
4.22 Pengurutan Frekuensi Huffman III
74
74
4.25 Codebook Huffman
4.20 Pengurutan Frekuensi Huffman II
74
4.19 Frekuensi Huffman I
73
4.18 Pengurutan Frekuensi Huffman I
73
4.17 Pendataan Karakter Huffman
75
76
4.16 Kompleksitas Waktu Dekompresi Algoritma Arithmetic Coding
96
4.34 Properties Berkas Teks flower.txt 100
99
4.33 Properties Berkas Teks data.txt
98
4.32 Properties Berkas Teks excel.txt
97
4.31 Properties Berkas Teks bab4.txt
4.30 Properties Berkas Teks satu.txt
4.26 Kompleksitas Waktu Kompresi Algoritma Huffman
94
4.29 Berkas Citra Uji
94
4.28 Berkas Teks Uji
81
4.27 Kompleksitas Waktu Dekompresi Algoritma Huffman
78
71
69
3.1 Penyebab dan Akibat
54
55
4.4 Pembagian Bobot Frekuensi II
55
4.3 Pembagian Bobot Frekuensi I
55
4.2 Pengurutan Frekuensi Shannon-Fano
4.1 Pendataan Karakter Shannon-Fano
56
24
3.4 Dokumentasi Naratif Use Case Tentang Aplikasi
23
3.3 Dokumentasi Naratif Use Case Dekompresi
22
3.2 Dokumentasi Naratif Use Case Kompresi
19
4.5 Pembagian Bobot Frekuensi III
4.6 Pembagian Bobot Frekuensi IV
4.15 Kompleksitas Waktu Kompresi Algoritma Arithmetic Coding
4.11 Probabilitas Frekuensi Kemunculan Setiap Karakter
65
4.14 Library Arithmetic Coding
62
4.13 Kompresi Arithmetic Coding
62
4.12 Jangkauan Setiap Karakter
61
61
56
4.10 Pendataan Karakter Arithmetic Coding
60
4.9 Kompleksitas Waktu Dekompresi Algoritma Shannon-Fano
58
4.8 Kompleksitas Waktu Kompresi Algoritma Shannon-Fano
56
4.7 Codebook Shannon-Fano
4.35 Analisis Kompresi Berkas Teks Algoritma Shannon-Fano 101
Nomor Nama Tabel Halaman Tabel
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 130 Coding, dan Huffman pada Berkas Citra
DAFTAR GAMBAR
Nomor Gambar Nama Gambar Halaman3.21 Struktur Menu Aplikasi Kompresi
53
3.24 Rancangan Halaman Dekompresi
52
3.23 Rancangan Halaman Kompresi
52
3.22 Rancangan Halaman Utama
51
50
53
3.20 Flowchart Dekompresi Algoritma Huffman
48
3.19 Flowchart Kompresi Algoritma Huffman
47
3.18 Flowchart Method FindLowest() 2
46
3.17 Flowchart Method FindLowest() 1
43
3.25 Rancangan Halaman About
4.1 Rescaling Bilangan Desimal I
42
67
4.10 Tree γ
74
4.9 Tree β
73
4.8 Tree α
68
4.7 Pencarian Bilangan Biner III
4.6 Pencarian Bilangan Biner II
63
66
4.5 Pencarian Bilangan Biner I
66
4.4 Rescaling Library Arithmetic Coding
64
4.3 Rescaling Bilangan Desimal III
63
4.2 Rescaling Bilangan Desimal II
3.16 Flowchart Dekompresi Algoritma Arithmetic Coding 2
3.15 Flowchart Dekompresi Algoritma Arithmetic Coding 1
2.1 Model Dasar Sistem Informasi
2.6 Nilai-nilai pada Piksel
25
3.3 Diagram Aktivitas pada Aplikasi Kompresi
21
3.2 Use Case Diagram pada Aplikasi Kompresi
19
3.1 Diagram Ishikawa
10
9
27
2.5 Ilustrasi Kompresi Lossy
9
2.4 Ilustrasi Kompresi Lossless
6
2.3 Susunan Data
5
2.2 Model Pengembangan Sistem Informasi
5
3.4 Diagram Sekuensial Proses Kompresi
3.5 Diagram Sekuensial Proses Dekompresi
40
35
3.14 Flowchart Method FindBinary()
39
3.13 Gambar 3.13 Flowchart Method FindDecimal()
39
3.12 Flowchart Kompresi Algoritma Arithmetic Coding 2
38
3.11 Flowchart Kompresi Algoritma Arithmetic Coding 1
3.10 Flowchart Dekompresi Algoritma Shannon-Fano
27
33
3.9 Flowchart Kompresi Algoritma Shannon-Fano 2
32
3.8 Flowchart Kompresi Algoritma Shannon-Fano 1
30
3.7 Flowchart Pengurutan Frekuensi Karakter
29
3.6 Flowchart Pembacaan Berkas
75
No Gambar Nama Gambar Halaman
4.35 Grafik Analisis Algoritma Arithmetic Coding pada Berkas Teks
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
104
91
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
4.27 Tampilan Dekompresi Algoritma
4.26 Tampilan Properties Berkas II
4.11 Tree δ
4.18 Tampilan Kompresi Algoritma Shannon-Fano
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
85
91
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
126