• Minggu, 29 Mei 2011

      Lemvel Ziv Coding

      Algoritma LZW dikembangkan dari metode kompresi yang dibuat oleh Ziv dan Lempel pada tahun 1977. Algoritma ini melakukan kompresi dengan menggunakan dictionary, di mana fragmen-fragmen teks digantikan dengan indeks yang diperoleh dari sebuah “kamus”. Prinsip sejenis juga digunakan dalam kode Braille, di mana kode-kode khusus digunakan untuk merepresentasikan kata-kata yang ada. Pendekatan ini bersifat adaptif dan efektif karena banyak karakter dapat dikodekan dengan mengacu pada string yang telah muncul sebelumnya dalam teks. Prinsip kompresi tercapai jika referensi dalam bentuk pointer dapat disimpan dalam jumlah bit yang lebih sedikit dibandingkan string aslinya. Algoritmanya sebagai berikut:
      1. Dictionary diinisialisasi dengan semua karakter dasar yang ada :
      2. P = karakter pertama dalam stream karakter.
      3. C = karakter berikutnya dalam stream karakter.
      4. Apakah string (P + C) terdapat dalam dictionary ?
      Jika ya, maka P = P + C (gabungkan P dan C menjadi string baru).
      Jika tidak, maka :

      - Output sebuah kode untuk menggantikan string P.
      - Tambahkan string (P + C) ke dalam dictionary dan berikan nomor/kode berikutnya yang belum digunakan dalam dictionary untuk string tersebut.
      - P = C.
      5. Apakah masih ada karakter berikutnya dalam stream karakter ?
      Jika ya, maka kembali ke langkah 2.
      Jika tidak, maka output kode yang menggantikan string P, lalu terminasi proses (stop).

      Proses dekompresi pada LZW dilakukan dengan prinsip yang sama seperti proses kompresi. Pada awalnya, dictionary diinisialisasi dengan semua karakter dasar yang ada. Lalu pada setiap langkah, kode dibaca satu per satu dari stream kode, dikeluarkan string dari dictionary yang berkorespondensi dengan kode tersebut, dan ditambahkan string baru ke
      dalam dictionary. Metode LZW yang diterapkan dalam penelitian ini bertipe dinamik, dimana hanya dilakukan satu kali pembacaan (one-pass) terhadap file yang akan dikompresi. Pengkodean data dilakukan secara on the fly, bersamaan dengan proses penambahan string baru ke dalam dictionary. Algoritma dekompresinya sebagai berikut:
      1. Dictionary diinisialisasi dengan semua karakter dasar yang ada :
      2. CW = kode pertama dari stream kode (menunjuk ke salah satu karakter dasar).
      3. Lihat dictionary dan output string dari kode tersebut (string.CW) ke stream karakter.
      4. PW = CW; CW = kode berikutnya dari stream kode.
      5. Apakah string.CW terdapat dalam dictionary ?
      Jika ada, maka :
      - output string.CW ke stream karakter
      - P= string.PW
      - C = karakter pertama dari string.CW
      - tambahkan string (P+C) ke dalam dictionary
      Jika tidak, maka :
      - P =string.PW
      - C = karakter pertama dari string.PW
      - output string (P+C) ke stream karakter dan tambahkan string tersebut ke dalam dictionary (sekarang berkorespondensi dengan CW);
      6. Apakah terdapat kode lagi di stream kode ?
      Jika ya, maka kembali ke langkah 4.
      Jika tidak, maka terminasi proses (stop).

      0 komentar:

      Posting Komentar

      Subscribe To RSS

      Sign up to receive latest news