BAB 2

TINJAUAN PUSTAKA

2.1 Data

Data adalah keterangan yang benar dan nyata atau dengan kata lain adalah catatan atas kumpulan fakta yang mendeskripsikan simbol, grafik, gambar, kata, angka, huruf, objek ataupun kondisi. Data merupakan bentuk jamak dari datum, berasal dari bahasa latin yang artinya “sesuatu yang diberikan”. Data terkadang dipandang sebagai

bentuk terendah dari informasi (Vardiansyah, D., 2008).

Istilah data dan file silih berganti digunakan ataupun secara bersama-sama. File adalah pengarsipan dalam suatu media yang terdiri dari kumpulan karakter dan didokumentasikan dalam bentuk digital pada komputer. Sehingga, sering sekali istilah file ataupun data silih berganti digunakan untuk mengacu pada objek yang sama. Penggunaan istilah “data teks” atau “file teks” sama-sama mengacu kepada objek yang sama, perbedaan pengertian antara keduanya tersebut tidak begitu jelas. Namun, istilah data biasanya digunakan untuk mendeskripsikan apa yang menjadi isi suatu file. Berbagai jenis data antara lain: data gambar, data teks, data suara, dll.

Di dalam ilmu komputer penggunaan istilah tipe data juga digunakan. Merupakan penjelasan bagaimana data disimpan ataupun diolah oleh komputer. Tipe data sederhana melingkupi integer, real, boolean, character. Tipe data sederhana majemuk melingkupi string. Struktur data melingkupi array dan record. Struktur data majemuk melingkupi stack, queque, list, multilist, pohon biner dan graph (Wahyudi, B., 2004).

Pemakaian tipe data yang sesuai di dalam proses pemrograman akan menghasilkan algoritma yang jelas dan tepat, sehingga menjadikan program secara keseluruhan lebih efisien dan sederhana.

Universitas Sumatera Utara

2.2 Kompresi Data

Teori Informasi adalah cabang ilmu matematika yang melibatkan penghitungan informasi, memperlihatkan bagaimana cara untuk mengukur informasi. Sebuah penelitian yang dipublikasikan tahun 1948 oleh Claude E. Shannon dengan judul “A mathematical theory of communication” menjadi asal mula lahirnya Teori Informasi. Sedangkan teori kompresi mengacu kepada Teori Informasi sebagai landasan dasar teori.

Solomon, D. (2007, hal: 2) mengemukakan definisi kompresi data adalah proses yang mengkonversi sebuah masukan berupa aliran data (the source atau data asli mentah) menjadi suatu aliran data lain (the output, aliran bit, atau aliran sudah dikompres) yang memiliki ukuran lebih kecil. Aliran data (stream) dapat berupa sebuah file atau buffer pada memori. Data dalam konteks kompresi data melingkupi segala bentuk digital dari informasi, yang dapat diproses oleh sebuah program komputer. Bentuk dari informasi tersebut secara luas dapat diklasifikasikan sebagai teks, suara, gambar dan video.

2.2.1 Konsep

Kompresi

data

memungkinkan

sebuah

data

dengan

suatu

metode

dapat

direpresentasikan ke dalam bentuk yang memiliki bit-bit (satuan terkecil pembentuk data) lebih kecil, dikenal dengan istilah encoding. Sebaliknya, dekompresi data juga memungkinkan wujud “representasi” tersebut dikembalikan ke wujud semula, dikenal dengan istilah decoding. Bagian algoritma yang melakukan encoding dinamakan encoder dan yang melakukan decoding dinamakan decoder.

Suatu algoritma kompresi memiliki fungsi encoding dan decoding sekaligus. Namun pada implementasinya, implementor-lah yang menentukan bagian encoder ataukah decoder yang menentukan aksi encoding atau decoding yang dipilih dan diterapkan terhadap suatu data.

Universitas Sumatera Utara

M.Input Original Data/File Kompresi Output Coded Data/File Input Coded Data/File Dekompresi Output Original Data/File Gambar 2. “yg” sebagai pengganti kata “yang” dan “cth” sebagai pengganti kata “contoh”. cn) dan setiap simbol tersebut dinamakan codeword. Dalam kompresi data. s2. Bentuk representasi dasar dari data adalah American Standard Code for Information Interchange (ASCII) terdiri atas sebuah himpunan yang memiliki panjang tetap (fixed length) untuk setiap codeword (yaitu 8 bit). Hal ini secara tidak sadar dimanfaatkan dalam kehidupan sehari-hari. 2006) Konsep utama dalam kompresi terletak pada eliminasi redudansi. Misal S = (s1. contohnya adalah penggunaan singkatan dalam tulisan..1 Perbandingan kode fixed length dengan variable length Representasi Simbol A B C D E Kode ASCII (fixed length) 0100 0001 0100 0010 0100 0011 0100 0100 0100 0101 Jumlah Prefix Code bit 8 8 8 8 8 (variable length) 0 100 101 110 111 Jumlah bit 1 3 3 3 3 Universitas Sumatera Utara . Kita sudah tidak asing dengan penggunaan “&” sebagai pengganti kata “dan”. sn) adalah himpunan alfabet dari data/file. Permasalahan dalam kompresi data adalah bagaimana menemukan metode yang efisien untuk menghilangkan redundansi dari berbagai tipe data serta metode untuk membentuk kembali wujud semula.1 Proses encoding dan decoding (Pu. c2. I. Representasi digital dari simbol-simbol himpunan tersebut dinamakan code C = (c1. setiap panjang dari codeword tersebut diubah dengan panjang yang tidak tetap (variable length). …. …. Tabel 2.

AABBBA Algoritma Kompresi 000001101101100 000001101101100 Algoritma Dekompresi AABBBA Gambar 2. Hal ini disebabkan karakteristik dan pola susunan tiap data berbeda-beda. 2006) b. Berbagai model matematika dalam menemukan redundansi dalam data tertentu menyebabkan munculnya aneka ragam algoritma kompresi data. Kompresi Lossy Algoritma kompresi tergolong lossy jika tidak memungkinkan data yang sudah dikompres dapat direkonstuksi kembali persis sesuai dengan data original. I. sebuah perkiraan yang mendekati keadaan original dalam membangun kembali data merupakan hal yang diperlukan untuk mencapai keefektifan kompresi. yaitu kompresi Lossless dan Lossy. Hal ini memanfaatkan keterbatasan panca indera manusia.2.2 Klasifikasi Algoritma Kompresi Dalam kompresi data. spreadsheet dan lain-lain.2. Huffman. Adapun beberapa algoritma yang tergolong dalam jenis ini adalah algoritma Deflate. Maka. tidak ada algoritma yang cocok untuk semua jenis data. M. dan Arithmetic Coding. Kehilangan detil-detil yang tidak berarti dapat diterima pada waktu proses kompresi. Universitas Sumatera Utara . a. teks. Terdapat dua golongan besar pada teknik (algoritma) kompresi ketika berhadapan dengan kemungkinan dalam merekonstruksi kembali data yang telah dikompres menjadi data original. Contoh data yang cocok adalah gambar medis. program. Run Length Coding.2 Algoritma kompresi Lossless (Pu. LZW. Teknik ini menjamin tidak ada kehilangan sedikitpun detil atau kerusakan pada data. Kompresi Lossless Algoritma kompresi tergolong lossless jika memungkinkan data yang sudah dikompres dapat direkonstruksi kembali persis sesuai dengan data original..

Hal sebaliknya berlaku kepada simbol dengan probabilitas kemunculan yang lebih rendah. Kemudian menggunakan kode sebagai tanda pengenal yang merujuk kepada pola perulangan. Algoritma kompresi berbasis statistik Algoritma kompresi berbasis statistik. Basis dictionary menggunakan suatu pengkodean sebagai pengganti dari sekumpulan simbol (Nelson. b. Shannon Fano. 3. CELP. atau disebut juga berbasis Entropy. Algoritma kompresi berbasis dictionary Algoritma kompresi berbasis dictionary umumnya membandingkan pola bagian data yang akan diproses dengan bagian data yang sudah diproses sebelumnya. 2006) Kompresi Lossless umumnya diimplementasikan menggunakan salah satu dari dua jenis pemodelan yang berbeda.Contoh data yang cocok adalah gambar. Adaptive Huffman. Arithmetic dan lain-lain.1415926 Algoritma Kompresi 0001100111001 0001100111001 Algoritma Dekompresi 3. a. Basis statistik menciptakan himpunan codeword baru untuk tiap-tiap simbol berdasarkan probabilitas kemunculan simbol. yaitu berdasarkan statistik atau dictionary. M.3 Algoritma kompresi Lossy (Pu. suara dan video.. Contoh algoritma kompresi berbasis dictionary adalah algoritma varian Lempel-Ziv (LZ). Adapun beberapa algoritma yang tergolong dalam jenis ini adalah algoritma Wavelet Compression. MPEG-1 dan WMA. et al. 1996).14 Gambar 2. M. JPEG. Deflate dan lain-lain. Universitas Sumatera Utara . I. umumnya memiliki konsep memberikan panjang codeword lebih pendek kepada simbol dengan probabilitas kemunculan yang lebih tinggi. Contoh algoritma kompresi berbasis statistik adalah Algoritma Huffman.

Teknik kompresi yang dikembangkan dalam dokumen tersebut bernama Lempel-Ziv 77 (LZ77).3 Algoritma LZ77 Penelitian pada kompresi data hingga tahun 1977 berkonsentrasi kepada cara-cara mengembangan metode Huffman. sebagai dictionary yang berisi rangkaian simbol yang sudah diproses. jendela ini bergerak dari arah kiri ke kanan terhadap teks. Bagian sebelah kiri dinamakan search buffer. yaitu metode berbasis dictionary. sliding-window pada metode LZ77 dan prefix-tree yang dimiliki metode Huffman menjadikan performa algoritma Deflate layak dibandingkan dengan berbagai metode kompresi terbaik (Deutsch. Rangkaian input (masukan) akan bergerak dari arah kanan ke kiri pada jendela. Universitas Sumatera Utara .Algoritma Deflate adalah algoritma kompresi jenis lossless dengan basis gabungan antara dictionary dan statistik. Atau dengan sudut pandang lain. Algoritma LZ77 adalah teknik “sliding window” dimana menggunakan teks yang dilihat sebelumnya sebagai dictionary terhadap teks yang akan diproses (Nelson. M. Memperluas area pencarian (search buffer) memungkinkan algoritma mencari rangkaian simbol terpanjang yang sesuai dengan masukan (look-ahead buffer). umumnya search buffer berukuran 2-8 Kbytes dan look-ahead buffer berukuran 8-32 bytes. L. Namun. Memperluas area masukan berarti memungkinkan panjang rangkaian simbol yang mungkin sesuai semakin besar. Hal ini disebabkan algoritma Deflate itu sendiri adalah kombinasi antara algoritma LZ77 dan Huffman. Ukuran dari masing-masing buffer dalam implementasi boleh jadi bervariasi. berisi rangkaian simbol sebagai input yang akan diproses. 2. Publikasi “A Universal Algorithm for Sequential Data Compression” oleh Jacob Ziv dan Abraham Lempel mengemukakan metode baru. Jendela tersebut dibagi atas dua bagian. Bagian sebelah kanan dinamakan look-ahead buffer. Mengambil kelebihan dari masing-masing metode. 1996a). Segalanya berubah pada tahun tersebut. P. et al. Algoritma ini menetapkan sebuah jendela (window). 1996).

Jika dalam pencarian tidak terdapat simbol yang sesuai atau jika simbol yang sesuai hanya 1. Proses kemudian kembali berulang dengan menggeser sliding window sebanyak length+1 simbol terhadap teks.. a). kemampuan untuk seakan-akan memakai sebagian dari look-ahead buffer sebagai search buffer. Simbol pertama dijumpai pada jarak 20 simbol dari ujung search buffer (offset). code).4. yaitu “i” pada gambar 2. Maka.. token yang dihasilkan seharusnya (4.5 Cara Kerja Algoritma Encoder LZ77 Terdapat suatu keunikan dalam menghasilkan token. Ternyata encoder Universitas Sumatera Utara . Mencari simbol yang sesuai dengan simbol pertama pada look-ahead buffer. Pada gambar 2.. 2007) 2.. 4. search buffer Sliding Window look-ahead buffer Rangkaian simbol yang akan dibaca Gambar 2. search buffer akan berisi “nputdeflatedalaminputp” dan look-ahead buffer berisi “rosesdeflat“. Pencarian berlanjut terus menerus hingga search buffer semuanya berhasil ditelusuri.4 Sliding Window (Salomon. Encoder kemudian menghasilkan token (20. … amadimenanggapiamanamanatpresiden Rangkaian simbol yang akan dibaca Gambar 2.. yaitu simbol pertama yang tepat berada disebelah kanan rangkaian simbol yang sesuai (“input”) di look-ahead buffer. 0. 6. D. Encoder kemudian berusaha mencocokkan rangkaian simbol. encoder mencari nilai length terbesar dan offset terkecil.1 Encoder Encoder melakukan pembacaan pada search buffer dari arah kanan ke kiri.upakan inputinputdeflatedalaminputproses deflatingdaninflatin. Simbol kedua dijumpai pada offset 26 dengan panjang rangkaian (length) yang sesuai adalah 6 (“input”). Simbol “p” dicatat sebagai code. Oleh karena penelururan telah selesai.5. p). Di sini panjang rangkaian (length) yang sesuai adalah 6 (“input”).3. maka dihasilkan token (0.

m adalah posisi yang menunjuk pada karakter pertama yang cocok pada Source Input. 5 p  p + l + 1. l adalah panjang rangkaian simbol yang cocok. Keterangan: 1.. Universitas Sumatera Utara . t) akan menghasilkan rangkaian “amanat”. c).. p adalah posisi pointer yang menunjuk pada awal look-ahead buffer. atau L-1. 2. 2006) Baris Pseudo code 1 p  1. l.L-1] di 3 search buffer S[p-B. M. c) sebagai Output. 5. 5. EOF adalah singkatan dari End of File. 4. Jika didapati dictionary “…aman” dengan token (4.. bahwa nilai length mempunyai batas maksimum panjang look-ahead buffer – 1. S[p+l]). 10. L adalah panjang look-ahead buffer.(p-1)] dimana karakter yang cocok pertama adalah S[m].. merupakan tanda akhir isi source input.. 5. S[1. dictionary “…A” dengan token (1. 8. Hal ini dilakukan untuk efektifitas kompresi. Tabel 2. Ini dapat kita pahami dengan memperhatikan bentuk susunan sebuah token (f.n] sebagai Source Input. Teknik ini sangat berguna bila didapati pengulangan yang tergolong cukup banyak. 4 Output token (p-m. Rangkaian token (f.menghasilkan token (4. t). 3. I. 7. 2 While not EOF do Temukan rangkaian yang cocok terpanjang sebanyak l bytes dari look-ahead buffer S[p. 6. 6 End While. Perlu diperhatikan. l. l. Keberadaan code c tentunya mengurangi kemungkinan panjang rangkaian simbol yang sesuai dari look-ahead buffer 1 simbol. Dengan ukuran length 5 berarti secara paksa melewati batas pemisah jendela. R) akan menghasilkan rangkaian “AAAAAAAAAAR”. Contoh.2 Algoritma Encoder LZ77 (Pu. B adalah panjang search buffer.

0. Jika token merupakan representasi rangkaian simbol sepanjang l. namun bekerja menerjemahkan satu simbol demi satu simbol.(p-f+l-1)]. Universitas Sumatera Utara . S[p+l]  c. 5. Jika token merupakan representasi simbol ASCII-token (0. A (2) …dral.. Operasi tersebut menghasilkan bentuk sesuai poin 2 Gambar 2...2 Decoder Decoder memiliki buffer dengan ukuran yang sama dengan Encoder. 0.3 Algoritma Decoder LZ77 (Pu. 5. Bagaimana Decoder mampu menerjemahkan token ini adalah terletak pada detil cara kerjanya.6 Cara Kerja Algoritma Decoder LZ77 Gambar 2.2. End While. Isi dari jendela dictionary digeser sebanyak nilai offset + 1.. Decoder tidak bekerja dengan menyalin secara langsung keseluruhan l simbol dari offset ke output. ) menghasilkan “” (spasi). dimana hanya memiliki jendela Dictionary. maka Decoder akan menulis simbol c tersebut ke output. 0. ) pabilaamadimenanggapi laamadimenanggapiaman dimenanggapiamanamanat Gambar 2.3. 3. 2006) Baris 1 2 3 4 5 6 7 Pseudo code p  1. atau f + 1. Token (4.(p+l-1)  S[(p-f). c). ) (17. Token (0. Apabi (3) …dral. maka Decoder akan membaca posisi offset f dan menulis sebanyak l simbol ke output. S[p. dimana hasil output masih berada dalam jendela dictionary. t) menghasilkan “amanat” dimana jika diperhatikan nilai length lebih besar dari nilai offset. n) (4. M. Tabel 2.6 menjelaskan bagaimana menerjemahkan token-token menjadi output. Decoder bekerja membaca rangkaian token. t) (0.6. p  p + l + 1. While not EOF do Baca token berikutnya. I.  Apabilaama (4) Apabilaamadimenanggapi (1) (0. 0.  …dral. …dral.

Hal itu menjamin keunikan dari masing-masing kode sehingga proses dekompresi tidak ambigu. sebuah karakter disimpan dengan ukuran seragam 8 bit.4 Algoritma Huffman Semenjak penelitian David A. Dengan menerapkan variable length. 2. Misal pada representasi ASCII.n] sebagai Source Output. 2003). Algoritma Huffman adalah teknik “prefix-tree” dimana menggunakan sebuah pohon biner guna menghasilkan kode pengganti yang optimal bagi simbol-simbol dengan probabilitas kemunculan yang lebih tinggi (Sayood. Universitas Sumatera Utara . Dinamakan demikian oleh karena tidak ada codeword yang dihasilkan merupakan awalan dari codeword lainnya. Letak keberhasilan kompresi dengan metode ini adalah menerapkan variable length gantinya fixed length.. Rangkaian token (f. l adalah panjang rangkaian simbol yang cocok.Keterangan: 1. Kode inilah yang akan menggantikan setiap byte pada data. S[1. posisi yang menunjuk karakter pertama dari sisi kanan Dictionary. 4. metode yang dikembangkannya menjadi konsentrasi banyak penelitian dalam jumlah yang besar. maka simbol yang memiliki probabilitas kemunculan yang lebih tinggi diberi codeword dengan ukuran lebih kecil. 2. 3. c) sebagai Input. Algoritma huffman akan menggunakan “prefix-tree” dalam melakukan pembentukan kode-kode huffman. l. f adalah offset. p adalah posisi pointer yang menunjuk pada awal Dictionary. Huffman “A Method for the Construction of Minimum Redundancy Codes” dipublikasikan tahun 1952. 5. Untuk mencapai maksud tersebut. “prefix-tree” ini jugalah yang akan digunakan untuk menerjemahkan kembali byte data semula. algoritma ini mengkonstruksi pohon biner yang dinamakan “prefix-tree” atau pohon Huffman. Teknik kompresi yang dikembangkan dalam dokumen tersebut bernama Huffman dan berbasis statistik. K.

Node diberi bobot dengan nilai penjumlahan nilai probabilitas kemunculan kedua cabangnya. apakah menggunakan simbol asli atau simbol representasi pengganti atau keduanya. 7. ditempatkan berdasarkan nilai gabungan dari probabilitas kemunculan kedua simbol. Simbol asli berada pada daun. Pohon akan berkembang setiap kombinasi terjadi sampai akhirnya menghasilkan root. 2. 2. Cabang sebelah kiri diberi bobot dengan nilai 0 dan sebelah kanan 1. Dalam pembentukan pohon huffman.1 Encoder Dalam proses kompresi.4. 2 simbol atau node dikombinasikan untuk membentuk sebuah node baru yang merupakan sebuah subtree. Beberapa aturan pembentukan pohon Huffman: 1. 5. Universitas Sumatera Utara . sebuah daftar atau tabel simbol dibentuk dan diurutkan berdasarkan nilai probabilitas kemunculannya. Node adalah hasil kombinasi. menciptakan pohon huffman dan kemudian memperoleh kode huffman untuk tiap simbol. Simbol representasi pengganti yang baru diurutkan dalam daftar dengan posisi teratas jika didapati nilai probabilitas kemunculan yang sama. 6. Kombinasikan 2 simbol terakhir pada daftar (probabilitas kemunculan terendah) dan diganti dengan simbol representasi pengganti. Simbol-simbol dalam daftar berulang kali dikombinasikan dengan simbol ataupun subtree lainnya. Simbol representasi pengganti yang menggambarkan sebuah subtree. Perulangan dalam pembentukan pohon Huffman: 1.2. Encoder terlebih dahulu membaca keseluruhan source input. Node boleh diberi simbol representasi pengganti kombinasi dari simbol cabang. Kode huffman tersebut digunakan dalam melakukan proses encoding terhadap source input. membentuk tabel frekwensi. 4. Daftar tersebut dinamakan ordered list. 3. Representasi pengganti gabungan terakhir pada daftar dianggap sebagai root.

5.4 Daftar Simbol Dan Probabilitas Simbol Dan Probabilitas Awal J 1 I 5 K 2 A 4 _ (spasi) 3 D 2 U 1 R 1 N 1 Y 1 Simbol Dan Probabilitas Yang Diurutkan I 5 A 4 _ (spasi) 3 K 2 D 2 J 1 U 1 R 1 N 1 Y 1 Penggabungan pertama sekali dilakukan pada simbol N dan Y dengan simbol representasi baru (NY). Setiap ditemukan simbol baru yang tidak ada pada daftar. Setelah mencapai indeks terakhir. nilai probabilitasnya cukup ditambah 1. tabel 2. algoritma Huffman pertama sekali melakukan penghitungan untuk tiap simbol-simbol yang ada.Andaikata sebuah string “JIKA DIA AKUI DIRINYA” sebagai source input. bergerak secara sekuensial ke indeks berikutnya.7 Pembentukan Pohon Huffman Tahap 1. 2 dan 3 Universitas Sumatera Utara . Dimulai dari simbol pertama yaitu “J”. yaitu “I”. I 5 A 4 0 D 2 3 1 J 1 _ 2 0 U 1 1 R 1 0 N 1 2 1 Y 1 3 Gambar 2. Tabel 2. jika ditemukan simbol yang sudah ada pada daftar.4 adalah tabel frekwensi dan ordered list yang dihasilkan. kedua pada simbol U dan R dengan simbol representasi baru (UR) dan ketiga pada simbol D dan J dengan simbol representasi baru (DJ).7 dan keadaan Ordered List tahap demi tahap tampak pada tabel 2. Sebaliknya. Hasil penggabungan tersebut tampak pada gambar 2. maka simbol tersebut akan ditambahkan dengan memberikan nilai probabilitas awal 1.

Tahap 2 dan Tahap 3 Ordered List Awal I 5 A 4 _ 3 K 2 D 2 J 1 U 1 R 1 N 1 Y 1 Ordered List Tahap 1 I 5 A 4 _ 3 (NY) 2 K 2 D 2 J 1 U 1 R 1 Ordered List Tahap 2 I 5 A 4 _ 3 (UR) 2 (NY) 2 K 2 D 2 J 1 Ordered List Tahap 3 I 5 A 4 (DJ) 3 _ 3 (UR) 2 (NY) 2 K 2 Penggabungan keempat dilakukan pada simbol (NY) dan K dengan simbol representasi baru ((NY)K). 7 0 A 4 0 D 2 1 3 1 J 1 0 _ 5 1 2 0 U 1 R 1 1 I 5 2 0 N 1 1 Y 1 0 4 1 K 2 3 Gambar 2.8 dan keadaan Ordered List tahap demi tahap tampak pada tabel 2.Tabel 2.6 Ordered List Tahap 4. kelima pada simbol _ dan (UR) dengan simbol representasi baru (_(UR)) dan keenam pada simbol A dan (DJ) dengan simbol representasi baru (A(DJ)). 5 dan 6 Tabel 2. Hasil penggabungan tersebut tampak pada gambar 2. Tahap 5 dan Tahap 6 Ordered List Tahap 4 I 5 ((NY)K) 4 A 4 (DJ) 3 _ 3 (UR) 2 Ordered List Tahap 5 (_(UR)) 5 I 5 ((NY)K) 4 A 4 (DJ) 3 Ordered List Tahap 6 (A(DJ)) 7 (_(UR)) 5 I 5 ((NY)K) 4 Universitas Sumatera Utara .8 Pembentukan Pohon Huffman Tahap 4. Tahap 1.5 Ordered List Awal.6.

7 Ordered List Tahap 7 dan Tahap 8 Ordered List Tahap 7 (I((NY)K) (A(DJ)) (_(UR)) 9 7 5 Ordered List Tahap 8 ((A(DJ)) (_(UR))) 12 (I((NY)K) 9 Setelah mencapai tahap 8.10.7.9 Pembentukan Pohon Huffman Tahap 7 dan 8 Tabel 2. maka proses pembentukan pohon Huffman selesai. Hasil penggabungan tersebut tampak pada gambar 2. Ketika Encoder membaca dan mendapati hanya satu simbol yang berada pada daftar. Penggabungan terhadap 2 simbol itu kemudian dilakukan dan menyisakan hanya 1 simbol pada daftar yang terbaru. Hasil akhir tampak pada gambar 2. kedelapan dilakukan pada simbol (A(DJ)) dan (_(UR)) dengan simbol representasi baru ((A(DJ))(_(UR))).9 dan keadaan Ordered List tahap demi tahap tampak pada tabel 2. yaitu representasi simbol (((A(DJ)) (_(UR)))(I((NY)K))). Universitas Sumatera Utara . yaitu ((A(DJ)) (_(UR))) dan (I((NY)K)).Penggabungan ketujuh dilakukan pada simbol I dan ((NY)K) dengan simbol representasi baru (I((NY)K)). pada Ordered List hanya didapati 2 simbol. 12 0 7 0 A 4 0 D 2 1 3 1 J 1 0 _ 9 1 5 1 2 0 U 1 1 R 1 0 N 1 I 5 0 2 1 Y 1 0 1 4 1 K 2 3 Gambar 2.

rangkaian bobot cabang 1 dan 0 yang dilewati merupakan kode huffman bagi simbol atau daun yang dituju. Dimulai dari root hingga mencapai daun.0 12 0 7 0 A 4 0 D 2 1 3 1 J 1 0 _ 21 1 9 1 5 1 2 0 U 1 1 R 1 I 5 0 0 2 0 N 1 1 Y 1 1 4 1 K 2 3 Gambar 2. string tersebut berhasil dikompresi menjadi “0011 10 111 000 010 0010 10 000 010 000 111 0110 10 010 0010 10 0111 10 1100 1101 000” yang memerlukan penyimpanan sebesar 65 bit. Dengan menggunakan representasi kode Huffman. string “JIKA DIA AKUI DIRINYA” akan memerlukan penyimpanan sebesar 21 * 8 bit = 168 bit. Cabang sebelah kiri diberi bobot 0 dan cabang sebelah kanan diberi bobot 1. Tabel 2.8 Kode Huffman Simbol Kode Huffman A D J _ (spasi) U 000 0010 0011 010 0110 3 4 4 3 4 R I N Y K Jumlah bit Simbol Kode Huffman 0111 10 1100 1101 111 4 2 4 3 3 Jumlah bit Universitas Sumatera Utara .10 Prefix-tree Kode huffman didapati dengan menelusuri pohon huffman yang terbentuk. Dengan menggunakan representasi ASCII.

. k < n. Output codeword dengan menelururi dari root ke Keterangan: 1.. 2006) Baris Pseudo code 1 Deklarasi list yang berisi daftar simbol/tree (t1. 2. ti)  0. t  merge(ti. 2 3 4 5 6 7 9 10 daun. end for. Codeword yang dihasilkan adalah kode Huffman.. Decoder kemudian melanjutkan pemembacaan bit demi bit Universitas Sumatera Utara . . edge(t. Dimulai dari root kita menelusuri cabang yang ada di bawah berdasarkan nilai bit. tj). wi ≥ wj {bobot terkecil}. t2. . w2..2 Decoder Decoder bekerja dengan membaca bit demi bit dan menggunakannya dalam menelusuri pohon Huffman hingga menemukan simbol. for k = 1. Simbol yang berada di ujung pohon tersebut akan diproses sebagai output.4. t2. edge(t.. tn)beserta probabilitas kemunculan untuk tiap simbol itu (w1. proses pembacaan 1 simbol selesai.. tn) dengan bobot (w1. Jika bit yang sedang dibaca adalah 0.. Digunakan untuk mengkompresi source input. M. . Pembacaan source input dari awal hingga akhir menghasilkan daftar simbol sebanyak n buah(t1. 2. w  wi + wj. wn). tj)  1. . Sebaliknya. apakah sudah mencapai ujung dari pohon tersebut. k + 1 do Ambil 2 tree terbawah ti dan tj.... wn) berturut-turut. Setiap node yang ditelusuri akan diperiksa. Jika benar.Tabel 2. maka akan dipilih cabang sebelah kiri (left_child).. left_child(t)  ti dan right_child(t)  tj.9 Algoritma Encoder Huffman (Pu. I.. w2. bit 1 akan menelusuri cabang sebelah kanan (right_child).

Source input berbentuk binary. if b = 0 then p  left_child(p).10 Algoritma Decoder Huffman (Pu. Proses dekompresi akan berakhir jika didapati tanda EOF. Node adalah ujung pohon dengan output simbol I. Else p  right_child(p). Universitas Sumatera Utara . Baca bit 0. berpindah ke cabang kiri. Node bukan ujung pohon. Node bukan ujung pohon. Node adalah ujung pohon dengan output simbol R. Node bukan ujung pohon. berpindah ke cabang kiri. 6. Baca bit 1.berikutnya dan mengulang langkah-langkah penelusuran pohon Huffman. while not EOF Baca bit berikutnya b. berpindah ke cabang kanan. Dimulai dari root. Keterangan: 1. end if.10. 7. end if. if p = daun then {ujung pohon. Dengan menggunakan pohon Huffman pada gambar 2. 4. p  root. end while. berpindah ke cabang kanan. 8. Tabel 2. Baca bit 1. M. Baca bit 0. 2. 5. 2. leave) Output: p. 3. Baca bit 1. I. Dimulai dari root. penerjemahan rangkaian bit “011110” digambarkan dalam langkah-langkah berikut: 1. Baca bit 1. Source output berbentuk simbol original. Node bukan ujung pohon. berpindah ke cabang kanan. berpindah ke cabang kanan. 2006) Baris 1 2 3 4 5 6 7 8 9 10 11 12 13 Pseudo code p  root.

normal dan fast. Hal ini bertujuan untuk mengoptimalkan length rangkaian simbol yang sesuai. Encoder kemudian akan menjadikan simbol “s” sebagai output dibandingkan token. Ternyata length baru yang didapat bernilai 6 untuk string “apume”.5 Spesifikasi Algoritma Deflate Algoritma Deflate adalah algoritma yang dikembangkan oleh Phil Katz. Implementasi secondary search ini sepenuhnya diserahkan kepada implementor. bila pencarian yang kedua yang dipakai. Ada 3 metode yang dihasilkan dengan memodifikasi karakteristik secondary search. encoder akan menunda pemrosesan lebih lanjut dan melakukan secondary search dengan karakter kedua pada lookahead buffer sebagai awal rangkaian simbol yang akan dicocokkan. Peter Deutsch dituangkan dalam publikasi dengan judul “DEFLATE Compressed Data Format Specification”. Data yang sudah dikompres dengan algoritma ini terdiri dari rangkaian blok. akan dilakukan pencarian sekunder secara maksimal. Namun. Dengan pilihan metode high-compression. Ukuran dari blok tersebut tidak tetap. kecuali blok yang berisi data tidak dikompres dibatasi dengan ukuran 65.11.11 Secondary Search Rangkaian simbol yang akan dibaca Dengan melihat gambar 2. Dalam mencari rangkaian simbol yang sesuai (metode LZ77). yaitu high-compression. length rangkaian simbol yang sesuai bernilai 4. sapudikadapumembelisapumerah Gambar 2. Algoritma tersebut masih dalam bentuk spesifikasi yang kemudian oleh L.2. Pilihan metode fast akan melakukan pencarian sekunder seminimal mungkin bahkan tidak ada sama sekali. Blok-blok tersebut dikompres menggunakan kombinasi algoritma LZ77 dan Huffman. Pilihan metode normal akan melakukan pencarian sekunder secukupnya. algoritma Deflate memiliki kemampuan untuk melakukan pencarian secondary. Hal inilah yang disebut dengan secondary search. Algoritma ini dirancang berdasarkan algoritma LZ77 yang dikombinasikan dengan algoritma Huffman. … .535 bytes. Universitas Sumatera Utara .

satu tabel untuk literal dan length. Pemecahan Universitas Sumatera Utara . Algoritma Deflate memperbaiki kelemahan ini dengan cara menjadikan karakter asli tersebut sebagai output. 1 bit BFINAL yang berisi 1 jika blok tersebut adalah blok terakhir dalam data yang terkompresi dan 2 bit BTYPE yang menentukan bagaimana cara kompresi dilakukan. Bagian tersebut berisi referensi-referensi kepada rangkaian simbol yang sesuai.Di dalam algoritma “asli” LZ77 sebuah token diharuskan mengandung tiga unsur. length dan karakter. 3. Selanjutnya adalah bagian data yang sudah dikompres. distance (offset. maka penyimpanan yang dibutuhkan jauh lebih besar daripada ukuran satu karakter (8 bit). Ada 3 cara kompresi yang dapat dilakukan. dimana Encoder akan menuliskan kode Huffman untuk ketiga unsur itu. 2. Yang artinya penerjemahan bentuk token tersebut dalam bentuk bit adalah sebuah pemborosan. satu lagi untuk distance. Bagian data yang terkompresi terdiri atas literal. backward distance>. 00 . Hal ini dapat dimengerti jika terdapat file-file yang tidak dapat dikompres atau sudah pernah dikompres atau dengan alasan untuk memecah file tanpa kompresi.Tidak ada kompresi. Representasi yang digunakan dalam algoritma Deflate membatasi distance dengan ukuran 32 Kbytes (walaupun melewati jangkauan satu blok) dan length dengan ukuran 258 bytes.Kompresi dengan kode Huffman yang sudah ditentukan. Masing-masing blok dimulai dengan 3 bit pendahulu. Karakter demikian yang tidak ditemukan kesesuaiannya disebut literal.1 Tidak Ada Kompresi (BTYPE 00) Blok yang menggunakan cara ini tidak akan melakukan kompresi. 10 . Sesuai dengan kemungkinan nilai BTYPE: 1. namun tidak membatasi ukuran blok kecuali yang berisi data tidak dikompres. 2. 01 . Referensi tersebut direpresentasikan atas pasangan <length. pada algoritma LZ77) dan length. yaitu offset. 0.Kompresi dengan kode Huffman yang dinamis. Sehingga apabila yang dihasilkan adalah token (0. Bagian berikutnya adalah pohon Huffman yang bersifat independen atau unik terhadap blok-blok lainnya. c).5. Kode Huffman dihasilkan dengan menggunakan dua tabel.

Hal ini akan mempercepat proses kompresi namun memiliki kelemahan jika tabel yang digunakan ternyata sangat berbeda dengan daftar simbol secara statistik. Cara ini tidak menggunakan tabel apapun. 1996a) EDOC 0-143 144-255 256-279 280-287 bit 8 9 7 8 Kode prefix 00110000–10111111 110010000–111111111 0000000–0010111 11000000–11000111 Universitas Sumatera Utara .tersebut sangat berguna jika seorang pengguna ingin memindahkan 8 GB data dengan menggunakan hanya 2 DVD berkapasitas 4. Sebuah blok ditulis dengan cara ini akan didahului 1 byte yang menyatakan blok tidak menggunakan kompresi. 16 17. 12 13. P.5 GB. P. L. 18 19-22 23-26 27-30 31-34 34-52 43-50 51-58 59-66 Kode 277 278 279 280 281 282 283 284 285 Bit ekstra 4 4 4 4 5 5 5 5 0 length 67-82 83-98 99-114 115-130 131-162 163-194 195-225 227-257 258 Tabel 2. Tabel 2. 1996a) Kode 257 258 259 260 261 262 263 264 265 266 Bit ekstra 0 0 0 0 0 0 0 0 1 1 length 3 4 5 6 7 8 9 10 11. diikuti 2 bytes LEN.535 bytes literal.5.11 EDOC literal dan length (Deutsch.12 Kode Huffman Untuk EDOC (Deutsch. 2. L. 2 bytes komplemen LEN dan literal sebanyak LEN bytes. 14 Kode 267 268 269 270 271 272 273 274 275 276 Bit ekstra 1 1 2 2 2 2 3 3 3 3 length 15.2 Kompresi Dengan Kode Huffman Yang Sudah Ditentukan (BTYPE 01) Dua buah tabel telah menjadi kesatuan dan tertanam dalam encoder dan decoder. Cara ini dibatasi dengan ukuran LEN yang merepresentasikan 65. Literal dan length ditempatkan dalam tabel pertama dan distance pada tabel kedua.

Length 258 menjadi EDOC 285. Untuk mendapatkan bit ekstra. ditulis dengan 7 bit kode prefix. Tabel 2. yaitu 0000000. Dengan menggunakan tabel 2. didapatlah “kode” pada kolom kode yang merupakan prefix 5 bit tersebut. Pertama sekali. Length 20 menjadi EDOC 269 diikuti 2 bit ekstra 01. P. Untuk itu Istilah EDOC digunakan untuk menghilangkan pengertian ambigu bagi tabel pertama. dengan menelusuri nilai jarak pada kolom distance. yang diuraikan pada tabel 2. 6 7.12. yaitu 0001101|01. ditulis dengan 8 bit kode prefix. yaitu tabel distance dapat dilihat pada tabel 2. 1996a) Ko de 0 1 2 3 4 5 6 7 8 9 Bit ekstra 0 0 0 0 1 1 2 2 3 3 distance 1 2 3 4 5. yaitu 11000101. Tabel pertama menempatkan EDOC 0-255 untuk literal. jika didapati rangkaian simbol yang sesuai mempunyai length 10. didapat EDOC 264. EDOC 256 untuk “end-of-block” dan EDOC 257-285 untuk length. 29 EDOC untuk length tidaklah cukup untuk merepresentasikan 256 kemungkinan yang menyatakan rangkaian simbol yang sesuai dari 3 hingga 258 bytes. Sebuah jarak direpresentasikan dengan kode prefix 5 bit yang diikuti dengan bit ekstra. Sebuah end-of-block ditulis dengan 7 bit nilai 0.11. Apa yang sebenarnya ditulis ke output adalah kode prefix untuk EDOC. dengan kata lain nilai length dibatasi 258 bytes yang artinya look-ahead buffer berukuran 258 bytes. L. Kemudian. dengan tabel 2. Pada kolom bit ekstra didapati panjang bit ekstra. yaitu 0001000.11 bukan merupakan yang sebenarnya ditulis ke output. dilakukan pengurangan antara jarak dengan nilai awal pada kolom distance lalu dikonversi ke dalam bentuk bilangan biner Universitas Sumatera Utara . Sebagai contoh.13. oleh sebab itu bit ektra digunakan. 8 9-12 13-16 17-24 25-32 Ko De 10 11 12 13 14 15 16 17 18 19 Bit ekstra 4 4 5 5 6 6 7 7 8 8 distance 33-48 49-64 65-96 97-128 129-192 193-256 257-384 385-512 513-768 769-1024 Ko de 20 21 22 23 24 25 26 27 28 29 Bit ekstra 9 9 10 10 11 11 12 12 13 13 distance 1025-1536 1537-2048 2049-3072 3073-4096 4097-6144 6145-8192 8193-12288 12289-16384 16385-24576 24577-32768 Tabel kedua. Nilai length tertinggi adalah 258.12 EDOC 264 ditulis dengan 7 bit kode prefix.Kode yang terdapat pada tabel 2.13 Kode distance (Deutsch.

Dua buah tabel seperti cara BTYPE 01 juga dibentuk.768 bytes. Bagian terpenting dalam algoritma Deflate ini terletak pada bagaimana mengkompresi tabel kode dan bagimana mengembalikannya seperti semula. keduanya ditulis menjadi kesatuan dalam bagian data yang sudah dikompres dengan cara yang unik. Nilai distance tertinggi adalah 32. dan kode prefix lain untuk distance. Distance 21 ditulis 01000|100. Bagian ini ditulis dengan bentuk kode prefix untuk literal dan length. Hal ini menghasilkan tabel kode yang unik. Distance 19505 ditulis 11100| 0110000110000.768. Distance 8195 ditulis 11010|000000000010. Blok diakhiri dengan kode prefix “end-of-block”.3 Kompresi Dengan Kode Huffman Yang Dinamis (BTYPE 10) Pembangunan tabel kode sesuai dengan keadaan data yang akan dikompres dilakukan pada blok ini. ditulis 00100|1. Rangkaian kemudian dikompres dengan Run Length Encoding menjadi rangkaian yang lebih sederhana.dengan penambahan nol secukupnya sesuai panjang bit ekstra yang didapat.768 bytes yang artinya search buffer berukuran 32. Blok yang ditulis dengan cara ini akan didahului 1 byte yang menyatakan blok menggunakan “kompresi dengan kode Huffman yang sudah ditentukan”. Langkah-langkah utama untuk melakukan hal itu adalah sebagai berikut: 1. diikuti bagian data yang sudah dikompres. jika didapati rangkaian simbol yang sesuai dengan distance 6. Distance 401 ditulis 10001|0010000. 2.5. Pohon tersebut disusun kembali untuk memenuhi bentuk standar yang dapat direpresentasikan menjadi rangkaian dari panjang kode. Masing-masing tabel dimulai sebagai pohon Huffman. Pembacaan keseluruhan source input akan dilakukan untuk membentuk tabel probabilitas guna menghasilkan kode Huffman. Universitas Sumatera Utara . 3. 2. Sebagai contoh. dengan kata lain nilai jarak dibatasi 32.

0. Dengan algoritma Huffman. pohon yang baru harus memenuhi aturan berikut: 1. Untuk itu. Pohon tersebut kembali disusun ulang dengan memperhatikan aturan (1) dan (2).26. secara lexicographically simbol yang lebih kecil ditempatkan di sebelah kiri. C. 5. 2. F) memiliki probabilitas kemunculan masing-masing 0. diperoleh kode Huffman untuk rangkaian sebelumnya. Pohon ini memiliki kelebihan dimana dapat direpresentasikan secara baik oleh rangkaian 3. Pohon Huffman diharuskan memiliki bentuk standar. E.12. Pohon Huffman kemudian direpresentasikan menjadi rangkaian dari panjang kode yang sebelumnya dipermutasi dan bisa saja dihilangkan sebagian pada output. pohon Huffman yang dikonstruksi tampak pada gambar 2. 0. Kode yang lebih pendek muncul di sebelah kiri dan yang lebih panjang muncul di sebelah kanan di pohon Huffman. 2. 0. enam simbol (A.12. dan 0. D. Pohon Huffman kembali disusun kembali untuk memenuhi bentuk standar. menghasilkan pohon Huffman yang tampak pada gambar 2. B. Sebagai contoh. 0 1 0 1 A 000 C 001 E 01 0 1 D 100 0 1 F 11 B 101 Gambar 2.4. Dengan algoritma Huffman. 3.11.14. 3.13. 0. Ketika beberapa simbol memiliki kode dengan panjang yang sama. 3.12 Bentuk Standar Pohon Huffman Aturan (1) Universitas Sumatera Utara . Dalam menggunakan algoritma Huffman. terdapat beberapa aturan tambahan yang diberikan oleh algoritma Deflate.24. 2 yang adalah panjang kode dari keenam simbol tadi.13.

Maka. 3. 0.0 E 00 1 0 1 F 01 A 100 0 1 0 1 D 111 B C 101 110 Gambar 2.13 Bentuk Standar Pohon Huffman Aturan (1) Dan (2) Jika keenam simbol tersebut memiliki probabilitas kemunculan yang berbeda. berimplikasi bahwa kode tersebut memiliki panjang paling banyak 15 bit. n++) len = tree[n]. Menghasilkan kode yang sebenarnya. next_code[bits] = code. 3.12. 2. 3. 3. 0. Menggunakan bl_count[N] sebagai nilai yang menyatakan jumlah kode dengan panjang kode N (N >= 1). Hitung jumlah kode untuk masing-masing panjang kode.26. bl_count[0] = 0. Panjang dari kode dibatasi hingga 4 bit masing-masing. for (n = 0. antara lain 0. bits <= MAX BITS. if (len != 0) tree[n]. 0. next code[len]++. g f 3. 2.13. Dimana dalam integer batas itu mempunyai interval [1.11. Hitung nilai dasar untuk masing-masing panjang kode yang ditempatkan pada next_code[N] untuk panjang kode N.24. code = 0.Code = next code[len]. 15]. Rangkaian yang tebentuk adalah 2.14. for (bits = 1. dan 0.Len.code: 1. 0. bits++) code = (code + bl_count[bits-1]) << 1. Penggalan berikut merupakan bagian dari algoritma Deflate dalam menghasilkan kode yang kemudian ditempatkan pada tree[I]. Decoder mampu menghasilkan pohon Huffman kembali dengan membaca rangkaian panjang kode dari tiap-tiap simbol. f f Universitas Sumatera Utara . n <= max_code.

16. Ketika sebuah CL muncul lebih dari tiga kali. 3. 100 (nilai dasar 2 + 2). encoder menambahkan CL kepada SSQ diikuti dengan flag khusus 16 dan 2 bit faktor pengulangan (3-6 pengulangan). Langkah pertama tidak menemukan kode untuk panjang kode 1. Permutasi ataupun juga penyederhanaan dari CCL dalam bagian data yang sudah dikompres pada blok. 2. 5 buah kode untuk panjang kode 3 (bl_count[3] = 5) dan 2 buah kode untuk panjang kode 4 (bl_count[4] = 2). Dalam loop berikutnya tidak menemukan kode. Faktor pengulangan 112 menyatakan 6 Universitas Sumatera Utara . 3. Langkah pertama. diberikan masukan rangkaian 3. 002. akan dikompres menjadi 6. 4. 16. Algoritma Deflate lebih lanjut melakukan kompresi terhadap SQl dengan menggunakan Run Length Encoding. menghasilkan rangkaian baru dengan istilah SSQ (Short of Short Sequence). 4. sebuah rangkaian memuat CL 7 berulang-ulang sebanyak enam kali. maka panjang kode 4 diberi nilai dasar 14 (2*(2+5)). maka diberi nilai 0 sebagai nilai dasar pada panjang kode 2. 3. Faktor pengulangan 102 menyatakan 5 kemunculan berturut-turut dari panjang kode yang sama. Langkah-langkah berikut dilakukan dalam mencapai maksud tersebut: 1. 3. Langkah ketiga menghasilkan 3 bit kode 010 (nilai dasar 2). 1111 (nilai dasar 14 + 1) dan terakhir 2 bit kode 00 (nilai dasar 0). Langkah kedua memberi nilai 0 sebagai nilai dasar pada panjang kode 1. akan dikompres menjadi 7. Sebagai contoh. 112.Sebagai contoh. 110 (nilai dasar 2 + 4) . 3. Rangkaian yang dijelaskan diatas dikenal dengan istilah SQ (Short Sequence) dari panjang kode CL (Code Length). 101 (nilai dasar 2 + 3). Loop terakhir ditemukan 5 buah kode. 2. Loop berikutnya menemukan 1 buah kode. Membangun pohon Huffman dari SSQ dan menghasilkan rangkaian baru dengan istilah CCL (Code of Code Length) untuk kode-kode Hufman tersebut. Berikutnya menghasilkan 4 bit kode 1110 (nilai dasar 14). 16. 102. 1 buah kode untuk panjang kode 2 (bl_count[2] = 1). 011 (nilai dasar 2 + 1). Jika sebuah rangkaian memuat CL 6 berulang-ulang sebanyak sepuluh kali. Menerapkan Run Length Encoding. maka panjang kode 3 diberi nilai dasar 2 (2*(1+0)).

1. 2. 2 dan 4 berturut-turut untuk kode 0. 2. 0. 16. 4. Menghasilkan kode Huffman untuk SSQ berikut (dengan probabilitas kemunculan berada pada tanda kurung): 0(2). 16. 6. 2. 4(1). 2. 6(1). 2. 5. 112 dan dua belas CL 0 dikompres menjadi 18. 16. 6. Penggunaan flag khusus 17 dan 18 dikenakan kepada CL 0. Langkah kedua. 3. 0. CL 0 akan didapati dalam jumlah yang banyak. 002. 012. 6. dan 17. 112. Rangkain tersebut akan dikompres menjadi SSQ dengan 16 angka: 4. 2(1).kemunculan berturut-turut dan 002 menyatakan 3 kemunculan berturut-turut dari panjang kode yang sama. 2. 4. 3. 3. Hal ini dikarenakan dalam satu blok akan banyak literal/length ataupun distance yang tidak muncul ataupun ditemukan sehingga diberi nilai CL 0. Terdapat SQ dengan 28 CL: 4. 6. 6. 6. 3. 2. 6. 16. 0. 16. 6. 0.14 Pohon Huffman SSQ Universitas Sumatera Utara . 6. 0. 16 01 0 0000 1 2 4 6 00010 00011 00100 00101 17 0011 3 1 Gambar 2. 0. 16. 17(1). 16. 17. 17. 3. 5. 0. 1. 002.14 dan 2. 4. 6. 16. 16. 012. Atau dalam desimal menjadi: 4. 4. 3. 16(4). 6. 3. Flag 18 akan diikuti dengan 7 bit faktor pengulangan (11-138 pengulangan CL 0). 112. 6. 3(5).15. Pohon Huffman dalam bentuk standar dapat dilihat pada gambar 2. 3. 3. Sehingga didapatlah kode Huffman dengan CCL sebagai berikut: 4. 3. Flag 17 akan diikuti dengan 3 bit faktor pengulangan (3-10 pengulangan CL 0). 5. 1. 4. 6. sebuah rangkaian memuat CL 0 berulang-ulang sebanyak enam kali dikompres menjadi 17. 3. 0. 1(1). 5. Sebagai contoh. 3.

Blok yang ditulis dengan cara ini akan didahului 1 byte yang menyatakan “blok menggunakan kompresi dengan kode Huffman yang dinamis”. sehingga dengan memperhatikan contoh diatas rangkaian akhir berupa 18 kode. Blok diakhiri dengan sebuah kode “endof-block”. Bagian ini ditulis dengan bentuk kode prefix untuk literal dan length. dua buah tabel (literal/length dan distance) dan bagian data yang sudah dikompres. Kemudian akan dilakukan pengacakan dengan urutan tertentu dan dilakukan permutasi.3 0 16 10 17 0 1100 1101 1 2 4 6 11100 11101 11110 11111 Gambar 2. diikuti tabel kode Huffman. dan kode prefix lain untuk distance.15 Bentuk Standar Pohon Huffman SSQ Langkah ketiga. Rangkaian dari CCL kemudian diperluas menjadi 19 angka dengan menambahkan angka ‘0’ kepada posisi CCL yang tidak dipakai. Universitas Sumatera Utara . Rangkaian akhir kemudian akan ditulis pada compressed stream. Position : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 CLL :4 5 5 1 5 0 5 0 0 0 0 0 0 0 0 0 2 4 0 Position : 16 17 18 0 8 7 9 6 10 5 11 4 12 3 13 2 14 1 15 CLL : 2 4 0 4 0 0 0 5 0 0 0 5 0 1 0 5 0 5 0 Permutasi dilakukan dengan maksud menghilangkan rangkaian ‘0’ yang berada diakhir rangkaian dari CCL.

Sign up to vote on this title
UsefulNot useful