You are on page 1of 6

KOMPRESI DATA TEKS DENGAN METODE ALGORITMA HUFFMAN

MENGGUNAKAN EMBEDDED SYSTEM

Zarkazi Fahrojul Fadly1, Barlian Henryranu Prasetio2, Edy Santoso3
Program Studi Informatika
Program Teknologi Informasi dan Ilmu Komputer
Universitas Brawijaya Malang
1
zarkazi_tif@yahoo.com, 2barlian@ub.ac.id, 3edy144@ub.ac.id

Abstrak
Kompresi data (pemampatan data) merupakan suatu teknik untuk memperkecil jumlah ukuran data (hasil
kompresi) dari data aslinya. Pemampatan data umumnya diterapkan pada mesin komputer, hal ini dilakukan karena
setiap simbol yang dimunculkan pada komputer memiliki nilai bit-bit yang berbeda. Pemampatan data
digunakan untuk mengurangkan jumlah bit-bit yang dihasilkan dari setiap simbol yang muncul. Dengan
pemampatan ini diharapkan dapat mengurangi (memperkecil ukuran data) dalam ruang penyimpanan dan
mempercepat pengiriman data. Pengiriman data atau file melalui media jaringan tentu memerlukan bandwidth
yang besar apabila ukuran file yang akan dikirim juga besar, sehingga proses pengiriman data yang berkapasitas
besar itu akan mengakibatkan jaringan yang ada menjadi sibuk dan membuat pengiriman file memakan waktu
yang cukup lama, maka dari itu diperlukan sebuah aplikasi yang berfungsi untuk mengkompresi ukuran file
berbasis embedded system, sehingga pada saat pengiriman data dapat menghemat penggunaan waktu transfer
data. Salah satu algoritma untuk mengkompresi data adalah algoritma Huffman. Pemakaian Algoritma
Huffman ini karena sifatnya yang Loseless, dimana teknik kompresi data hasil kompresi dapat didekompres lagi
dan hasilnya sama seperti data sebelum proses kompresi, sehingga proses transfer file akan menjadi lebih maksimal
dan mengurangi waktu transfer file.
Kata Kunci : Kompresi Data Teks, Algoritma Huffman, Raspberry Pi, Embedded System.

PENDAHULUAN
Seiring dengan berkembangnya teknologi saat
ini, data memiliki peranan yang sangat penting, suatu
sistem pasti memiliki data berupa teks, gambar,
suara, bahkan video. Dahulunya data tersebut
berjumlah sedikit, sekarang data yang dibuat sudah
semakin banyak tentunya memerlukan tempat
penyimpanan yang besar juga, dengan ukuran data
yang besar memerlukan pengiriman yang cukup
lama. Untuk mengatasi masalah tersebut dibutuhkan
adanya pemampatan yang biasa disebut dengan
kompresi.
Proses kompresi merupakan proses mereduksi
ukuran suatu data untuk menghasilkan representasi
digital yang padat atau mampat namun tetap dapat
mewakili kuantitas informasi yang terkandung pada
data tersebut dengan tujuan untuk menghemat
kebutuhan tempat penyimpanan dan waktu untuk
transmisi data. Kompresi data dilakukan dengan
mengkodekan setiap karakter di dalam data dengan
kode yang lebih pendek. Pada saat ini banyak sekali
algoritma yang digunakan untuk mengkompresi data.
Antara lain algoritma Huffman, LZ Family, RLE,
LZMA, CTW, Deflate, Arithmetic coding, Half Byte
dan lain-lain [PUT-10]. Pada pembuatan tugas akhir

ini algoritma yang digunakan untuk mengompresi
data adalah algoritma Huffman.
Algoritma Huffman adalah salah satu
algoritma kompresi. Algoritma huffman merupakan
algoritma yang paling tepat untuk kompresi teks.
Terdapat tiga fase dalam menggunakan algoritma
Huffman untuk kompresi sebuah teks, pertama adalah
fase pembentukan pohon Huffman, kedua fase
encoding dan ketiga fase decoding. Prinsip yang
digunakan oleh algoritma Huffman adalah karakter
yang sering muncul di-encoding dengan rangkaian bit
yang pendek dan karakter yang jarang muncul diencoding dengan rangkaian bit yang lebih panjang.
Teknik kompresi algoritma Huffman mampu
memberikan penghematan pemakaian memori sampai
30%. Algoritma Huffman mempunyai kompleksitas
untuk himpunan dengan karakter [PUT-10].
Kompresi data teks dengan metode Huffman ini akan
diterapkan pada Embedded System. Aplikasi pada
saat ini yang dapat memampatkan data menggunakan
algoritma huffman adalah aplikasi kompresi SMS
dengan menghasilkan nilai rasio kompresi yang
maksimal ketika data yang dikompres terdiri dari
karakter-karakter yang mempunyai panjang kode
pendek [AMR-10].

masing proses encode dan decode. Literatur digunakan sebagai teori penguat dan landasan dasar dalam penelitian. Rumusan Masalah Berdasarkan latar belakang yang telah dijabarkan. Tujuan Penelitian Tujuan dari penelitian ini adalah untuk memperkecil ukuran suatu data melalui kompresi data yang akan diterapkan pada Embedded System agar data tersebut dapat dikirimkan dengan relatif cepat dengan menggunakan metode algoritma Huffman. Teori pendukung tersebut didapat dari buku. Gambaran Implementasi Secara Umum Input. Berapa rata-rata kecepatan pengiriman data setelah dilakukan kompresi data dengan algoritma Huffman menggunakan Embedded System. Embedded System sering kali dihubungkan pula dengan sistem real time. Algoritma kompresi yang digunakan pada kompresi data ini adalah algoritma Huffman. encode sampai decode dijalankan pada perangkat lunak pendukung Python IDLE. Berikut adalah masing. Penelitian yang akan dilakukan terbatas pada kompresi data berbentuk teks. Saat di raspberry 2 langsung melakukan proses decode yang kemudian hasilnya akan ditampilkan dalam LCD Monitor. Encode teks dilakukan dengan Algoritma Huffman yang akan di tanam ke dalam Raspberry Pi. Perancangan Perangkat Keras Pada penelitian ini perancangan menjelaskan tentang perancangan perangkat keras yang akan diimplementasikan berdasarkan analisa kebutuhan sistem. Embedded System dibutuhkan karena memiliki kemampuan standalone yaitu tidak terintegrasi oleh perangkat lain. maka dalam tugas akhir topik yang diambil adalah Kompresi Data Teks dengan Metode Algoritma Huffman menggunakan Embedded System. Perancangan Perangkat Lunak Perancangan perangkat lunak dilakukan setelah analisis kebutuhan. .Perangkat tertanam (Embedded System) adalah sistem komputer yang didesain khusus untuk mengerjakan satu atau beberapa fungsi pekerjaan. maka berikut ini dibuat beberapa batasan masalah: 1. Sebagai media untuk pengimplementasian ilmu pengetahuan teknologi yang telah didapat. Manfaat Penelitian Manfaat yang penelitian ini adalah : bisa didapatkan dari 1. yang memerlukan pemrosesan tanpa jeda waktu. jurnal. menanamkan OS Raspbian Wheezy pada SD Card dan perancangan Network. Pada penelitian ini perancangan perangkat lunak terdapat dua bagian yaitu perancangan perangkat lunak encode kompresi dan perancangan perangkat lunak decode kompresi. 2. 2. Perancangan Encode Kompresi Perancangan encode kompresi merupakan bagian perancangan perangkat lunak. proses akan diulang kembali dari inputan. Kompresi data teks di implementasikan di perangkat Embedded System Raspberry Pi. Terdapat tiga bagian yaitu perancangan Raspberry. 2. proses encode pada raspberry 1 menghasilkan ratio dan ukuran yang lebih rendah daripada ukuran file teks aslinya kemudian dikirim melalui jaringan ke raspberry 2. 1. Berdasarkan uraian tersebut diatas. Proses ini mungkin tidak berjalan satu kali. Studi dan Pengkajian Literatur Dalam perancangan dan implementasi penelitian ini. perlu diadakan studi literatur. Sebuah Embedded System akan terbangun dari beberapa komponen yang meliputi perangkat keras dan perangkat lunak [HER-12]. maka rumusan masalah dapat disusun. METODE PENELITIAN Keyboard/ Input Encode Raspberry 1 Pengiriman di jaringan Decode Raspberry 2 LCD Monitor/ output Gambar 1. Jika dirasa proses belum sesuai kebutuhan. Batasan Masalah Berdasarkan rumusan masalah yang diuraikan. Jika program sukses. Mendapatkan pengetahuan dan wawasan tentang Raspberry Pi. Diagram alir dari proses encode kompresi dijelaskan pada gambar 2. Mendapatkan pengetahuan tentang dunia Kompresi data. Berapa rasio kompresi data teks setelah dilakukan kompresi dengan algoritma Huffman menggunakan Embedded System. 3. 3. paper dan internet.

Spesifikasi Lingkungan Perangkat Lunak Lingkungan perangkat lunak yang digunakan dalam mengimplementasikan kompresi data teks dengan metode algoritma Huffman menggunakan Embedded Systems adalah sebagai sistem operasi windows 7 ultimate 32-bit sebagai lingkungan proses implementasi. Metode kompresi yang digunakan adalah algoritma Huffman. VGA Monitor. Convert Biner to Bit File Di tampilkan di layar monitor(hasil kompresi) End Gambar 2. Proses Encode Kompresi Huffman Menghitung kemunculan frekuensi ASCII str ya Getchar ASCII str tidak Get pohon huffman tidak Char == db ya Huffman -> biner Full biner Gambar 3. Kabel UTP.8. LCD Monitor. Start Hasil Kompresi Bit file Convert bit file ke biner Convert biner to ASCII string Di tampilkan di layar(teks terdecode kebentuk teks asliya) End Gambar 4. Proses Menghitung Kemunculan Frekuensi Perancangan Decode Kompresi Perancangan decode kompresi merupakan bagian perancangan perangkat lunak. Implementasi Alat Pendukung Raspberry Pi Implementasi pada Raspberry adalah pemasangan perangkat keras yang mendukung berjalannya Raspberry.Start Teks Menghitung kemunculan frekuensi Convert ASCII string ke biner (pohon Huffman) Pengujian dan Analisis Pengujian kompresi pada penelitian ini dilakukan untuk menunjukkan bahwa kompresi telah mampu bekerja sesuai dengan spesifikasi kebutuhan. Sistem operasi Raspbian Debian Wheezy sebagai lingkungan proses implementasi. Spesifikasi Lingkungan Perangkat Keras Lingkungan perangkat keras yang digunakan dalam mengimplementasikan kompresi data teks dengan metode algoritma Huffman menggunakan Embedded System yaitu Raspberry Pi model B. 3. Serta menguji ketepatan kompresi data teks dengan metode algoritma Huffman ketika nanti akan di implementasikan menggunakan Raspberry Pi pada pengiriman di jaringan LAN. Mulai dari pemasangan kabel VGA dari Raspberry ke layar LCD monitor untuk bisa menampilkan proses dan hasil dari proses. USB Hub. Kabel USB. Diagram alir dari proses decode kompresi dijelaskan pada gambar 3. 2. Kompresi data teks diimplementasikan di perangkat Embedded System Raspberry Pi menggunakan bahasa pemrograman Python. Memori MicroSd Card. Batasan Implementasi Beberapa batasan dalam implementasi kompresi data teks dengan metode algoritma Huffman menggunakan Embedded System sebagai berikut : 1. Inputan data berasal dari ketikan di keyboard. Python IDLE dan Python Command Line sebagai compiler perancangan program kompresi yang digunakan untuk pemrograman. Decode teks dilakukan dengan Algoritma Huffman di tanam ke dalam Raspberry Pi. 4. Keyboard. Proses Decode Kompresi Huffman IMPLEMENTASI implementasi dari kompresi data teks dengan metode algoritma Huffman menggunakan Embedded System meliputi spesifikasi lingkungan perangkat keras (hardware) dan spesifikasi lingkungan perangkat lunak (Software). Mouse. Kompresi data hanya berbentuk teks. Pemasangan keyboard dan mouse ke port USB pada .

Untuk lebih jelasnya bisa di lihat pada gambar 4. Pembentukan huffman tree dimulai dari dua simbol Kendala dan Solusi Dalam penelitian ini ada beberapa kendala yang di hadapi. Perangkat Keras Pendukung Raspberry Implementasi Perangkat Lunak Pada implementasi perangkat lunak terdapat dua bagian yaitu implementasi kompresi dan implementasi dekompresi. Salah satu kendala yang cukup sulit adalah pada saat pengiriman file. Gambar 7. Perintah Untuk Mengkonfigurasi jaringan Inisialisasi Teks Tahap awal dalam proses kompresi adalah inisialisasi teks. Untuk mensiasati kendala yang dihadapi tersebut. Bahkan terkadang selisih waktunya terlalu jauh dengan uji coba waktu pengiriman yang sebelumnya. . pembentukan pohon Huffman. teks terencode berupa symbol ASCII. database dan header. kondisi jaringan bisa berubah-ubah dan tidak stabil. Inisialisasi Teks Pembentukan Pohon Huffman Pembentukan pohon Huffman dilakukan dengan metode Huffman tree. Dalam penelitian ini melakukan uji coba sebanyak-banyaknya. dan waktu saat pengiriman dari raspberry 1 ke raspberry 2 di layar LCD monitor. convert dari biner ke bit file. Implementasi Dekompresi Hasil kompresi yang telah dikirimkan melalui network akan terkirim di Raspberry 2. Inisialisasi teks akan dijelaskan pada gambar 6. decoding dekompresi. Dan disimpan di Raspberry 2 untuk dilakukan proses decoding. Mengakibatkan uji coba waktu pengiriman melalui jaringan tidak terlalu sama. Proses terakhir yaitu menampilkan hasil encoding kompresi. Konfigurasi Jaringan Gambar 6. Pemasangan kabel power yang berbentuk kabel micro USB untuk menghidupkan power pada Raspberry. Gambar 5. convert dari ASCII string ke biner. Huffman tree merupakan simbol yang diurutkan mulai dari simbol dengan frekuensi kemunculan paling sedikit sampai simbol dengan frekuensi kemunculan paling banyak. Implementasi Kompresi Pada proses implementasi kompresi terdapat beberapa proses yaitu inilisasi teks. Proses berikutnya yaitu merubah biner menjadi ASCII string. Proses selanjutnya yaitu memanggil biner. Konfigurasi Jaringan Penjelasan untuk konfigurasi jaringan agar raspberry 1 dengan raspberry 2 bisa terhubung dan melakukan pengiriman dapat dilihat pada gambar 7. Gambar 8.Raspberry untuk pengetikan inputan dan mengklik atau memilih sesuatu yang ada di layar LCD monitor. paling depan untuk dijadikan anak kiri dan anak kanan dari tree yang terbentuk dan frekuensinya dijumlahkan. Setelah merubah bentuk bit file menjadi biner. Proses decoding selanjutnya akan merubah bentuk bit file menjadi biner. Sehingga beberapa uji coba tersebut di jadikan rata-rata agar mendapatkan hasil yang lebih tepat dan sesuai dengan apa yang diharapkan. inisialisasi teks adalah memberi inputan ketikan berupa teks dari keyboard yang akan muncul di LCD monitor untuk proses kompres dan dekompres. Bahasa yang digunakan adalah bahasa Python dan socket programming.

Gambar 10. pada pengujian kompresi ini dibagi lagi menjadi dua pengujian yaitu encoding dan decoding. Ws = Waktu send.759 1. yaitu waktu proses encode (kompresi). Y = a + bX Dimana : Y = Variabel Response atau Variabel Akibat (Dependent). Nilai-nilai a dan b dapat dihitung dengan menggunakan Rumus dibawah ini : a = (Σy) (Σx²) . Gambaran Waktu Yang Didapatkan Grafik perbandingan selisih waktu pengiriman teks tanpa kompresi dengan waktu pengiriman teks setelah kompresi akan di jelaskan pada gambar 6 berikut.118 Ratarata Waktu Tanpa Kompre si (µs) 1.438 4. X = Variabel Predictor atau Variabel Faktor Penyebab (Independent).580 5. Pengujian waktu pengiriman digunakan untuk menguji waktu pengiriman teks dari raspberry 1 ke raspberry 2. Wp1 = Waktu proses pertama.934 1. Yang nantinya waktu itu akan di hitung rata-ratanya untuk mendapatkan waktu yang sesuai dari hasil kompresi. Jadi pada penelitian ini.400 76. dekompresi.875 4.836 80. Hasil Kompresi Waktu didapatkan dari rumus berikut : Wt = Wp1 + Ws + Wp2 + Wr Waktu = Wp1 + Wp2 + (Wtotal – Wp1 + Wp2) 2 Keterangan : Wt = Waktu total dari kompresi. Wp2 = Waktu proses kedua.809 1.049 81. besaran Response yang ditimbulkan oleh Predictor.PENGUJIAN DAN ANALISIS Proses pengujian dilakukan melalui 2 macam pengujian yaitu pengujian kompresi dekompresi dan pengujian waktu pengiriman. Pengujian Kompresi Jumlah Karakt er Ukuran Tanpa Kompre si (Byte) Ukuran Setelah Kompre si (Byte) Rasio Kompre si (%) 100 200 300 400 500 600 700 800 900 1000 101 201 301 401 501 601 701 801 901 1001 90 163 246 321 410 485 571 636 690 812 89.108 81.581 81. Karena kondisi jaringan dari raspberry 1 yang di gunakan untuk kompresi dan raspberry 2 yang di gunakan untuk dekompresi sering tidak stabil. Grafik Perbandingan Dari grafik diatas maka bisa dibuat pendekatannya dengan menggunakan rumus regresi liner berikut.787 1.440 4.940 1.(Σx) (Σxy) n(Σx²) – (Σx)² b = n(Σxy) – (Σx) (Σy) n(Σx²) – (Σx)² .925 1. Wr = Waktu received.728 1.094 81. pengujian di lakukan sebanyak mungkin untuk mendapatkan beberapa waktu.997 2.092 2.455 79. Untuk lebih jelasnya mengenai selisih waktu pengiriman dari raspberry 1 sebagai kompresi ke raspberry 2 sebagai dekompresi dapat dilihat pada tabel 1 berikut.727 80.954 Gambar hasil kompresi dapat dilihat pada gambar 9. yaitu waktu pengiriman. b = koefisien regresi (kemiringan). a = konstanta. waktu data sudah diterima.752 1. dan sampai di kembalikan lagi ke kompresi.132 3. Gambar 9.698 81.478 Ratarata Waktu Setelah Kompre si (µs) 1. yaitu waktu proses decode (dekompresi).049 6. dikirim. Gambar 6.878 9. Pengujian kompresi dekompresi digunakan untuk mengetahui apakah kompresi berjalan dengan baik yaitu bisa memperkecil ukuran data teks dan dekompresi bisa mengembalikan hasil dari kompresi kebentuk semula. Tabel 1.946 1.

Y2 = sebagai waktu pengiriman setelah kompresi. SARAN Gambar 5. Untuk pengembangan lebih lanjut. Tabel 5.3 Pertambahan karakter setiap 100 byte KESIMPULAN Berdasarkan hasil Perancangan. 3. 2. Untuk pengembangan lebih lanjut. Dari setiap pertambahan karakter sebesar 100 byte kira-kira waktu tanpa kompresi adalah 712.3 berikut. maka diambil kesimpulan sebagai berikut: 1. bisa dilakukan pengujian menggunakan format gambar atau video dengan pengiriman ke banyak raspberry dan algoritma lain. Dan dari setiap pertambahan karakter sebesar 100 byte kira-kira waktu setelah kompresi adalah 29.8 dibawah ini. Untuk mencari setiap pertambahan karakter sebesar 100 byte akan dijelaskan pada tabel 5. sehingga teks yang berupa inputan dari keyboard dapat berbentuk teks beragam jenis atau teks yang inputannya sudah berupa file. teks yang digunakan harus teks yang bervarietas. Dari 101 Byte tanpa kompresi menjadi 90 Byte setelah di kompresi dengan rasio kompresi 89.32 µs. 2. Tabel 5.2 Regresi Linier Dari Pengujian Dimana : X = sebagai banyaknya karakter.9 dibawah ini.9 Grafik Regresi Linier Setelah Kompresi Saran yang dapat diberikan untuk pengembangan penelitian ini antara lain: 1. Y1 = sebagai waktu pengiriman tanpa kompresi.Dari rumus diatas maka didapatkan tabel regresi linier seperti tabel 5. Implementasi. Pengujian dan Analisis yang telah dilakukan. Untuk pengembangan lebih lanjut. Maka dapat digambarkan grafik regresi linier tanpa kompresi yang akan dijelaskan pada gambar 5. Y1’ = sebagai regresi linier dari waktu pengiriman tanpa kompresi (Y1). Y2’ = sebagai regresi linier dari waktu pengiriman setelah kompresi (Y2).108%.8 Grafik Regresi Linier Tanpa Kompresi Untuk grafik regresi linier setelah kompresi akan dijelaskan pada gambar 5. diharapkan sudah bisa di implementasikan di dalam perangkat jaringan yang sebenarnya agar kompresi berbasis embedded system bisa di tanam di perangkat jaringan. Berdasarkan hasil pengujian rasio kompresi sesuai seperti apa yang diharapkan yaitu memperkecil ukuran data tersebut. .2 dibawah ini.418 µs. Gambar 5.