MATERI 8
COMPRESING (PART 1)
Dosen pembimbing:
Disusun Oleh:
SUMATERA BARAT
PADANG
TP : 2022
1
KATA PENGANTAR
Puji syukur kami ucapkan kepada Allah SWT, karena dengan rahmat dan karunia-Nya
penulis masih diberi kesempatan untuk bekerja sama untuk menyelesaikan makalah ini.
Tidak lupa Penulis ucapkan terimakasih kepada dosen pembimbing dan teman-teman yang
telah memberikan dukungan dalam menyelesaikan makalah ini. Penulis menyadari bahwa
dalam penulisan makalah ini masih banyak kekurangan.
Oleh sebab itu Penulis sangat mengharapkan kritik dan saran yang membangun. Dan semoga
dengan selesainya makalah ini dapat bermanfaat bagi pembaca dan teman-teman. Amin...
Demikianlah yang saya dapat paparkan dalam makalah ini kalau ada kata yang kurang mohon
di maafkan sekian dan terima kasih.
Penyusun
i
DAFTAR ISI
a.Kesimpulan ..........................................................................................................................14
b.Saran .....................................................................................................................................14
ii
BAB I
PENDAHULUAN
A. Latar Belakang
Secara umum pemampatan data merupakan merubah suatu simbol-simbol menjadi
suatu kode-kode. Pemampatan dikatakan efektif jika ukuran perolehan kode-kode
tersebut sangat kecil dibandingkan dengan ukuran kode simbol aslinya. Dari suatu kode-
kode atau simbol-simbol dasar suatu model akan dinyatakan dalam kode khusus. Secara
model sederhana suatu kumpulan data dan aturan-aturan untuk memproses masalah
suatu simbol-simbol untuk menentukan suatu kode-kode sebagai hasil keluaran. Dalam
pengkodean dengan metode Hufman, kode hasil dari keluaran ditentukan dari
probabilitas (nilai kemungkinan yang muncul) paling tinggi akan memperoleh kode
dengan nilai bit-bit yang paling sedikit. Simbolsimbol yang mempunyai nilai
probabilitas kecil memperoleh kode dengan bit-bit terbanyak.
Semakin berkembangnya teknologi pada Ponsel maka semakin banyak pula data-data
atau file-file yang ingin kita simpan, tetapi kadang kala kapasitas memory yang kita
miliki tidak sebanding dengan data yang akan kita simpan. Oleh karena itu data-data
yang akan disimpan perlu dikompres terlebih dahulu supaya ukurannya menjadi lebih
kecil. Apabila ukuran data dapat dikompres menjadi lebih kecil dari ukuran aslinya,
maka secara otomatis memory dapat menyimpan data lebih banyak lagi dan dari segi
pengiriman pun akan semakin cepat. Pada saat ini banyak sekali perangkat lunak yang
digunakan untuk menangani masalah kompresi data. Perangkat lunak tersebut
digunakan untuk mengefisienkan kapasitas penyimpanan data,selain itu juga kompresi
data dapat mencegah kerusakan data.
B. Rumusan Masalah
Dari uraian di atas timbul beberapa pokok permasalahan berkaitan dengan
Materi-Materi Compresing Part 1 Komunikasi Data yaitu :
1. Konsep dasar compresing (pemampatan)
2. Pemampatan dengan kode Huffman
C. Tujuan
Tujuan dari rumusan masalah tersebut adalah untuk merancang program
kompresi data menggunakan algoritma Huffman dan mengetahui konsep dasar
compresing.
1
BAB II
PEMBAHASAN
Kompresi Kompresi data atau pemampatan data adalah suatu proses pengubahan
sekumpulan data menjadi suatu bentuk kode untuk menghemat kebutuhan tempat
penyimpanan data dan waktu transmisi data. Saat ini kompresi data sangat dibutuhkan untuk
menghemat untuk menghemat ruang penyimpanan, untuk menghemat biaya pengiriman data
dari komputer satu ke komputer lainnya serta untuk mempercepat proses transfer data.
Kompresi data mereduksi ukuran file dengan cara menghilangkan redudansi atau kemunculan
berulang-ulang dari bagian file. Berikut adalah blok dasar dari kompresi data.Kompresi data
adalah proses mengkodekan informasi menggunakan bit atau informationbearing unit yang
lain yang lebih rendah daripada representasi data yang tidak terkodekan dengan suatu sistem
enkoding tertentu.
Contoh kompresi sederhana yang biasa kita lakukan misalnya adalah menyingkat
kata-kata yang sering digunakan tapi sudah memiliki konvensi umum. Misalnya: kata “yang”
dikompres menjadi kata “yg” Pengiriman data hasil kompresi dapat dilakukan jika pihak
pengirim/yang melakukan kompresi dan pihak penerima memiliki aturan yang sama dalam
hal kompresi data.
Pihak pengirim harus menggunakan algoritma kompresi data yang sudah baku dan
pihak penerima juga menggunakan teknik dekompresi data yang sama dengan pengirim
sehingga data yang diterima dapat dibaca / di-dekode kembali dengan benar Kompresi data
menjadi sangat penting karena memperkecil kebutuhan penyimpanan data, mempercepat
pengiriman data, memperkecil kebutuhan bandwidth, teknik kompresi bisa dilakukan terhadap
data teks/biner, gambar (JPEG, PNG, TIFF), audio (MP3, AAC, RMA, WMA), dan video (MPEG, H261,
H263)
Data Teks
1 still image membutuhkan 500 baris Setiap 1 baris direpresentasikan dalam posisi
horisontal, vertikal, dan field atribut sebesar 8-bit Sumbu Horizontal direpresentasikan
dengan log2 640 = 10 bits. Sumbu Vertical direpresentasikan dengan log2 480 = 9 bits Bits
per line = 9bits + 10bits + 8bits = 27bits Storage required per screen page = 500 × 27 =
1687,5 byte = 1,65 Kbyte
2
Color Display
Jenis : 256, 4.096, 16.384, 65.536, 16.777.216 warna Masing-masing warna pixel
memakan tempat 1 byte Misal 640 x 480 x 256 warna x 1 byte = 307.200 byte = 300 Kbyte
a. Dialoque Mode: yaitu proses penerimaan data dimana pengirim dan penerima seakan
berdialog (real time), seperti pada contoh video conference.Dimana kompresi data
harus berada dalam batas penglihatan dan pendengaran manusia. Waktu tunda (delay)
tidak boleh lebih dari 150 ms, dimana 50 ms untuk proses kompresi dan dekompresi,
100 ms mentransmisikan data dalam jaringan.
b. Retrieval Mode: yaitu proses penerimaan data tidak dilakukan secara real time.Dapat
dilakukan fast forward dan fast rewind di client.Dapat dilakukan random access
terhadap data dan dapat bersifat interaktif.
a. Lossy Compression Teknik kompresi dimana data hasil dekompresi tidak sama
dengan data sebelum kompresi namun sudah “cukup” untuk digunakan. Contoh: Mp3,
streaming media, JPEG, MPEG, dan WMA.Kelebihan: ukuran file lebih kecil
dibanding loseless namun masih tetap memenuhi syarat untuk digunakan. Biasanya
teknik ini membuang bagian-bagian data yang sebenarnya tidak begitu berguna, tidak
begitu dirasakan, tidak begitu dilihat oleh manusia sehingga manusia masih
beranggapan bahwa data tersebut masih bisa digunakan walaupun sudah
dikompresi.Misal terdapat image asli berukuran 12,249 bytes, kemudian dilakukan
kompresi dengan JPEG kualitas 30 dan berukuran 1,869 bytes berarti image tersebut
85% lebih kecil dan ratio kompresi 15%.
b. Loseless Teknik kompresi dimana data hasil kompresi dapat didekompres lagi dan
hasilnya tepat sama seperti data sebelum proses kompresi. Contoh aplikasi: ZIP,
RAR, GZIP, 7-Zip Teknik ini digunakan jika dibutuhkan data setelah dikompresi
harus dapat diekstrak/dekompres lagi tepat sama. Contoh pada data teks, data
program/biner, beberapa image seperti GIF dan PNG Kadangkala ada data-data yang
setelah dikompresi dengan teknik ini ukurannya menjadi lebih besar atau sama.
Data Kualitas data hasil enkoding: ukuran lebih kecil, data tidak rusak untuk kompresi
lossy.Kecepatan, ratio, dan efisiensi proses kompresi dan dekompresi.Ketepatan proses
dekompresi data: data hasil dekompresi tetap sama dengan data sebelum dikompres
(kompresi loseless).
3
a. Entropy Encoding
b. Source Coding
Bersifat lossy berkaitan dengan data semantik (arti data) dan media. Mis:
Prediction (DPCM, DM), Transformation (FFT, DCT), Layered Coding (Bit position,
subsampling, sub-band coding), Vector quantization.
c. Hybrid Coding
Best case: untuk RLE tipe 2 adalah ketika terdapat 127 karakter yang sama
sehingga akan dikompres menjadi 2 byte saja.
Worst case: untuk RLE tipe 2 adalah ketika terdapat 127 karakter yang
berbeda semua, maka akan terdapat 1 byte tambahan sebagai tanda jumlah karakter
yang tidak sama tersebut..Menggunakan teknik loseless.
Static Huffman Coding frekuensi karakter dari string yang akan dikompres
dianalisa terlebih dahulu. Selanjutnya dibuat pohon huffman yang merupakan pohon
biner dengan root awal yang diberi nilai 0 (sebelah kiri) atau 1 (sebelah kanan),
sedangkan selanjutnya untuk dahan kiri selalu diberi nilai 1(kiri) - 0(kanan) dan di
dahan kanan diberi nilai 0(kiri) – 1(kanan).A bottom-up approach = frekuensi terkecil
dikerjakan terlebih dahulu dan diletakkan ke dalam leaf(daun). Kemudian leaf-leaf
akan dikombinasikan dan dijumlahkan probabilitasnya menjadi root diatasnya.
4
Y = 1 -> 1/8 = 0.125
Total = 8 karakter
Aplikasi Kompresi
c. RAR File Ditemukan oleh Eugene Roshal, sehingga RAR merupakan singkatan dari
Roshal Archive pada 10 Maret 1972 di Rusia.Berekstensi .rar dan MIME
application/x-rar-compressed.Proses kompresi lebih lambat dari ZIP tapi ukuran file
hasil kompresi lebih kecil. Aplikasi: WinRAR yang mampu menangani RAR dan
ZIP, mendukung volume split, enkripsi AES.
Algoritma ini dikembangkan oleh David A. Huffman pada paper yang ditulisnya
sebagai prasyarat kelulusannya di MIT. Kode Huffman salah satu algoritma dasar untuk
kompresi data, yang bertujuan untuk mengurangi jumlah bit yang diperlukan untuk
5
merepresentasikan informasi/pesan Dalam prosesnya, metode Huffman memerlukan 2 buah
hal yaitu tabel Huffman (Huffman Table) yang digunakan untuk penyimpan simbol dan
probabilitas/frekuensi kemunculannya dan pohon kode (Huffman Tree) yang digunakan
untuk menggambarkan jalur rangkaian pendek dari simbol yang termampatkan. Skema data
terkode pada metode ini dibedakan menjadi 2 bagian yaitu kode dengan panjang tetap (Fixed
Length Encoding) dimana pada metode ini seluruh simbol yang dikode akan mempunyai
jumlah digit bit yang sama sedangkan untuk kode dengan panjang tidak tetap (Variable
Length Encoding) memiliki jumlah digit bit yang tidak sama pada setiap simbol yang berbeda
berdasarkan tingkat nilai dari frekuensi kemunculan simbol tersebut.
Huffman Table
Tabel ini digunakan untuk menyimpan nilai jumlah dari tingkat frekuensi simbol yang
sering muncul pada pola rangkaian data. Dalam proses Huffman, simbol harus diketahui
banyak kemunculannya pada suatu rangkaian data. Hal ini diperlukan sebelum proses
pembentukan Huffman tree. Sebelum data dikode, terlebih dahulu harus diketahui berapa kali
jumlah dari simbol tersebut sering muncul dengan cara memeriksa seluruh simbol data,
sehingga dapat diperoleh nilai statistiknya, sebagai contoh terdapat statistik frekuensi dari
rangkaian data (Data Stream) berikut:
Huffman Tree
Kode Huffman adalah string biner yang digunakan untuk mengkodekan setiap
karakter di dalam data. Kode Huffman pada dasarnya merupakan kode prefiks (prefiks kode).
Kode prefiks biasanya direpresentasikan sebagai pohon biner yang berlabel 0 (cabang kiri)
atau 1 (cabang kanan). Rangkaian bit yang terbentuk pada setiap lintasan dari akar sampai
tree merupakan kode prefiks untuk karakter yang berpadanan. Berikut ini merupakan contoh
proses pembentukan pohon Huffman : Langkah : Urutkan simbol dari yang terkecil
6
Langkah 2 : Gabungkan 2 buah karakter/simbol terkecil kemudian sisipkan total nilai
dari karakter/simbol tersebut.
Metode Huffman
Dengan Panjang Simbol Tetap Metode ini merupakan pengembangan dari metode
Huffman yang telah dikenal sebelumnya. Jika metode Huffman sebelumnya menggunakan
representasi 1 buah simbol untuk direpresentasikan dalam codeword, Huffman nbased
Variable Length simbol menggunakan simbol sebanyak n buah simbol untuk
direpresentasikan kedalam codeword. Tujuan metode ini agar hasil kompresi data dapat lebih
kecil. Semakin panjang simbol yang direpresentasikan dalam codeword maka bit yang
digunakan dapat semakin kecil juga. Hal ini dapat menyebabkan data yang akan
dimampatkan menjadi lebih kecil dari pada menggunakan 1 buah simbol sabagaimana
metode Huffman pada umumnya. Sebagai FRQWRK SDGD DOLUDQ GDWD
³DDDDEEEEFFFFGGGG¥ sebagai berikut :
7
Maka hasil dari keluarannya adalah :
1 simbol : 00000000010101011010101011111111
2 simbol : 0000010110101111
4 simbol : 00011011
Metode ini adalah pengembangan dari metode panjang simbol tetap dimana ada
proses pencarian simbol terbaik yang terprioritaskan untuk terbentuk dari pada simbol yang
memiliki nilai kemunculan yang lebih kecil. Proses ini bertujuan agar simbol yang memiliki
kemunculan yang lebih tinggi dapat terbentuk sehingga penggunaan prefixed-code dapat
lebih optimal. Jika kode tersebut banyak digunakan dikarenakan simbol dari kode tersebut
banyak terbentuk dapat dikatakan bahwa rasio pemampatan data dapat lebih diperkecil lagi.
Sebagai contoh untuk kumpulan karakter ³EEE[EEE\DDD[DDD\¥ GHQJDQ
PHQJJXQDNDQ panjang simbol bervariasi 3. Setelah menyeleksi simbol-simbol mana saja
yang digunakan dalam parsing maka akan terbentuk tabel sebagai berikut :
8
Maka hasil dari keluaranya adalah : 3 Simbol dengan variasi : 0010001101100111 16
bit dengan 4 record data Jika menggunakan metode panjang tetap maka simbol-
simbol yang akan digunakan dalam parsing yaitu
III. PERANCANGAN
A. Blok Diagram Sistem Pada pemampatan data dan pengembalian data ke data asli
terdiri dari beberapa langkah yang dapat digambarkan menjadi blok diagram dengan
modal seperti pada gambar :
PEMAMPATAN DATA
9
1. Input : sebagai masukan berkas teks
2. Encode : sebagai proses pemampatan data
3. Output : sebagai hasil pemampatan yang terdiri dari 2 buah berkas, yaitu Berkas hasil
dan Library berkas tersebut.
PENGEMBALIAN DATA
1. Input : sebagai masukan yang terdiri dari 2 buah berkas, yaitu berkas yang akan
diproses dan library dari berkas tersebut
2. Decode : sebagai proses pengembalian data kebentuk aslinya
3. Output : sebagai hasil pengembalian data yang berupa data asli dari berkas yang
diproses.
10
Untuk proses decoding teks akan dilakukan proses berupa pembacaan ulang berkas
keluaran dan library. Kemudian akan dicocokkan stream data binary yang dihasilkan
dengan library yang sesuai dengan berkas tersebut.
Semakin tinggi panjang simbol yang digunakan maka rasio kompresi yang dihasilkan
akan lebih kecil.
11
12
13
BAB III
PENUTUP
A.Kesimpulan
Kode Huffman dapat digunakan untuk memampatkan data (data compression) dalam
komunikasi data. Pemampatan data (data compression) dengan kode Huffman dapat
digunakan untuk mempersingkat pesan yang dikodekan dengan sistem ASCII, sehingga
pesan yang dikirimkan relatif singkat atau pendek dan ruang penyimpanan relatif kecil pula.
Langkah-langkah pemampatan data dengan algoritma Huffman adalah sebagai berikut:
1. Menentukan bobot atau frekuensi dari setiap karakter dalam pesan.
2. Membuat barisan dari masing-masing karakter disertai bobotnya.
3. Memilih dua karakter yang mempunyai bobot terkecil, kemudian digabungkan dan
bobot masing-masing karakter dijumlahkan. Gabungan dua karakter ini diperlakukan
sebagai karakter baru.
4. Selanjutnya, pilih dua karakter berikutnya, termasuk karakter baru, yang mempunyai
bobot terkecil.
5. Prosedur yang sama dilakukan pada 2 karakter berikutnya yang mempunyai bobot
terkecil.
6. Setelah prosedur pemilihan karakter selesai, kemudian pohon biner yang terbentuk
diberi label 0 untuk setiap cabang kiri dan 1 untuk setiap cabang kanan.
7. Kode Huffman untuk setiap karakter diperoleh dengan membaca label pada pohon
biner dari akar ke daun.
Berdasarkan hasil pengujian dan analisis maka didapatkan beberapa kesimpulan sebagai
berikut :
1. Penambahan panjang variabel akan memperkecil rasio keluaran kompresi senilai 50-
53% (Panjang 2), 40-44% (Panjang 3), 29-35% (Panjang 4), 23- 29% (Panjang 5), dan
19-23% (Panjang 6) daripada 57-58% (Panjang 1).
2. Panjang variabel yang bervariasi dapat memperkecil total ukuran berkas keluaran
senilai 63-117% (Rata-rata panjang 2 sampai panjang 6) daripada panjang tetap yang
bernilai 66-141% (Rata-rata panjang 2 sampai panjang 6)
A. Saran
14
3. Proses penulisan library masih menggunakan operasi 1-byte sehingga belum dapat
mengoptimalkan metode Huffman yang mengakibatkan berkas library menjadi besar.
Dengan menggunakan operasi bit akan lebih dapat memperkecil berkas library.
15
DAFTAR PUSTAKA
[1] Ata Amrullah, Isbat Uzzin N, Rizky Yuniar H. 2007. Kompresi Dan Enkripsi SMS
Dengan Metode Huffman Kode Dan Algoritma Enigma. http://digilib.its.ac.id/ITS-
Undergraduate3100010041069/14636 (diakses 24 Juli 2014)
[2] Tri, Arya Prabawa. 2008. Kode Huffman. Bandung : Teknik Informatika ITB
[3] Permana, Raditya. 2008. Implementasi Huffman Coding untuk Kompresi SMS
Menggunakan J2ME. Malang : Depdiknas Joint
[5] I Made Joni, Budi Raharjo 2008, Pemrograman C dan Implementasinya : Edisi Kedua.
Bandung : INFORMATIKA
[6] Sianipar, I Ketut Wiryajati, Herry S. Mangiri. 2013, Pemrograman & Strucktur Data C.
Bandung : INFORMATIKA
16