download

Matakuliah
Tahun
: T0034 / Perancangan & Analisis Algoritma
: 2008
Pertemuan 19
HUFFMAN CODE
KOMPRESI DATA
• Bagaimana sebenarnya program kompresi data itu bekerja?
• Mengapa sebuah file yang ukurannya sudah baku ternyata
bisa diperkecil tanpa mengurangi isinya?
• Misalkan kita hendak menyimpan sebuah huruf A.
Komputer akan mengenali huruf A ini sebagai karakter
dengan urutan ke-65, maka huruf A disimpan di harddisk
sebagai 100 0001 atau merupakan kode biner dari angka
65.
– Berarti dibutuhkan 7 digit biner untuk menyimpan huruf A.
• Kompresi data berusaha menyimpan sebuah data dengan
jumlah digit biner seminimum mungkin.
[buku utama, bab 8.1]
Bina Nusantara
CHARACTER ENCODING
•
ASCII (American Standard Code for Information Interchange)
– Character encoding ASCII terdiri atas 95 karakter yang bisa dicetak dan 33 karakter
perintah. Jadi total terdapat 128 karakter yang diwakili dengan 7 bit bilangan biner
•
ISO 8859-1 adalah standar karakter sepanjang 8 bit, dapat menyimpan 256
karakter.
– Standar ini sering disebut juga dengan character encoding Latin-1. Bagian awal dari
ISO 8859-1 memiliki set yang hampir sama dengan ASCII.
•
UTF-8 (Unicode Transformation Format) adalah standar character encoding
yang memungkinkan huruf dari berbagai bahasa dimunculkan secara bersamasama. Jumlah bit untuk menyimpan 1 karakter pada standar ini berbeda-beda.
– Karakter ASCII disimpan sepanjang 1 byte (8 bit).
– Karakter-karakter Latin, Greek, Cyrillic, Armenian, Hebrew, Arabic, Syriac dan Thaana
disimpan sepanjang 2 byte (16 bit).
– Karakter-karakter bahasa lain disimpan sepanjang 3 byte (24 bit). Yang menarik,
karakter huruf Jawa/Bali (alfabet hanacaraka) dan karakter Bugis dari Indonesia
sudah terdaftar dalam UTF-8 bagian ini.
– Masih dimungkinkan menyimpan karakter sepanjang 4 byte untuk keperluan masa
depan (saat ini belum digunakan).
Bina Nusantara
TABEL KARAKTER
Biner
0010
0010
0010
0010
0010
0010
0010
0010
0010
0010
0010
0010
0010
0010
0010
0010
0011
0011
0011
0011
0011
0011
0011
0011
0011
0011
0011
0011
0011
0011
0011
0011
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
#
C
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
sp
!
"
#
$
%
&
'
(
)
*
+
,
.
/
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
Biner
0100
0100
0100
0100
0100
0100
0100
0100
0100
0100
0100
0100
0100
0100
0100
0100
0101
0101
0101
0101
0101
0101
0101
0101
0101
0101
0101
0101
0101
0101
0101
0101
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
#
C
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
Biner
0110
0110
0110
0110
0110
0110
0110
0110
0110
0110
0110
0110
0110
0110
0110
0110
0111
0111
0111
0111
0111
0111
0111
0111
0111
0111
0111
0111
0111
0111
0111
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
#
C
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~
[buku utama, tabel 8.1]
Bina Nusantara
ALGORITMA HUFFMAN
•
•
•
Diciptakan oleh David A. Huffman pada tahun 1951 sebagai tugas kuliah ketika
menempuh pendidikan Ph.D di Massachusetts Institute of Technology (MIT).
Dosen pengajar Huffman (bernama Robert M. Fano) menawarkan kepada para
mahasiswanya bahwa siapa saja yang dapat menulis sebuah artikel tentang
membangun pohon biner yang efisien akan mendapatkan nilai bagus tanpa
harus menempuh ujian.
Setelah lama mencoba dan hampir menyerah, Huffman akhirnya menemukan
sebuah metode untuk membangun pohon biner berdasarkan frekuensi.
– Tekniknya kemudian diakui sebagai teknik yang paling efisien, melebihi teknik buatan
sang dosen sendiri.
•
•
Binary Tree (pohon biner) yang dibuat oleh Huffman (disebut sebagai Huffman
Tree) adalah dasar dari kompresi data dengan format ZIP yang kita kenal
sekarang.
Teknik ini juga dipakai sebagai salah satu algoritma penyusun format file
gambar JPEG dan format file musik populer MP3.
– Jadi, bila kita sekarang bisa mendengarkan MP3 player kita sambil berkegiatan,
salah satu faktor yang membuat teknologi ini ada adalah algoritma Huffman.
[buku utama, bab 8.2]
Bina Nusantara
MEMBUAT HUFFMAN TREE
1. Urutkan karakter dari yang frekuensinya paling kecil
menjadi sebuah tabel.
2. Pilih 2 karakter teratas, buat menjadi leaf node dari tree.
Cantumkan isi karakter dan frekuensi nya dalam node.
3. Buat node baru dengan posisi sebagai parent node dari
kedua leaf node. Frekuensinya didapat dari penjumlahan
frekuensi kedua child node-nya.
4. Hilangkan huruf-huruf yang sudah dipakai dari tabel.
5. Masukkan node baru ke dalam tabel.
6. Ulangi proses dari langkah nomor 2 hingga isi tabel habis.
Bina Nusantara
CONTOH KASUS
• Misalkan kita hendak menyimpan kalimat :
– LOGIKA ALGORITMA
• Maka dibuat tabel frekuensi :
Bina Nusantara
K
R
T
M
sp
L
O
G
I
A
1
1
1
1
1
2
2
2
2
3
HUFFMAN TREE
•
Pelajari penjelasan tiap langkah pada ilustrasi 8.3 untuk memahami bagaimana
Huffman Tree dibuat
[buku utama, ilustrasi 8.3i]
Bina Nusantara
TABEL HUFFMAN CODE
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
K
R
T
M
sp
L
O
G
I
A
11110
11111
0100
0101
1110
011
100
101
110
00
L
O
G
I
K
A
sp
A
L
G
O
R
I
T
M
A
Bina Nusantara
011
100
101
110
11110
00
1110
00
011
101
100
11111
110
0100
0101
00
3 bit
3 bit
3 bit
3 bit
5 bit
2 bit
4 bit
2 bit
3 bit
3 bit
3 bit
5 bit
3 bit
4 bit
4 bit
2 bit
PENDALAMAN MATERI
• Selain bit yang berisi data, tabel yang berisi
Huffman Code juga perlu disimpan agar data dapat
diterjemahkan kembali
• Pelajari juga contoh kasus 8.2 di buku utama
– Tabel frekuensi (tabel 8.5)
– Huffman Tree (ilustrasi 8.4)
– Huffman Code (tabel 8.6)
Bina Nusantara
LATIHAN
• Buatlah tabel frekuensi, Huffman Tree dan Huffman
Code untuk mengkompresi kalimat berikut
MARI BELAJAR TEKNOLOGI INFORMASI
Bina Nusantara
REVIEW
• Apa yang sudah dipahami?
• Apa yang akan dibahas selanjutnya?
Bina Nusantara