UNIVERSITAS BINA NUSANTARA
Program GandaTeknik Informatika – Statistika Skripsi Sarjana Program Ganda
Semester Ganjil 2005/2006
ANALISIS PERBANDINGAN ALGORITMA RUN LENGTH, HUFFMAN DAN HALFBYTE UNTUK PEMAMPATAN DATA
Andre Anggo Siu NIM : 0500605966
ABSTRAK
Penelitian ini dilakukan dengan tujuan untuk membandingkan dan menentukan algoritma kompresi mana yang lebih baik dalam proses kompresi yang meliputi : hasil kompresi, waktu kompresi (compression) dan waktu dekompresi (decompression). Dalam menentukan kelebihan dan kekurangan dari masing-masing algoritma digunakan program aplikasi yang dibuat dan dilakukan analisis dengan menguji hipotesis berdasarkan data-data yang diperoleh dari pengujian aplikasi yang dirancang. Pengujian aplikasi dilakukan terhadap file teks dokumen microsoft word dan analisis dilakukan dengan menguji hipotesis perbedaan nilai rata-rata dari masing-masing pasangan algoritma. Algoritma run length memampatkan data yang berisi karakter-karakter yang sama berulang secara berurutan lebih dari tiga karakter. Algoritma huffman memampatkan data dengan menghitung frekuensi kemunculan masing-masing karakter, setelah itu diurutkan berdasarkan nilai frekuensi terkecil sampai yang terbesar, kemudian membuat pohon huffman untuk mencari kode huffman. Kode-kode huffman inilah yang menggantikan ukuran bit dari file asli. Sedangkan algoritma halfbyte memampatkan data yang berisi karakter-karakter dengan memanfaatkan empat bit sebelah kiri yang sering sama secara berurutan. Berdasarkan pengujian program aplikasi terhadap 50 file teks microsoft word diperoleh bahwa Algoritma run length mengkompresi file dengan memiliki waktu kompresi dan waktu dekompresi yang paling cepat dibandingkan
vi
KATA PENGANTAR
Puji dan syukur yang sedalam-dalamnya penulis panjatkan kehadirat Tuhan Yang Maha Esa, karena berkat-Nya yang melimpah dan penyertaan-Nya kepada penulis, sehingga penulis dapat menyusun dan menyelesaikan skripsi ini.
Penulis juga mengucapkan terima kasih banyak kepada semua pihak yang telah mendukung dan menolong penulis secara langsung maupun tidak langsung dalam menyusun dan menyelesaikan skripsi ini, terutama kepada :
● Bapak Prof. Dr. Drs. Gerardus Polla, M.App.Sc., selaku Rektor Universitas Bina Nusantara, Bapak Drs. Ngarap Imanuel Manik, M.kom, selaku Ketua Jurusan FMIPA yang telah memberikan persetujuan terhadap topik skripsi yang diajukan dan telah menunjuk para pembimbing yang terbaik untuk penulis.
● Bapak Wikaria Gazali, S.Si, M.T, selaku Dekan Jurusan FMIPA dan juga selaku dosen pembimbing dan Bapak Saulus Silitonga, Drs, M.Sc, selaku dosen pembimbing yang telah meluangkan waktu, pikiran dan tenaga dalam membaca, memberi komentar dan mengarahkan skripsi ini.
● Orang tua, kakak, adik-adik tercinta serta saudara-saudara semuanya yang selalu mengasihi, mendukung dalam segala hal dan memotivasi penulis untuk mengerjakan yang terbaik dalam skripsi ini.
● Semua teman-teman yang telah memberi dukungan berupa pemikiran, doa maupun moril.
Penulis juga sadar sebagai manusia biasa yang serba terbatas, tentu tidak mungkin untuk menghasilkan karya yang sempurna. Oleh karena itu, jika ada saran maupun kritik dari pembaca untuk membuat skripsi ini lebih berkualitas, penulis akan menerimanya dengan tangan terbuka. Kiranya skripsi ini dapat bermanfaat bagi pembaca dan semua pihak yang membutuhkan.
Jakarta, 18 Januari 2006 Penulis
DAFTAR ISI
HALAMAN JUDUL LUAR ... i
HALAMAN JUDUL DALAM ... ii
HALAMAN PERSETUJUAN HARDCOVER ... iii
HALAMAN PERNYATAAN DEWAN PENGUJI ... iv
ABSTRAK ... v
KATA PENGANTAR ... vi
DAFTAR ISI ... vii
DAFTAR TABEL ... ... ix DAFTAR GAMBAR ... x DAFTAR LAMPIRAN ... xi BAB 1 PENDAHULUAN ... 1 1.1 Latar Belakang ... 1 1.2 Pembatasan Masalah ... 2 1.3 Rumusan Masalah ... 3 1.4 Tujuan Penelitian ... 4 1.5 Manfaat Penelitian ... 4 1.6 Definisi Operasional ... 5
BAB 2 LANDASAN TEORI ... 6
2.1 Kompresi ... 6
2.2 Kompresi Lossless (Lossless Compression) ... 6
2.3 Kompresi Lossy (Lossy Compression) ... 6
2.4 Dasar Bilangan dan Operasi Logika ... 7
2.4.1 Dasar Bilangan ... 7
2.4.2 Operasi Logika ... 17
2.5 Algoritma Run Length ... 19
2.6 Algoritma Huffman ... 25
2.7 Algoritma Halfbyte ... 31
2.8 Rasio Kompresi ... 39
2.9 Analisis Algoritma ... 39
2.10 STD (State Transition Diagram) ... 42
viii
3.2 Hipotesis ... 51
3.3 Desain Penelitian ... 52
3.4 Teknik Pengumpulan Data ... 53
3.5 Teknik Analisis Data ... 53
3.6 Perancangan Aplikasi ... 54
3.6.1 Perancangan Menu ... 55
3.6.1.1 Menu Compression ... 56
3.6.1.2 Menu Decompression ... 57
3.6.2 Perancangan Modul ... 58
3.7 Spesifikasi Perangkat Keras dan Perangkat Lunak ... 68
3.7.1 Spesifikasi Perangkat Keras ... 68
3.7.2 Spesifikasi Perangkat Lunak ... 68
BAB 4 ANALISIS DAN PEMBAHASAN ... 69
4.1 A Priori Analysis ... 69
4.1.1 Algoritma Run Length ... 70
4.1.2 Algoritma Huffman ... 71
4.1.3 Algoritma Halfbyte ... 73
4.2 A Posteriori Testing ... 74
4.2.1 Data Hasil Percobaan ... 75
4.2.2 Uji Normalitas Data Hasil Percobaan ... 75
4.2.3 Uji Perbedaan Nilai Rata-Rata untuk Hasil Kompresi ... 77
4.2.4 Uji Perbedaan Nilai Rata-Rata untuk Waktu Kompresi ... 82
4.2.5 Uji Perbedaan Nilai Rata-Rata untuk Waktu Dekompresi ... 87
4.3 Pembahasan Hasil Penelitian ... 94
BAB 5 KESIMPULAN DAN SARAN ... 95
5.1 Kesimpulan ... 95
5.2 Saran ... 96
DAFTAR PUSTAKA ... 97
DAFTAR RIWAYAT HIDUP ... 98 LAMPIRAN ... L1
DAFTAR TABEL
Tabel 2.1 Bilangan Desimal dan Biner ... 8
Tabel 2.2 Bilangan Heksadesimal ... 11
Tabel 2.3 Bilangan Desimal, Biner, dan Heksadesimal ... 14
Tabel 2.4 Contoh Karakter pada File Teks ... 31
Tabel 4.1 Hasil Percobaan ... 75
Tabel 4.2 Hasil Uji Normalitas ... 76
Tabel 4.3 Perbandingan Pasangan Algoritma ... 93
x
DAFTAR GAMBAR
Gambar 2.1 Bit, Nibble, dan Byte ... 17
Gambar 2.2 Algoritma Run length ... 20
Gambar 2.3 Huffman Tree ... 29
Gambar 2.4 Algoritma Halfbyte ... 32
Gambar 2.5 State Transition Diagram ... 44
Gambar 3.1 Variabel yang Diamati ... 52
Gambar 3.2 Rancangan Menu Utama ... 55
Gambar 3.3 State Transition Diagram Aplikasi ... 55
Gambar 3.4 Tampilan Menu Compression ... 56
Gambar 3.5 Tampilan Menu Decompression ... 57
Gambar 4.1 Daerah Kritik Perbandingan Hasil Kompresi Run length dan Huffman ... 78
Gambar 4.2 Daerah Kritik Perbandingan Hasil Kompresi Run length dan Halfbyte .... 80
Gambar 4.3 Daerah Kritik Perbandingan Hasil Kompresi Huffman dan Halfbyte ... 81
Gambar 4.4 Daerah Kritik Perbandingan Waktu Kompresi Run length dan Huffman .. 83
Gambar 4.5 Daerah Kritik Perbandingan Waktu Kompresi Run length dan Halfbyte .. 85
Gambar 4.6 Daerah Kritik Perbandingan Waktu Kompresi Huffman dan Halfbyte ... 87
Gambar 4.7 Daerah Kritik Perbandingan Waktu Dekompresi Run length dan Huffman ... 89
Gambar 4.8 Daerah Kritik Perbandingan Waktu Dekompresi Run length dan Halfbyte ... 90
Gambar 4.9 Daerah Kritik Perbandingan Waktu Dekompresi Huffman dan Halfbyte ... 92
DAFTAR LAMPIRAN
Lampiran 1. Data Hasil Percobaan ... L1 Lampiran 2. Hasil Kompresi untuk Pasangan Run length dan Huffman ... L3 Lampiran 3. Hasil Kompresi untuk Pasangan Run length dan Halfbyte ... L4 Lampiran 4. Hasil Kompresi untuk Pasangan Huffman dan Halfbyte ... L5 Lampiran 5. Waktu Kompresi untuk Pasangan Run Length dan Huffman ... L6 Lampiran 6. Waktu Kompresi untuk Pasangan Run Length dan Halfbyte ... L8 Lampiran 7. Waktu Kompresi untuk Pasangan Huffman dan Halfbyte ... L9 Lampiran 8. Waktu Dekompresi untuk Pasangan Run Length dan Huffman ... L10 Lampiran 9. Waktu Dekompresi untuk Pasangan Run Length dan Halfbyte ... L11 Lampiran 10. Waktu Dekompresi untuk Pasangan Huffman dan Halfbyte ... L12 Lampiran 11. Listing Program Aplikasi Data Compression ... L14