Anda di halaman 1dari 21

MAKALAH MATA KULIAH PENGANTAR MULTIMEDIA

ALGORITMA HUFFMAN CODE PADA KOMPRESI TEKS

Dosen Pengampu :
M. Soekarno Putra, M.Kom

Oleh :
Bertrand Saputra
NIM 211420088
Kelas IF2D

UNIVERSITAS BINA DARMA


PALEMBANG
2022
KATA PENGANTAR
Puji dan syukur kehadirat Allah SWT. Dzat yang selalu melimpahkan rahmat dan
karunia-Nya. Penulis dapat menyelesaikan makalah ini. Shalawat beserta salam semoga
senantiasa dilimpahkan kepada Nabi Muhammad SAW beserta keluarganya, sahabat serta
kepada para umatnya yang senantiasa patuh dan taat kepada ajarannya.
Makalah yang berjudul “Algoritma Huffman Code Pada Kompresi Teks” ini
disusun sebagai salah satu syarat untuk memenuhi tugas mata kuliah Pendidikan dan
Kewarganegaraan yang diampu oleh M. Sorkarno Putra, M.Kom. Selain itu, dengan
adanya makalah yang diharapkan dapat menambah pemahaman Penulis dalam permasalahan
yang berkaitan dengan wawasan dan perkembangan dalam bidang Pendidikan
Kewarganegaraan ini.
Penulis menyadari bahwa di dalam penulisan makalah terdapat banyak kekurangan,
kesalahan, dan ketidaksempurnaan yang disebabkan wawasan dan pengetahuan dari Penulis
yang masih dalam proses belajar. Oleh karena itu, Penulis berharap adanya kritik dan saran
yang membangun untuk dijadikan landasan perbaikan yang berguna bagi pengembangan ilmu
dan pengetahuan pada Penulis.

Palembang, Maret 2022

Penulis
DAFTAR ISI

HALAMAN COVER

KATA PENGANTAR

DAFTAR ISI

BAB I PENDAHULUAN

1.1. Latar Belakang


1.2. Rumusan Masalah
1.3. Tujuan
1.4. Batasan Masalah

BAB II LANDASAN TEORI

2.1 Pengertian Algoritma Huffman


2.2 Pembentukan Pohon Huffman
2.3 Cara Kerja Pengkodean ASCII
2.4 Kompleksitas Algoritma Huffman
2.5 Aplikasi Kompresi Data dengan Huffman
2.6 Variasi Kode Huffman
2.6.1 Kode Huffman n-ary
2.6.2 Kode Huffman Adaptif
2.6.3 Kode Huffman dengan panjang dibatasi\
2.6.4 Kode Huffman dengan berbobot tidak sama
2.6.5 Pohon biner alfabis
2.6.6 Kode Huffman Kanonik

BAB III PEMBAHASAN

3.1 Contoh Pengujian Kasus 1


3.1.1 Pengujian Algoritma Huffman
3.1.2 Pengujian Kompresi dari File
3.2 Contoh Pengujian Kasus 2
BAB IV KESIMPULAN

4.1 Kesimpulan

DAFTAR PUSAKA
BAB I

PENDAHULUAN

1.1 Latar Belakang


Data yang berukuran besar seringkali sulit untuk disimpan dalam media penyimpanan
yang berukuran terbatas. Karena alasan itu, data yang besar sebelum disimpan biasanya
dimampatkan terlebih dahulu agar ukurannya lebih kecil dari semula. Salah satu
algoritma yang sering digunakan dalam teknik pemampatan data adalah kode huffman.
Teknik ini mampu memampatkan sampai dengan tiga puluh persen dari ukuran semula.
Tetapi proses decoding string biner menjadi data kembali masih kurang efisien. Karena
itu, kami mencoba membahas salah satu algoritma yang mirip dengan algoritma
Huffman tetapi lebih efisien yaitu algoritma Huffman Kanonik. Teks adalah kumpulan
dari karakter -karakter atau string yang menjadi satu kesatun. Teks yang memuat banyak
karakter didalamnya selalu menimbulkan masalah pada media penyimpanan dan
kecepatan waktu pada saat transmisi data. Media penyimpanan yang terbatas, membuat
semua orang mencoba berpikir untuk menemukan sebuah cara yang dapat digunakan
untuk mengompres teks.

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.

Kompresi adalah proses pengubahan sekumpulan data menjadi bentuk kode


dengan tujuan untuk menghemat kebutuhan tempat penyimpanan dan waktu
untuk transmisi data.

Dengan menggunakan algoritma Huffman, proses pengompresan teks


dilakukan dengan menggunakan prinsip pengkodean, yaitu tiap karakter
dikodekan dengan rangkaian beberapa bit sehingga menghasilkan hasil yang
lebih optimal.

Tujuan dari penulisan makalah ini adalah untuk mengetahui keefektifan


algoritma Huffman dalam kompresi teks dan memaparkan cara-cara
mengompresi teks dengan menggunakan algoritma Huffman.
1.2 Rumus Masalah
Bagaimana cara menggunakan kode Huffman untuk pemampatan atau Compression data
agar permasalahan seperti diatas bisa teratasi dengan baik

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.

1.4 Batasan Masalah


a. Pesan yang akan dibahas dalam penulisan ini terbatas pada pesan teks saja
b. Huruf capital/huruf besar, huruf kesil maupun latin dianggap sama
c. Tidak memandang karakter lain seperti titik, koma dan tanda baca lainnya
d. Setiap pesan dianggap tidak terdapat spasi
BAB II

LANDASAN

TEORI

2.1 Pengertian Algoritma Huffman


Algoritma Huffman, yang dibuat oleh seorang mahasiswa MIT bernama David
Huffman pada tahun 1952, merupakan salah satu metode paling lama dan paling terkenal
dalam kompresi teks.

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.

2.2 Pembentukan Pohon Huffman


Kode Huffman pada dasarnya merupakan kode prefiks (prefix code). Kode prefiks
adalah himpunan yang berisi sekumpulan kode biner, dimana pada kode prefik ini
tidak ada kode biner yang menjadi awal bagi kode biner yang lain. Kode prefix
biasanya direpresentasikan sebagai pohon biner yang diberikan nilai atau label . Untuk
cabang kiri pada pohon biner diberi label 0, sedangkan pada cabang kanan pada pohon
biner diberi label 1.

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.

Langkah-langkah pembentukan pohon Huffman adalah sebagai berikut [3] :

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.

Sebagai contoh, dalam kode ASCII string 7 huruf “ABACCDA” membutuhkan


representasi 7 × 8 bit = 56 bit (7 byte), dengan rincian sebagai berikut:

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,

Gambar 1. Pohon Huffman untuk Karakter “ABACCDA”


Proses Encoding
Aturan-aturan proses encoding pada algoritma Huffman Kanonik adalah sebagai berikut:
1. Panjang kode untuk suatu simpul adalah sebesar aras+1 simpul tersebut.
2. String biner simpul paling dalam yang terletak paling kiri diberi nilai 0 semuanya.
Untuk simpul berikutnya(bergeser dari kiri ke kanan) string binernya naik satu nilai
dari simpul sebelumnya.
3. Apabila semua simpul pada kedalaman yang sama telah di encode, maka proses
encoding dilanjutkan ke aras yang lebih rendah. Hanya saja string binernya tidak
dimulai dengan semuanya 0. String biner simpul paling kiri dimulai dengan kode
baru. Kode baru itu merupakan kenaikan 1 nilai dari string biner simpul yang terakhir
di-encode namun biner paling belakangnya dihilangkan sehingga panjang kodenya
berkurang satu. Simpul berikutnya diencode engan string binernya naik satu
nilai(bergeser dari kiri ke kanan).
4. Proses berhenti bila telah mencapai akar.

Terdapat pohon Huffman sebagai berikut: ((((B,F),A),E),(((G,C),D),H)) dengan


kedalaman 4

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.

Langkah-langkah mendecoding suatu string biner dengan menggunakan pohon Huffman


adalah sebagai berikut :
1. Baca sebuah bit dari string biner.
2. Mulai dari akar
3. Untuk setiap bit pada langkah 1, lakukan traversal pada cabang yang bersesuaian.
4. Ulangi langkah 1, 2 dan 3 sampai bertemu daun. Kodekan rangkaian bit yang telah
dibacadengan karakter di daun.
5. Ulangi dari langkah 1 sampai semua bit di dalam string habis. Sebagai contoh kita
akan men-decoding string biner yang bernilai ”111”

Gambar 2. Proses Decoding dengan Menggunakan Pohon Huffman

2.3 Cara Kerja Pengkodean ASCII


Sistem kode yang selama ini banyak diterapkan dan umum digunakan serta paling
populer di dalam dunia ilmu pengetahuan saat ini adalah kode ASCII (American
Standard Code International Institute). Cara kerja dari pengkodean ASCII ini adalah
dengan cara mengkodekan setiap karakter menjadi 8 bit Biner, atau sering disebut
dengan istilah satu karakter dikodekan dengan satu byte [1]. Untuk mengetahui
gambaran dan cara kerja pengkodean ini, misalkan kita ambil beberapa huruf sebagai
contoh adalah sebagai berikut: \Untuk kode ASCII huruf A adalah = 01000001, untuk
huruf B=01000010, untuk huruf C=01000011 sedangkan untuk huruf D adalah =
01000100 dst.

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.

Pengkodean ini terutama ditujukan untuk karakter-karakter yang probabilitas/peluang


kemunculannya lebih besar. maka harus diusahakan agar pengkodeannya lebih pendek
jika dibandingkan dengan karakter yang probabilitas kemunculannya lebih kecil [1].
Dasar pemikiran seperti inilah yang mendasari munculnya ide baru, yaitu membuat kode
yang lain selain kode ASCII, yaitu dengan menggunakan kode Huffman. Sehingga kita
akan mengusahakan untuk meminimalkan pengkodean tersebut menggunakan kode
Huffman.

2.4 Kompleksitas Algoritma Huffman


Algoritma Huffman mempunyai kompleksitas waktu O(n log n), karena dalam
melakukan sekali proses itersi pada saat penggabungan dua buah pohon yang
mempunyai frekuensi terkecil pada sebuah akar membutuhkan waktu O (log n), dan
proses itu dilakukan berkali-kali sampai hanya tersisa satu buah pohon Huffman itu
berarti dilakukan sebanyak n kali[4].

2.5 Aplikasi Kompresi Data dengan Huffman


Kode Huffman bukan metode kompresi dengan kinerja yang terbaik, namun
demikian, Kode Huffman masih digunakan secara luas karena kesederhanaannya,
kecepatannya yang tinggi, dan sedikitnya hak paten yang terkait dengannya. Saat ini
Kode Huffman sering digunakan sebagai lengkah akhir dari beberapa metode kompresi
yang lain. Contoh-contoh implementasi Kode Huffman antara lain:
 Metode DEFLATE (kombinasi LZ77 dan Kode Huffman). Metode ini digunakan
dalam format file .ZIP, .GZ (gzip), dan .PNG (Portable Network Graphic), dan .CAB
(Microsoft® Cabinet).
 Utility „pack‟ pada sistem Unix. Dalam format file .Z.
 Kombinasi transformasi Burrows-Wheeler dan Kode Huffman. Dalam format file
.BZ2 (bzip2).
 Kompresi gambar dengan format .JPEG (Joint Photographic Experts Group).
Kompresi gambar ini menggunakan transformasi kosinus diskrit, lalu kuantisasi,
kemudian diakhiri dengan Kode Huffman sebagai langkah akhir. - Kompresi audio
dengan format .MP3. Kompresi ini adalah bagian dari standar MPEG-1 untuk
kompresi suara dan musik, menggunakan subbanding, MDCT (Modified Discrete
Cosine Transform), perceptual modeling, kuantisasi, dan diakhiri dengan Kode
Huffman sebagai langkah akhir.
 Kompresi audio dengan format .AAC (Advanced Audio Coding). Kompresi ini adalah
bagian dari spesifikasi enkoding audio MPEG-2 dan MPEG-4 menggunakan MDCT
(Modified Discrete Cosine Transform), perceptual modeling, kuantisasi, dan juga
diakhiri dengan Kode Huffman sebagai langkah akhir.
 Selain dalam kompresi data, Kode Huffman yang telah dimodifikasi juga digunakan
pada mesin fax untuk mengodekan warna hitam pada warna putih. - HDTV (High-
Definition Television) dan Modem (Modulator-Demodulator) juga menggunakan
prinsip Kode Huffman

2.6 Variasi Kode Huffman


Ada banyak variasi dari Kode Huffman, beberapa diantaranya menggunakan
algoritma yang sama dengan algoritma pembentukan Kode Huffman, beberapa yang lain
menemukan kode awalan yang optimal.

2.6.1 Kode Huffman n-ary


Algoritma Huffman n-ary menggunakan alfabet {0, 1, …, n - 1} untuk
enkoding suatu pesan dan membuat pohon n –ary. Pendekatan ini adalah ide awal
David Huffman. Algoritmanya sama dengan yang digunakan untuk Kode
Huffman biner (n = 2), kecuali bahwa n buah simbol yang paling sedikit
kemunculannya diambil secara bersamaan, tidak diambil 2 yang paling sedikit
saja. Untuk n > 2, tidak semua himpunan kata-kata sumber dapat membentuk
pohon n-ary untuk Kode Huffman dengan benar. Pada kasus ini, tambahan
probabilitas 0 harus ditambahkan. Hal ini dilakukan karena pohonnya harus
membentuk kontraktor n ke 1. Kode biner memiliki kontraktor 2 ke 1, himpunan
kata berukuran berapapun dapat membentuk kontraktor ini.

2.6.2 Kode Huffman Adaptif


Variasi ini menghitung probabilitas secara dinamis berdasarkan frekuensi
terakhir dari string sumber (adaptif).

2.6.3 Kode Huffman dengan panjang dibatasi


Ini adalah salah satu varian Kode Huffman yang tujuannya sama yaitu
membangun pohon biner dengan panjang lintasan berbobot minimum, tetapi ada
tambahan aturan, yaitu panjang Kode Huffman harus lebih kecil daripada
konstanta tertentu.

2.6.4 Kode Huffman dengan berbobot tidak sama


Pada masalah penentuan Kode Huffman yang biasa, diasumsikan bahwa setiap
simbol pada sumber memiliki bobot yang sama: kode biner dengan panjang N
akan selalu berbobot N, tidak peduli berapa banyak digitnya yang 0 dan berapa
banyak digitnya yang 1. Dengan asumsi seperti ini, meminimalisasi harga total
suatu pesan sama dengan meminimalisasi jumlah digit total. Kode Huffman
dengan bobot sumber tidak sama adalah generalisasinya, di mana asumsi tersebut
tidak berlaku lagi: simbol-simbol pada sumber panjangnya bisa berbeda-beda,
karena adanya karakterisitk tertentu dari medium pengiriman. Contohnya adalah
enkoding alfabet pada Kode Morse, di mana sebuah „-„ (garis) memakan waktu
pengiriman yang lebih lama daripada sebuah „.‟ (titik), dengan demikian bobot
garis dalam pengiriman lebih besar. Tujuannya masih sama, yaitu meminimalisasi
panjang kode rata-rata, tetapi tidak cukup hanya dengan meminimalisasi jumlah
simbol yang digunakan dalam suatu pesan. Belum ada algoritma yang diketahui
dapat menyelesaikan masalah ini dengan tingkat efisiensi yang sama dengan
Kode Huffman yang konvensional.

2.6.5 Pohon biner alfabis (Kode Hu-Tucker)


Pada masalah penentuan Kode Huffman yang biasa, diasumsikan bahwa setiap
kode dapat mengacu pada simbol apapun pada sumber. Pada versi alfabetis ini,
urutan alfabetis pada sumber dan hasil enkoding harus sama. Kode Hu-Tucker ini
sering digunakan sebagai pohon pencarian biner (BST/Binary Search Tree).

2.6.6 Kode Huffman Kanonik


Kode yang didapatkan dari sumber yang diurutkan kembali, yang disebut
Kode Huffman kanonik ini adalah kode yang sering digunakan, karena
kemudahannya dalam enkoding/dekoding. Teknik menentukan kode ini sering
disebut Kode Huffman-Shannon-Fano, karena optimalitasnya seperti Kode
Huffman dan probabilitas bobotnya yang alfabetis seperti Kode Shannon-Fano.
(P.S. Robert M. Fano adalah dosen David A. Huffman ketika ia mahasiswa
doktoral; Sedangkan Claude Shannon adalah kolega Fano yang sekaligus penemu
keilmuan teori informasi (information theory)).
BAB III

PEMBAHASAN

3.1 Contoh Pengujian Kasus 1


Pada uji coba ini dilakukan pengujiaan algoritma Huffman dalam melakukan
kompresi data teks. Dan juga pengujian kompresi dari beberapa file dengan variasi
karakter.

3.1.1 Pengujian Algoritma Huffman


Pada pengujian, akan dilakukan encoding sebuah teks yang berisi 100.000
string, diantaranya 45.000 karakter 'g', 13.000 karakter 'o', 12.000 karakter `p',
16.0 karakter 'h', 9.000 karakter `e', dan 5.000 karakter 'r' dengan menggunakan
3 cara, yaitu dengan menggunakan kode ASCII , kode 3-hit dan kode Huffman.
Setelah itu ketiga kode tersebut akan dibandingkan satu dengan yang lain.

 Hasil Kode Huffman

Tabel Kode Huffman untuk karakter “gopher”


Karakter Frekuensi Peluang Kode
Huffman
g 45.000 45/100 0
o 13.000 13/100 101
p 12.000 12/100 100
h 16.000 16/100 111
e 9.000 9/100 1101
r 5.000 5/100 1100

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.

3.1.2 Pengujian Kompresi dari File


Uji coba dirancang untuk mengetahui hasil kompresi apakah dugaan
sebelumnya, dimana jika ada file yang dikompres berukuran kecil, maka hasil
kompresnya lebih besar ukurannya daripada file asli.

Gambar 1. File asil dari uji1.txt

Gambar 2. File hasil setelah dikompresi

3.2 Contoh Pengujian Kasus 2


Gunakan kode Huffmann untuk mengkompres suatu pesan yang dikirimkan kepada
seseorang dengan susunan kalimat sebagai berikut: “ HARI INI KITA MAKAN SIANG
DI MANA” Untuk mendapatkan kode Huffmann harus mengikuti langkah-langkah
sesuai dengan petunjuk:
1. Menentukan Probabilitas atau peluang dari kemunculan setiap karakter
2. Hasil penghitungannya diletakkan dalam table
3. Membuat pohon biner
4. Menentukan kode setiap karakter
5. Menghitung berapa banyaknya bit yang digunakan
6. Membandingkan hasil Kode Huffmann dengan kode ASCII

Selanjutnya melakukan penghitungan satu per satu untuk setiap

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 :

Tabel 1: Tabel Kerapatan dan Peluang untuk setiap karakter


Huruf Kerapatan Peluang
A 7 7/27
I 6 6/27
N 4 4/27
M 2 2/27
H 2 2/27
K 1 1/27
R 1 1/27
T 1 1/27
S 1 1/27
G 1 1/27
D 1 1/27

Langkah Keempat:
Membuat pohon biner, berikut pada gambar Gambar 3 dan Gambar 4.
Langkah Kelima:

Tabel 2 : Kode Huffman untuk Kerapatan dan Peluang setia[ karakter


Huruf Kerapatan Peluang Kode
Huffman
A 7 7/27 00
I 6 6/27 010
N 4 4/27 110
M 2 2/27 10
H 2 2/27 1110
K 1 1/27 11110
R 1 1/27 111110
T 1 1/27 111111
S 1 1/27 0110
G 1 1/27 01110
D 1 1/27 01111

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

Hasil akhir secara keseluruhan:


Kalimat yang di kodekan adalah: “HARI INI KITA MAKAN SIANG DI MANA”
Dengan Kode ASCII: 27 * 8 Bit = 216 Bit. Dengan Kode Huffmann 85 Bit adalah
85/216 * 100% = 39,35 %. Sehingga dengan kode Huffmann bisa mengurangi beban
lebih dari 60 %.
Gambar 3. Pohon biner untuk kalimat
“HARI INI KITA MAKAN SIANG DI MANA”

Kode Huffman Tidak Unik


Untuk membuktikan bahwa Kode Huffman tidak unik, bisa dilakukan dengan
mambuat pohon biner seperti pada Gambar 3.
Gambar 4. Pohon biner untuk membuktikan kode Huffman tidak unik
BAB IV

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.

Asrianda, A. (2012). KOMPRESI FILE MENGGUNAKAN ALGORITMA


HUFFMAN KANONIK. TECHSI-Jurnal Teknik Informatika, 4(1).

Pattiasina, T. J. (2012). Analisa Kode Huffman untuk Kompresi Data


Teks. Teknika, 1(1), 1-12.

Anda mungkin juga menyukai