Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman...

37
[TTG4J3] KODING DAN KOMPRESI Prodi S1 Teknik Telekomunikasi Fakultas Teknik Elektro Universitas Telkom Oleh : Ledya Novamizanti Astri Novianty

Transcript of Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman...

Page 1: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

[TTG4J3] KODING DAN KOMPRESI

Prodi S1 TeknikTelekomunikasiFakultasTeknik ElektroUniversitasTelkom

Oleh :Ledya Novamizanti

Astri Novianty

Page 2: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

Optimal code pertama yang dikembangkan olehDavid Huffman pada tahun 1952, sebagai bagiandari tugas kelas ketika menempuh pendidikan Ph.Ddi MITKelas tersebut yang pertama kalinya di bidang teoriinformasi dan diajarkan oleh Robert FanoKode Huffman merupakan binary prefix code yang optimumPembentukan diagram pohon dari Huffman coding dimulai dari daun ke akar (bottom‐top)

Huffman Coding[TTG4J3] Koding dan Kompresi2

Page 3: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

Untuk source S = {x1, …, xn}; probabilitas P = {p1, …, pn}; codewords {c1, …, cn} dengan panjang {l1, …, ln}, terdapat optimal binary prefix code dengankarakteristik :Teorema :a) Jika pj > pi, maka lj≤ lib) Dua codeword dari dua simbol dg probabilitas

terendah mempunyai panjang yg samac) Dua codeword terpanjang identik kecuali pada digit 

terakhir

Huffman Coding[TTG4J3] Koding dan Kompresi3

Page 4: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

Kode Huffman tidak unik, bergantung pada :Aturan (rule) ascending/descending order yang digunakan di dalam algoritmanyaBagaimanamemilih probabilitas terendah saatmembangun diagram pohon Huffman (Huffman tree)

Aturan tersebut bersifat opsional, tetapi harus konsisten diterapkanPanjang rata‐rata codeword selalu sama untuk tree berbeda

Huffman Coding[TTG4J3] Koding dan Kompresi4

Page 5: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

1. Urutkan simbol/karakter berdasarkan probabilitasnyaJika probabilitas sama, urutkan simbol berdasarkan indeks simboltersebut

2. Ambil dua simbol dengan probabilitas terkecil, gabungkanmenjadi simbol baru, dan jumlahkan probabilitasnya

3. Urutkan kembali simbol‐simbol seperti langkah 1 dengan menyertakan simbol baru yang diperoleh dari langkah 2

Simbol baru ditempatkan di bawah/ di kiri simbol lama jika probabilitasnya sama

4. Ulangi langkah 2 dan 3 hingga diperoleh jumlahprobabilitas = 1.0

5. Tentukan codewords setiap simbol dengan penelusuran bit

Huffman Coding[TTG4J3] Koding dan Kompresi5

Page 6: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

Dapat menggunakan representasi diagram panah, atau pohon binerProbabilitas dan indeks huruf dapat diurut menaik (ascending) atau pun menurun (descending), tetapi harus konsisten di salah satu pilihan saat melakukan codingDi kelas ini, akan digunakan skema descending untuk skema diagram panah, dan ascending untuk pohon biner

Huffman Coding[TTG4J3] Koding dan Kompresi6

Page 7: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

Simbol diurut berdasarkan probabilitasnya secara descending dari atas ke bawah

Jika probabilitas samamaka :Simbol diurut berdasarkan indeks karakter secaradescending dari atas ke bawah

Simbol baru ditempatkan di bawah simbol lama

Level atas diberi bit ‘1’, level bawah diberi bit ‘0’

Huffman Coding[TTG4J3] Koding dan Kompresi7

Page 8: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

Simbol diurut berdasarkan probabilitasnya secara ascending dari kiri ke kanan

Jika probabilitas samamaka :Simbol diurut berdasarkan indeks karakter secaraascending dari kiri ke kanan

Simbol baru ditempatkan di kiri simbol lama

Pembentukan pohon biner dimulai dari daun ke akar

Anak kiri diberi bit ‘0’, anak kanan diberi bit ‘1’, 

Huffman Coding[TTG4J3] Koding dan Kompresi8

Page 9: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

Rancanglah kode Huffman untukA = {a1, a2, a3, a4, a5}, dengan probabilitas kemunculan P(a1) = 0.4, P(a2)=P(a3) = 0.2, P(a4) = P(a5) = 0.1 menggunakanrepresentasi :a. Diagram panahb. Pohon Biner

Huffman Coding[TTG4J3] Koding dan Kompresi9

Page 10: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

a. Pencarian Huffman code menggunakan diagram panah (cara 1)

Huffman Coding[TTG4J3] Koding dan Kompresi10

Page 11: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

a. Pencarian Huffman code menggunakan diagram panah (cara 2)

Huffman Coding[TTG4J3] Koding dan Kompresi11

Page 12: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

b. Pencarian Huffman code menggunakan pohon biner

Huffman Coding[TTG4J3] Koding dan Kompresi12

Page 13: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

Dari kode Huffman padaContoh 1, hitung :a. Average lengthb. Entropyc. Redundancyd. Efficiencye. Variansi kode

Huffman Coding[TTG4J3] Koding dan Kompresi13

Page 14: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

a. Average length

b. Entropy

H = ‐ (0.4 log2 0.4 + 2 × 0.2 log2 0.2 + 2 × 0.1 log2 0.1 ≈ 2.12 bits/symbol

c. Redundancy, R=L‐H=2.2 ‐ 2.122 = 0.08 bits/symbol 

L = 0.4×1 + 0.2×2 + 0.2×3 + 0.1×4 + 0.1×4 = 2.2 bits/symbol

Huffman Coding[TTG4J3] Koding dan Kompresi14

Page 15: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

Average Length (L) 2.2 bits/symboldan Entropy (H) 2.12 bits/symbol

d. Efficiency

e. Variansi

Huffman Coding[TTG4J3] Koding dan Kompresi15

Page 16: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

Diketahui pesan string ada ada sajaa. Tentukan kode Huffman dari string tersebutb. Hitung average length dan entropyc. Hitung redundancy koded. Hitung variansi kodee. Hitung efficiencyf. Hitung rasio kompresi

Huffman Coding[TTG4J3] Koding dan Kompresi16

Page 17: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

Kode Huffman dengan variansi panjangcodewords minimum, sehingga lebih optimal dalam proses transmisi dataAverage length pada MVHC (Minimum Variance Huffman Coding ) sama dengan average length SHC (Standard Huffman Coding)

Huffman Coding[TTG4J3] Koding dan Kompresi17

Page 18: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

1. Urutkan simbol/karakter berdasarkan probabilitasnyaJika probabilitas sama, urutkan simbol berdasarkan indeks simboltersebut

2. Ambil dua simbol dengan probabilitas terkecil, gabungkanmenjadi simbol baru, dan jumlahkan probabilitasnya

3. Urutkan kembali simbol‐simbol seperti langkah 1 dengan menyertakan simbol baru yang diperoleh dari langkah 2

Simbol baru ditempatkan di atas/ di kanan simbol lama jika probabilitasnya sama

4. Ulangi langkah 2 dan 3 hingga diperoleh jumlahprobabilitas = 1

5. Tentukan codewords setiap simbol dengan penelusuran bit

Huffman Coding[TTG4J3] Koding dan Kompresi18

Page 19: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

Rancanglah kodeMinimum Variance Huffman untukA = {a1, a2, a3, a4, a5}, dengan probabilitaskemunculan P(a1) = 0.4, P(a2)=P(a3) = 0.2, P(a4)=P(a5)= 0.1 menggunakan representasi :a. Diagram panahb. Pohon Biner

Huffman Coding[TTG4J3] Koding dan Kompresi19

Page 20: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

a. Pencarian Minimum Variance Huffman Code menggunakan diagram panah (cara 1)

Huffman Coding[TTG4J3] Koding dan Kompresi20

Page 21: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

a. Pencarian Minimum Variance Huffman Code menggunakan diagram panah (cara 2)

Huffman Coding[TTG4J3] Koding dan Kompresi21

Page 22: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

b. Pencarian Minimum Variance Huffman Code menggunakan pohon biner

Huffman Coding[TTG4J3] Koding dan Kompresi22

Page 23: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

Dari kodeMinimum Variance Huffman padaContoh 3,  hitung :

a. Average lengthb. Entropyc. Redundancyd. Efficiencye. Variansi

Huffman Coding[TTG4J3] Koding dan Kompresi23

Page 24: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

a. Average length

b. Entropy

H = ‐ (0.4 log2 0.4 + 2 × 0.2 log2 0.2 + 2 × 0.1 log2 0.1 ≈ 2.12 bits/symbol

c. Redundancy, R=L‐H=2.2 ‐ 2.122 = 0.08 bits/symbol

L = 0.4×2 + 2×(0.2×2) + 2×(0.1×3) = 2.2 bits/symbol

Huffman Coding[TTG4J3] Koding dan Kompresi24

Page 25: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

Average Length (L) 2.2 bits/symboldan Entropy (H) 2.12 bits/symbol

d. Efficiency

e. Variansi

Huffman Coding[TTG4J3] Koding dan Kompresi25

Page 26: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

Terdapat string manamakanmalam (asumsi indeksspasi lebih dulu dari huruf ‘a’)

a. Cari kode Huffman nya (menggunakan skemapanah dan pohon biner)

b. Hitung average length dan redundancy nya

c. Cari Minimum Variance Huffman Coding nya

d. Hitung rasio kompresi dan variansi kodemenggunakan SHC danMVHC

Huffman Coding[TTG4J3] Koding dan Kompresi26

Page 27: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

Constraint pada Kode Huffman adalah panjangcodeword (banyaknya bit/codeword), bukan nilaibit‐nya (‘0’ atau ‘1’)

Sangat mungkin diperoleh representasi kodeHuffman yang berbeda jika kesepakatan padaalgoritma diubah (asal konsisten)

Misal: setelah simbol diurutkan, simbol atas diberibit ‘0’, simbol bawah bit ‘1’

Huffman Coding[TTG4J3] Koding dan Kompresi27

Page 28: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

Jika jumlah simbol pada source‐nya kecil, danprobabilitas kemunculan antara simbol sangattimpang, maka nilai probabilitas maksimum (pmax) bisa sangat besar dan kode huffman yang dihasilkan menjadi tidak efisien

Alternatif solusi: Extended Huffman Coding

Huffman Coding[TTG4J3] Koding dan Kompresi28

Page 29: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

Pada extended huffman coding, sebuah codeword tidak merepresentasikan satu simbol, melainkansekumpulan simbol (lebih dari 1) atau block of symbols

Bertujuan untuk mendapatkan nilai average length yang mendekati entropy

Misal m=jumlah simbol pada source, n=jumlahrangkaian pada tiap simbol. Maka diperoleh simbolbaru sebanyak mn, yang akan dicari codewordnya

Huffman Coding[TTG4J3] Koding dan Kompresi29

Page 30: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

Diketahui sebuah source data A = {a1, a2, a3}, denganP(a1)=0.8, P(a2) = 0.02, P(a3) = 0.18. Entropy source = 0.816 bits/symbol. 

a. Rancanglah kode Huffman dari source data

b. Hitung redundancy dari kode Huffman

c. Rancanglah kode extended Huffman dari source data

d. Hitung redundancy dari kode extended Huffman

Huffman Coding[TTG4J3] Koding dan Kompresi30

Page 31: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

Diketahui sebuah source data A = {a1, a2, a3}, dengan P(a1)=0.8, P(a2) = 0.02, P(a3) = 0.18. Entropy source = 0.816 bits/symbol. 

Huffman code yang dihasilkan:

Average length                                          

L = 0.8×1 + 0.2×2 = 1.2 bits/symbol

Redundancy = L – H = 0.384 bits/symbol ( )

Huffman Coding[TTG4J3] Koding dan Kompresi31

Page 32: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

A = {a1, a2, a3}, dengan P(a1) = 0.8, P(a2) = 0.02, P(a3) = 0.18.Dapat dibuat codeword yang merepresentasikanrangkaian 2 simbolKarena banyaknya simbol pada source, m=3, makaakan diperoleh 32 = 9 simbol baru yang akan dicaricodewordsnya

Huffman Coding[TTG4J3] Koding dan Kompresi32

Page 33: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

Extended Huffman Code :

Huffman Coding[TTG4J3] Koding dan Kompresi33

Page 34: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

Average length

L = 0.64×1 + 0.016×5 + 0.144×2 + 0.016×6 + 0.0004×8 + 0.0036×7 + 0.144×3 + 0.0036×8 + 0.0324×4         = 1.7228 bits/symbol

Setiap simbol dalam extended, bersesuaian dengan 2 simbol darisimbol aslinya.Sehingga average length dari kodeaslinya, L = 1.7228 /2 = 0.8614 bits/symbol

Huffman Coding[TTG4J3] Koding dan Kompresi34

Page 35: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

Average length Extended HC = 0.8614 bits/symbolEntropy source = 0.816 bits/symbolMaka :Redundancy = L – H= 0.8614 – 0.816 = 0.045 bits/symbol ( )Bandingkan dengan Redundancy SHC/MVHC 0.384 bits/symbol ( )

Huffman Coding[TTG4J3] Koding dan Kompresi35

Page 36: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah

[TTG4J3] Koding dan Kompresi Huffman Coding

1. Adam Drozdek, Elements of Data Compression, Thomson Brooks/Cole, 2002

2. Khalid Sayood, Introduction to Data Compression, Academic Press, 2000.

3. T.M. Cover, J.A. Thomas, Elements of Information Theory, John Wiley&Sons.

4. M. Nelson and J.‐L. Gailly. The Data Compression Book. M&T Books, CA, 1996.

5. D. Salomon. Data Compression: The Complete Reference. Springer, 1998.

36

Page 37: Ledya Novamizanti AstriNovianty ProdiS1 ... · pohon biner [TTG4J3] KodingdanKompresi. Huffman Coding. 6 Simbol diurut berdasarkan probabilitasnya secara descendingdari atas ke bawah