Top Banner
Topic 4 Dictionary Method Aditya Wikan M., S.Kom Dictionary Method Kompresi Data
30

kompresi_04

Oct 31, 2015

Download

Documents

Dwi Prasetiyo
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: kompresi_04

Topic 4Dictionary Method

Aditya Wikan M., S.Kom

Dictionary Method

Kompresi Data

Page 2: kompresi_04

Dictionary Method

� Dictionary method / metode kamus menggunakan sebuah kamus yang disusun untuk menentukan codewordkompresi dan dekompresi (hampir sama dengan symbol table)dengan symbol table)� Disebut juga dictionary coding (Zeeh:

2003)

Page 3: kompresi_04

Dictionary Method

� Teknik dictionary coding bergantung pada pengamatan bahwa terdapat korelasi antara bagian-bagian data yang akan dikompresi:Ada pola yang muncul kembali / berulang � Ada pola yang muncul kembali / berulang (recurring patterns)� Ide dasarnya adalah mengganti

perulangan tersebut dengan referensi (yang seharusnya lebih pendek) ke kamus yang menyimpan bentuk aslinya

Page 4: kompresi_04

Static Dictionary

� Kamus ditentukan terlebih dahulu� Mengandung simbol yang biasanya

muncul berulang-ulang, baik dalam bentuk frase, digram, atau n-gramfrase: oleh karena itudigram: ng, nj, au, eu, ai, 3-gram: nya, itu, lah� Membutuhkan pengetahuan mengenai

teks yang akan dikompresi, misal teks Bahasa Indonesia.

Page 5: kompresi_04

Static Dictionary

� Static dictionary hanya menghasilkan sedikit kompresi terhadap data yang bervariasi, malah bisa menimbulkan perbesaran ukuranMisal dictionary semua digram dan 3-gram � Misal dictionary semua digram dan 3-gram bahasa Indonesia, digunakan untuk mengkompresi teks bahasa Inggris �tidak optimal

Page 6: kompresi_04

Semi-Adaptive Dictionary

� Menghindari masalah pada static dictionary� Data input dibaca dahulu seluruhnya,

kemudian dilihat pola data yang ada, dan disusun kamusnyadisusun kamusnya� Dua kali kerja: membuat kamus dahulu

baru mengkompres data� Membutuhkan metode lain untuk

membantu menyusun kamus yang optimal (analisis heuristik dsb.)

Page 7: kompresi_04

Adaptive Dictionary

� Data input dibaca sambil menyusun kamus, sambil melakukan kompresi� Tidak perlu menyimpan kamus bersama

dengan data hasil kompresi� Decoder (dekompresor) bisa menyusun

kamus dengan cara yang sama seperti encoder (kompresor)� Metode inilah yang paling banyak dipakai

saat ini (Zeeh: 2003, Munro)

Page 8: kompresi_04

Algoritma Lempel-Ziv

� Adalah algoritma kompresi data lossless, dikembangkan oleh Abraham Lempel dan Jacob Ziv� Istilah Lempel-Ziv biasanya merujuk pada

sebuah keluarga algoritma yang terbagi sebuah keluarga algoritma yang terbagi menjadi dua keluarga besar, diberi nama sesuai tahun pengajuan paper mereka, yaitu 1977 (LZ77) dan 1978 (LZ88)� Algoritma dictionary coding yang banyak

dipakai

Page 9: kompresi_04

Algoritma Lempel-Ziv – The Family

Page 10: kompresi_04

LZ77 - Principle

� Dikenal juga dengan algoritma sliding window.� Mengintip rangkaian data melalui sebuah

jendela geser sepanjang n data� Jendela tersebut kemudian dibagi menjadi

2 bagian:Looakhead buffer sepanjang L dataSearch buffer (S) sepanjang (n – L) data� Terapkan algoritma LZ77 pada jendela

tersebut

Page 11: kompresi_04

LZ77 - Principle

� Search buffer digunakan sebagai kamus� Ukuran kedua buffer menjadi parameter

untuk implementasi. � Asumsi: pola dalam teks akan muncul

sepanjang range dari search buffer.

Page 12: kompresi_04

LZ77 – Encoding Algorithm

Output code: sebuah tupel yang terdiri dari:(Posisi, panjang, simbol berikutnya)

Page 13: kompresi_04

LZ77 – Encoding Sample

NOT USED!!!TO UNDERSTAND MUST READTHE ORIGINAL LEMPEL-ZIV PAPER FIRST

Page 14: kompresi_04

LZ77 – Decoding Sample

NOT USED!!!TO UNDERSTAND MUST READTHE ORIGINAL LEMPEL-ZIV PAPER FIRST

Page 15: kompresi_04

LZ77 – Encoding Sample

Page 16: kompresi_04

LZ77 – Decoding Algorithm

LZ77 bersifat asimetrik, encoding lebih sulit daripada decoding karena harus menemukan rangkaian simbol terpanjang yang cocok

Page 17: kompresi_04

LZ77 – Decoding Sample

Page 18: kompresi_04

LZ77 – Applications� Tidak seperti LZ78, LZ77 belum dipatenkan.

Oleh karena itu banyak sekali turunan LZ77 (LZSS, LZB, LZH, LZR, LZFG, LZMA, Deflate) yang digunakan misal:� Deflate adalah kombinasi LZSS dengan

Huffman encoding dan memakai ukuran window Huffman encoding dan memakai ukuran window 32kB.� This algorithm is open source and used in what

is widely known as ZIP compression (although the ZIP format itself is only a container format, like AVI and can be used with several algorithms), and by the formats PNG, TIFF, PDF and many others

Page 19: kompresi_04

LZ78 - Principle� Membaca input string kemudian mendeteksi

apakah simbol yang dibaca sudah ada dalam kamus, jika tidak:� Menyimpan pola simbol berupa satu karakter

atau multi karakter yang distinct (tidak ada yang atau multi karakter yang distinct (tidak ada yang sama) ke dalam kamus� Menghasilkan dua elemen codeword:� Sebuah indeks yang merujuk pada kamus untuk

entry terpanjang yang cocok dan tersimpan di dalam kamus (matching dictionary entry)� dan sebuah simbol pertama berikutnya yang

tidak cocok (non-matching symbol)

Page 20: kompresi_04

LZ78 - Principle

� Output:

Page 21: kompresi_04

LZ78 – Algorithm

Page 22: kompresi_04

LZ78 – Encoding Sample

Page 23: kompresi_04

LZ78 – Decoding Sample

Page 24: kompresi_04

LZ78 – What’s transmitted?

Page 25: kompresi_04

Perbandingan Hasil LZ77 & LZ78

Page 26: kompresi_04

LZW - Principle� Adalah pengembangan dari LZ78 yang oleh

Terry Welch pada 1984� LZW (Lempel-Ziv-Welch) uses a dictionary with

4096 entries. In the beginning the entries 0-255 refer to individual bytes, and the rest 256-4095 refer to individual bytes, and the rest 256-4095 refer to longer strings� LZW compression replaces strings of characters

with single codes. It does not do any analysis of the incoming text. Instead, it just adds every new string of characters it sees to a table of strings. Compression occurs when a single code is output instead of a string of characters.

Page 27: kompresi_04

LZW – Algorithm

Page 28: kompresi_04

LZW – Encoding Sample

Page 29: kompresi_04

LZW – Decoding Sample

Page 30: kompresi_04

That’s all for today

Terima kasih ☺