Anda di halaman 1dari 14

LECTURE NOTE

Week 05
Huffman Code and
Graph Colouring

ALGORITHM DESIGN AND


ANALYSIS <<Kode mtk – Nama mtk>>
LEARNING OUTCOMES

LO2: Compare several algorithm design methods

OUTLINE MATERI :

1. Huffman Code
2. Graph Colouring

Algorithm Design and Analysis


ISI MATERI
1. Huffman Code

Huffman code digunakan dalam teori komunikasi dan di bidang kompresi data secara luas. Agar
komunikasi terjadi, simbol atau pesan terkait harus dikodekan menggunakan teknik
pengkodean apa pun. Tugas ini dilakukan oleh encoder. Encoder memberikan alamat unik
untuk semua simbol dan kemudian pesan ditransmisikan melintasi saluran sebagai rangkaian 0
dan 1; pesan diterima melalui saluran dan diterjemahkan menggunakan blok dekoder. Pesan
yang didekodekan diterima oleh penerima. Oleh karena itu, kode memainkan peran penting
dalam komunikasi. Oleh karena itu, pemilihan kode yang optimal merupakan prasyarat dalam
teori komunikasi. Banyak kode populer yang tersedia, seperti ASCII EBCDIC, biner, atau kode
abu-abu.

Huffman code merupakan salah satu teknik kompresi yang ditemukan oleh David A. Huffman
pada tahun 1952. Huffman code adalah kode populer serta kode alamat variabel. Ini
memberikan kode ke simbol berdasarkan pentingnya kode. Ini memberikan kode yang lebih
panjang untuk simbol yang sangat langka dan kode pendek untuk simbol yang sering muncul.
Huffman code dibangun menggunakan pendekatan greedy.

Secara informal, algoritma pengkodean Huffman ditulis sebagai berikut:

Langkah 1: Buat daftar simbol dan urutkan menurut frekuensinya dalam urutan menaik.

Langkah 2: Pilih dua simbol yang memiliki frekuensi paling sedikit.

Langkah 3: Buat simpul baru. Tambahkan probabilitas simbol yang dipilih pada Langkah 2
dan beri label simpul baru dengan itu

Langkah 4: Ulangi Langkah 2 dan 3 sampai hanya satu simpul yang tersisa

Langkah 5: Untuk setiap simpul internal, mulailah menetapkan kode 0 untuk anak kiri dan 1
untuk anak kanan

Langkah 6: Untuk setiap simpul daun, buat kata kode dengan menelusuri kode dari akar ke
simpul daun yang mewakili setiap label.

Mari kita memahami konsep pengkodean Huffman dengan bantuan contoh berikut.

Hitunglah Huffman code untuk kalimat berikut:

BINA NUSANTARA ONLINE LEARNING

Algorithm Design and Analysis


Penyelesaian:

BINA NUSANTARA ONLINE LEARNING

Dari kalimat diatas kita akan mencari Huffman Code-nya. Berikut Langkah – langkahnya:

1) Membentuk tabel frekuensi

Tabel frekuensi dari frekuensi kemunculan karakter dalam sebuah file.

B I N A U S T R O L E G Sp
1 3 7 5 1 1 1 2 1 2 2 1 3

Hasil tersebut nantinya akan diurutkan menjadi berikut:

B U S T O G R L E I Sp A N
1 1 1 1 1 1 2 2 2 3 3 5 7

Pembentukan ini melihat urutan kemunculan kata

2) Membentuk Huffman Tree

Pembentukan Huffman Tree akan berdasarkan pada penggabungan kolom demi kolom.
Berikut simulasinya.

B U S T O G R L E I Sp A N
1 1 1 1 1 1 2 2 2 3 3 5 7

S T O G B, U R L E I Sp A N
1 1 1 1 2 2 2 2 3 3 5 7

Algorithm Design and Analysis


O G B, U S, T R L E I Sp A N
1 1 2 2 2 2 2 3 3 5 7

B, U S, T O, G R L E I Sp A N
2 2 2 2 2 2 3 3 5 7

O, G R L E I Sp B, U, S, T A N
2 2 2 2 3 3 4 5 7

L E I Sp B, U, S, T O, G, R A N
2 2 3 3 4 4 5 7

Algorithm Design and Analysis


I Sp B, U, S, T O, G, R L, E A N
3 3 4 4 4 5 7

B, U, S, T O, G, R L, E A I, Sp N
4 4 4 5 6 7

L, E A I, Sp N B, U, S, T, O, G, R
4 5 6 7 8

Algorithm Design and Analysis


I, Sp N B, U, S, T, O, G, R L, E, A
6 7 8 9

B, U, S, T, O, G, R L, E, A I, Sp, N
8 9 13

Algorithm Design and Analysis


I, Sp, N B, U, S, T, O, G, R, L, E, A
13 17

B, U, S, T, O, G, R, L, E, A, I, Sp, N
30

3) Membentuk Huffman Code

Setelah membentuk Huffman Tree maka proses selanjutnya adalah menentukan Huffman
Code. Pembentukan Huffman Code akan menggantikan nilai bit ASCII dari masing –
masing karakter dimana pemberian nilai akan dilihat dari jalur tree ke node tersebut kiri
bernilai 0 dan kanan bernilai 1.

Character ASCII Value Huffman Code


B 01000010 10000
U 01010101 10001
S 01010011 10010
T 01010100 10011
O 01001111 10100
G 01000111 10101
R 01010010 1011
L 01001100 1100
E 01000101 1101

Algorithm Design and Analysis


I 01001001 000
Sp 00100000 001
A 01000001 111
N 01001110 01

4) Menghitung compression ratio dan space saving.


𝚺(𝐛𝐢𝐭 𝐢𝐧 𝐀𝐒𝐂𝐈𝐈 × 𝐟𝐫𝐞𝐪.𝐨𝐟 𝐚𝐩𝐩𝐞𝐚𝐫𝐚𝐧𝐜𝐞)
Compression ratio = 𝚺(𝐛𝐢𝐭 𝐢𝐧 𝐇𝐮𝐟𝐟.𝐂𝐨𝐝𝐞 × 𝐟𝐫𝐞𝐪.𝐨𝐟 𝐚𝐩𝐩𝐞𝐚𝐫𝐚𝐧𝐜𝐞) = 𝟐𝟒𝟎 ∶ 𝟏𝟎𝟏

𝚺(𝐛𝐢𝐭 𝐢𝐧 𝐇𝐮𝐟𝐟.𝐂𝐨𝐝𝐞 × 𝐟𝐫𝐞𝐪.𝐨𝐟 𝐚𝐩𝐩𝐞𝐚𝐫𝐚𝐧𝐜𝐞)


Space saving = (𝟏 − ) × 𝟏𝟎𝟎%
𝚺(𝐛𝐢𝐭 𝐢𝐧 𝐀𝐒𝐂𝐈𝐈 × 𝐟𝐫𝐞𝐪.𝐨𝐟 𝐚𝐩𝐩𝐞𝐚𝐫𝐚𝐧𝐜𝐞)

𝟏𝟎𝟏
Space saving = (𝟏 − 𝟐𝟒𝟎) × 𝟏𝟎𝟎%

Space saving = 57,92%

2. Graph Coloring

Permasalahan yang berkaitan dengan pewarnaan peta wilayah, seperti peta belahan dunia telah
banyak menghasilkan hasil dalam teori graf. Saat peta diwarnai, dua wilayah dengan batas yang
sama biasanya diberi warna yang berbeda. Salah satu cara untuk memastikan bahwa dua daerah
yang berdekatan tidak pernah memiliki warna yang sama adalah dengan menggunakan warna
yang berbeda untuk setiap daerah. Namun, ini tidak efisien, dan pada peta dengan banyak
wilayah akan sulit untuk membedakan warna yang serupa. Sebaliknya, sejumlah kecil warna
harus digunakan bila memungkinkan. Pertimbangkan masalah menentukan jumlah paling
sedikit warna yang dapat digunakan untuk mewarnai peta sehingga daerah yang berdekatan
tidak pernah memiliki warna yang sama. Misalnya, untuk peta yang ditunjukkan di sebelah kiri
pada Gambar 1, empat warna cukup, tetapi tiga warna tidak cukup. Pada peta di sebelah kanan
pada Gambar 1, tiga warna sudah cukup (tetapi dua tidak).

Gambar 1. Two maps

Algorithm Design and Analysis


Gambar 2. Dua graph dari map gambar 1.

Setiap peta di pesawat dapat diwakili oleh grafik. Untuk mengatur korespondensi ini setiap
wilayah peta diwakili oleh sebuah simpul. Tepi menghubungkan dua simpul jika daerah yang
diwakili oleh simpul ini memiliki perbatasan yang sama. Dua daerah yang bersentuhan hanya
pada satu titik tidak dianggap berdekatan. Grafik yang dihasilkan disebut grafik ganda peta.
Omong-omong bagaimana grafik ganda peta dibangun, jelas bahwa setiap peta di pesawat
memiliki grafik ganda planar.

Masalah mewarnai daerah-daerah suatu peta sama dengan masalah mewarnai simpul-simpul
dari graf ganda sehingga tidak ada dua simpul bertetangga dalam graf ini yang memiliki warna
yang sama.

Definisi 1. Pewarnaan graf sederhana adalah pemberian warna pada setiap titik pada graf
sehingga tidak ada dua titik bertetangga yang diberi warna yang sama.

Graf dapat diwarnai dengan memberikan warna yang berbeda untuk setiap simpulnya. Namun,
untuk sebagian besar graf, pewarnaan dapat ditemukan yang menggunakan lebih sedikit warna
daripada jumlah simpul dalam graf. Berapa jumlah paling sedikit warna yang diperlukan?

Definisi 2. Bilangan kromatis suatu graf adalah jumlah warna paling sedikit yang diperlukan
untuk mewarnai graf tersebut

Teorema. Teorema empat warna. Bilangan kromatik graf planar tidak lebih dari empat

Teorema Empat Warna awalnya diajukan sebagai dugaan pada tahun 1850-an. Akhirnya
dibuktikan oleh ahli matematika Amerika Kenneth Appel dan Wolfgang Haken pada tahun
1976. Sebelum tahun 1976, banyak bukti yang salah diterbitkan, seringkali dengan kesalahan
yang sulit ditemukan. Selain itu, banyak upaya sia-sia dilakukan untuk membangun contoh
tandingan dengan menggambar peta yang membutuhkan lebih dari empat warna.
(Membuktikan Teorema Lima Warna tidak terlalu sulit;)

Mungkin bukti keliru yang paling terkenal dalam semua matematika adalah bukti yang salah
dari Teorema Empat Warna yang diterbitkan pada tahun 1879 oleh pengacara London dan
matematikawan amatir, Alfred Kempe. Matematikawan menerima buktinya sebagai benar

Algorithm Design and Analysis


sampai tahun 1890, ketika Percy Heawood menemukan kesalahan yang membuat argumen
Kempe tidak lengkap. Namun, alur penalaran Kempe ternyata menjadi dasar pembuktian yang
berhasil diberikan oleh Appel dan Haken. Bukti mereka bergantung pada analisis kasus per
kasus yang dilakukan oleh komputer. Mereka menunjukkan bahwa jika Teorema Empat Warna
salah, harus ada contoh tandingan dari salah satu dari sekitar 2000 jenis yang berbeda, dan
mereka kemudian menunjukkan bahwa tidak satu pun dari jenis ini ada. Mereka menggunakan
lebih dari 1000 jam waktu komputer dalam pembuktian mereka. Bukti ini menimbulkan banyak
kontroversi, karena komputer memainkan peran penting di dalamnya. Misalnya, mungkinkah
ada kesalahan dalam program komputer yang menyebabkan hasil yang salah? Apakah argumen
mereka benar-benar merupakan bukti jika itu bergantung pada apa yang bisa menjadi keluaran
komputer yang tidak dapat diandalkan?

Perhatikan bahwa Teorema Empat Warna hanya berlaku untuk graf planar. Graf nonplanar
dapat memiliki bilangan kromatik besar yang berubah-ubah,

Dua hal diperlukan untuk menunjukkan bahwa bilangan kromatik suatu graf adalah k. Pertama,
kita harus menunjukkan bahwa graf dapat diwarnai dengan k warna. Ini dapat dilakukan dengan
membuat pewarnaan seperti itu. Kedua, kita harus menunjukkan bahwa graf tidak dapat
diwarnai dengan menggunakan kurang dari k warna.

Contoh:

Contoh berikut mengilustrasikan bagaimana bilangan kromatik dapat ditemukan.

Perhatikan graph berikut:

Berikut merupakan tahapnnya:

1) Menentukan degree dari masing – masing node

A: 3

B: 2

Algorithm Design and Analysis


C: 2

D: 3

2) Urutkan berdasarkan frequency degree tertinggi

A: 3

D: 3

B: 2

C: 2

3) Kemudian berikan pewarnaan dimulai dari node dengan degree tertinggi dan lakukan
pengecekan apakah warna pada node tersebut sama dengan warna pada node lain. Warna
yang diberikan adalah warna terkecil yang tersedia

A: 1

D: 2 (karena D terhubung dengan node A maka warna terkecil yang tersedia adalah 2)

B: 3 (karena B terhubung dengan node A dan D)

C: 3 (karena C terhubung dengan node A dan D tapi tidak terhubung dengan node B)

4) Setelah proses tersebut maka kita dapat menentukan nilai kromatisnya dimana nilai
kromatis merupakan jumlah kombinasi warna yang digunakan. Dalam hal ini nilai kromatis
graph diatas adalah 3.

Algorithm Design and Analysis


KESIMPULAN

Huffman tree adalah pohon biner yang meminimalkan panjang jalur berbobot dari akar ke daun
dengan bobot yang telah ditentukan. Aplikasi terpenting dari Huffman tree adalah Huffman code.

Huffman code adalah skema pengkodean panjang variabel bebas awalan yang optimal yang
memberikan string bit ke simbol berdasarkan frekuensinya dalam teks yang diberikan. Ini dicapai
dengan konstruksi serakah dari pohon biner yang daunnya mewakili simbol alfabet dan tepinya
diberi label dengan 0 dan 1.

Algorithm Design and Analysis


DAFTAR PUSTAKA

Ezhilarasu, P., Krishnaraj, N., & Babu, V. S. (2015). Huffman Coding for Lossless Data
Compression-A Review. Middle-East Journal of Scientific Research, 23(8), 1598–1603.
https://doi.org/10.5829/idosi.mejsr.2015.23.08.22429
Rosen, K. (2006). Discrete mathematics and its applications. McGraw Hill Higher Education.
Sridhar, S. (2015). Design and Analysis of Algorithms. Oxford University Press.
Graph Coloring Problem - Backtracking, www.youtube.com/watch?v=052VkKhIaQ4
Graph Theory: 64. Vertex Colouring, www.youtube.com/watch?v=4FE79y_JkCE
How Computers Compress Text: Huffman Coding and Huffman Trees,
www.youtube.com/watch?v=JsTptu56GM8
Huffman Coding - Greedy Method, www.youtube.com/watch?v=co4_ahEDCho
Introduction to Graph Colouring, www.youtube.com/watch?v=RSSfO0lnEp8

Algorithm Design and Analysis

Anda mungkin juga menyukai