Dosen Pengampu :
M. Soekarno Putra, M.Kom
Oleh :
Bertrand Saputra
NIM 211420088
Kelas IF2D
Penulis
DAFTAR ISI
HALAMAN COVER
KATA PENGANTAR
DAFTAR ISI
BAB I PENDAHULUAN
4.1 Kesimpulan
DAFTAR PUSAKA
BAB I
PENDAHULUAN
Walaupun pada saat ini terdapat banyak algoritma untuk mengompres data
termasuk teks, seperti LIFO, LZHUF, LZ77 dan variannya (LZ78, LZW, GZIP),
Dynamic Markov Compression (DMC), Block -Sorting Lossless, Run-Length,
Shannon-Fano, Arithmetic, PPM (Prediction by Partial Matching), Burrows-
Wheeler Block Sorting, dan Half Byte. Namun penulis menggunakan algoritma
Huffman, karena algoritma ini banyak digunakan dan mudah
diimplementasikan dalam proses pengompresan teks.
1.3 Tujuan
a. Dapat menerapkan kode Huffman untuk memapatkan atau mengkompresi sebuah
data agar dapat tercapai.
1) Ruang penyimpanan yang cukup relatif lebih kecil dibandingkan sebelumnya
2) Waktu saat pengiriman pesan sangat relatif lebih cepat dibandingkan
sebelumnya
b. Pengkodean dilakukan dengan cara pengkodean setiap karakter di dalam pesan atau
di dalam arsip dikodekan dengan kode yang lebih pendek.
LANDASAN
TEORI
Algoritma Huffman menggunakan prinsip pengkodean yang mirip dengan kode Morse,
yaitu tiap karakter (simbol) dikodekan hanya dengan rangkaian beberapa bit, dimana
karakter yang sering muncul dikodekan dengan rangkaian bit yang pendek dan karakter
yang jarang muncul dikodekan dengan rangkaian bit yang lebih panjang.
Berdasarkan tipe peta kode yang digunakan untuk mengubah pesan awal (isi data yang
diinputkan) menjadi sekumpulan codeword, algoritma Huffman termasuk kedalam kelas
algoritma yang menggunakan metode statik. Metoda statik adalah metoda yang selalu
menggunakan peta kode yang sama, metoda ini membutuhkan dua fase (two-pass): fase
pertama untuk menghitung probabilitas kemunculan tiap simbol dan menentukan peta
kodenya, dan fase kedua untuk mengubah pesan menjadi kumpulan kode yang akan di
taransmisikan, Sedangkan berdasarkan teknik pengkodean simbol yang digunakan,
algoritma Huffman menggunakan metode symbolwise. Metoda symbolwise adalah
metode yang menghitung peluang kemunculan dari setiap simbol dalam satu waktu,
dimana simbol yang lebih sering muncul diberi kode lebih pendek dibandingkan simbol
yang jarang muncul.
Rangkaian bit yang terbentuk pada setiap lintasan dari akar ke daun merupakan kode
prefiks untuk karakter yang berpadanan. Pohon biner ini biasa disebut pohon Huffman.
1. Baca semua karakter di dalam teks untuk menghitung frekuensi kemunculan setiap
karakter. Setiap karakter penyusun teks dinyatakan sebagai pohon bersimpul tunggal.
Setiap simpul di-assign dengan frekuensi kemunculan karakter tersebut.
2. Terapkan strategi algoritma greedy sebagai gabungkan dua buah pohon yang
mempunyai frekuensi terkecil pada sebuah akar. Setelah digabungkan akar tersebut
akan mempunyai frekuensi yang merupakan jumlah dari frekuensi dua buah pohon-
pohon penyusunnya.
3. Ulangi langkah 2 sampai hanya tersisa satu buah pohon Huffman. Agar pemilihan
dua pohon yang akan digabungkan berlangsung cepat, maka semua yang ada selalu
terurut menaik berdasarkan frekuensi.
A = 01000001
B = 01000010
A = 01000001
C = 01000011
C = 01000011
D = 01000100
A = 01000001
Pada string di atas, frekuensi kemunculan A=3, B=1, C=2, dan D=1,
Pada pohon Huffman tersebut, karakter ‘B’ terletak pada simpul paling dalam dan paling
kiri dan diberi kode 0000. Karakter ‘C’ terletak di sebelah kanan ‘B’ pada aras yang
sama sehingga diberi kode 0001 yang lebih satu nilai dari 0000. Lalu karakter ‘F’ dan
‘G’ diberi kode 0010 dan 0011 dengan cara yang sama. Untuk karakter ‘A’ yang berada
pada aras yang lebih rendah diberi kode yang lebih satu nilai dari 0011 yaitu 0100 namun
biner belakangnya dihilangkan menjadi 010. Karakter ‘D’ yang berada pada aras yang
sama dengan ‘A’ diberi kode 011 yang lebih satu nilai dari 010. Demikian seterusnya
hingga semua karakter telah di-encode.
Proses Decoding
Decoding merupakan kebalikan dari encoding. Decoding berarti menyusun kembali data
dari string biner menjadi sebuah karakter kembali. Decoding dapat dilakukan dengan dua
cara, yang pertama dengan menggunakan pohon Huffman dan yang kedua dengan
menggunakan tabel kode Huffman.
Apabila kita mau menuliskan kata atau pesan seperti berikut ini, misalnya:
ABACBCDACB, maka untuk pertama kalinya kita harus melihat berapa banyaknya
karakter setiap pesan yang mau dikodekan. Andaikan pesan diatas yang akan dikodekan,
maka kita lihat pesan tersebut terdiri dari 10 karakter, maka secara otomatis akan
dikodekan dalam ASCII menjadi 8x10 = 80 bit (10 byte). Kira-kira seperti ini hasil
pengkodeannya:
ABACBCDACB = 01000001 01000010 01000001 01000011 01000010
0100001101000100 010000010100001101000010.
Untuk 10 karakter saja pengkodean ASCII sudah sebegitu panjangnya. Apalagi untuk
pengkodean suatu kalimat atau untuk suatu pesan yang sangat panjang, Oleh karena itu
perlu diusahakan untuk meminimumkan jumlah bit yang dibutuhkan, panjangnya kode
untuk setiap karakter sedapat mungkin diperpendek, agar dibutuhkan tempat
penyimpanan yang relative lebih sederhana, efektif dan efisien. Demikian juga untuk
waktu pengiriman yang dibutuhkan.
PEMBAHASAN
Keterangan:
Untuk karakter ‘g’
45.000 x 1 bit (0) = 45.000 bit
untuk karakter 'o'
13.000 x 3bit (101) = 39.000 bit
untuk karakter `p'
12.000 x 3bit (110) = 36.000 bit
untuk karakter 'h'
16.000 x 3bit (111) = 48.000 bit
untuk karakter `e'
9.000 x 4bit (1101) = 36.000 bit
untuk karakter 'r'
5.000 x 4bit (1100)= 20.000 bit
Jumlah bit yang digunakan dalam pembentukan kode Huffman untuk karakter"
g,o,p,h,e,r, "= 45.000 + 39.000 + 36.000 + 48.000 + 36.000 + 20.000 = 224.000 bit.
karakter:
Langkah Pertama:
Menentukan kerapatan masing-masing karakter dalam susunan kalimat di atas
Banyaknya huruf keseluruhan adalah = 27 karakter terdiri dari: Huruf “A” = 7, Huruf “I”
= 6, Huruf “N”= 4, Huruf “M” = 2 , Huruf “K” = 2 , Huruf “H” = 1, Huruf “ R” = 1,
Huruf “T” = 1, Huruf “ S” = 1, Huruf “G” = 1 dan Huruf “ D” = 1
Langkah Kedua:
Menentukan probabilitas Masing-masing karakter adalah sebagai berikut [2]: Huruf
“A” = 7/27, Huruf “I”= 6/27, Huruf ”N” = 4/27, Huruf “M” = 2/27, Huruf “K” = 2/27,
Huruf “H” = 1/27, Huruf “R” = 1/27, Huruf “T” = 1/27, Huruf “S” = 1/27, Huruf “G” =
1/27, Huruf “ D” = 1/27.
Langkah Ketiga:
Membuat tabel berikut :
Langkah Keempat:
Membuat pohon biner, berikut pada gambar Gambar 3 dan Gambar 4.
Langkah Kelima:
Langkah Keenam:
Hasil rekapitulasi akhir adalah sebagai berikut:
a. Banyaknya bit untuk Huruf “ A “ = 2 * 7 = 14
b. Banyaknya bit untuk Huruf “ I “ = 3 * 6 = 18
c. Banyaknya bit untuk Huruf “ N “ = 2 * 4 = 8
d. Banyaknya bit untuk Huruf “ M “ = 3 * 2 = 6
e. Banyaknya bit untuk Huruf “ K “ = 4 * 2 = 8
f. Banyaknya bit untuk Huruf “ H “ = 5 * 1 = 5
g. Banyaknya bit untuk Huruf “ R “ = 6 * 1 = 6
h. Banyaknya bit untuk Huruf “ T “ = 6 * 1 = 6
i. Banyaknya bit untuk Huruf “ S “ = 4 * 1 = 4
j. Banyaknya bit untuk Huruf “ G “ = 5 * 1 = 5
k. Banyaknya bit untuk Huruf “ D “ = 5 * 1 = 5
PENUTUP
4.1 Kesimpulan
Algoritma Huffman adalah salah satu algoritma kompresi, yang banyak digunakan
dalam kompresi teks. Dari ketiga teknik tersebut, proses kompresi data menggunakan
Algoritma Huffman memiliki rasio kompresi yang paling tinggi, tetapi memiliki
kompleksitas di dalam penyunsunan pohon Huffman. Algoritma Huffman adalah salah
satu algoritma yang menggunakan prinsip algoritma greedy dalam penyusunan pohon
Huffman. Dari contoh hasil pengujian kasus pertama yang dilakukan, algoritma Huffman
dapat mengompres teks sebesar 70% jika dibandingkan dengan menggunakan kode
ASCII dan sebesar 25,3% jika dibandingkan dengan kita menggunakan 3-bit kode.
Dari contoh hasil uji coba penerapan kasus kedua dan Penghitungan kode Huffman,
maka dapat disimpulkan antara lain bahwa: 1. Kode Huffmann benar-benar lebih
sederhana bila di bandingkan dengan kode ASCII yang selama ini dipakai masyarakat
umum. 2. Dengan menggunakan kode Huffmann ternyata dapat mengurangi beban alias
dapat mengkompres data lebih dari 50%. 3. Penghitungan kode Huffmann tidak unik,
tetapi bias bermacam –macam variasi dalam setiap kalimat yang dikodekan, tetapi semua
hasil yang dicapai tetap lebih rendah dari pada kode ASCII.
DAFTAR PUSTAKA
Astuti, E. Z., & Hidayat, E. Y. (2013). Kode Huffman untuk Kompresi Pesan. Techno.
Com, 12(2), 117-126.