Anda di halaman 1dari 8

1.

LOSSLESS DATA KOMPRESI (LOSSLESS DATA COMPRESSION) Lossless data kompresi adalah kelas kompresi data algoritma yang memungkinkan data asli yang tepat untuk direkonstruksi dari data terkompresi . The lossless Istilah ini berbeda dengan kompresi data lossy, yang hanya memungkinkan perkiraan data asli akan direkonstruksi, dengan imbalan yang lebih baik tingkat kompresi.1 Lossless data kompresi akan digunakan dalam berbagai aplikasi . Sebagai contoh, digunakan dalam ZIP format file dan di Unix alat gzip. Hal ini juga sering digunakan sebagai komponen dalam data lossy kompresi lossless teknologi (misalnya pertengahan / joint stereo sisi preprocessing oleh Lame MP3 encoder dan lain encoders audio lossy). 1 Lossless kompresi akan digunakan dalam kasus -kasus di mana adalah penting bahwa asli dan data didekompresi identik, atau di mana penyimpangan dari data asli bisa merugikan . Contoh umum adalah program executable, dokumen teks dan kode sumber . Beberapa format file gambar, seperti PNG atau GIF, hanya menggunakan kompresi lossless, sementara yang lain seperti TIFF dan MNG dapat menggunakan metode lossless atau lossy baik. Lossless audio format yang paling sering digunakan untuk atau produksi keperluan pengarsipan, dengan lebih kecil lossy audio file yang biasanya digunakan pada pemain portabel dan dalam kasus lain di mana ruang penyimpanan yang terbatas dan / atau replikasi tepat dari audio yang tidak perlu. 2

2. TEKNIK KOMPRESI LOSSLESS Sebagian besar program kompresi lossless melakukan dua hal secara berurutan: langkah pertama menghasilkan model statistik untuk data input, dan langkah kedua menggunakan model ini untuk memasukkan data peta ke urutan bit sedemikian rupa sehingga "kemungkinan" (misalnya sering dijumpai) data akan menghasilkan output lebih pendek dari "mustahil" data.1

Wikipedia David Salomon, Giovanni Motta, (with contributions by David Bryant ), Handbook of

Data Compression , 5th edition, Springer, 2009

Encoding utama algoritma yang digunakan untuk menghasilkan urutan bit Huffman Coding (juga digunakan oleh deflate) dan aritmatika coding. Arithmetic coding mencapai tingkat kompresi dekat dengan terbaik untuk model statistik tertentu, yang diberikan oleh entropi informasi, sedangkan kompresi Huffman lebih sederhana dan lebih cepat tetapi menghasilkan hasil yang buruk untuk model yang berhubungan dengan simbo l probabilitas mendekati 1. 1 Ada dua cara utama membangun model statistik: dalam model statis, data dianalisa dan model dibangun, maka model ini disimpan dengan data terkompresi. Pendekatan ini sederhana dan modular, namun memiliki kelemahan yang model itu sendiri bisa mahal untuk menyimpan, dan juga bahwa memaksa sebuah model tunggal yang akan digunakan untuk semua data yang dikompresi, dan berkinerja buruk pada file berisi data heterogen. adaptif model model dinamis update sebagai data yang dikompresi. Baik encoder dan decoder dimulai dengan model sepele, menghasilkan kompresi miskin data awal, tetapi karena mereka belajar lebih banyak tentang data kinerja membaik. jenis kompresi paling populer digunakan dalam praktik sekarang menggunakan coders adaptif. 2 Metode kompresi Lossless dapat dikategorikan menurut jenis data yang dirancang untuk kompres. Sementara, pada prinsipnya, tujuan algoritma kompresi lossless-umum (general purpose yang berarti bahwa mereka dapat memampatkan bitstring ada) dapat digunakan pada setiap jenis data, banyak yang tidak mampu mencapai kompresi yang signifikan pada data yang tidak bentuk yang mereka dirancang untuk kompres. Banyak teknik kompresi lossless yang digunakan untuk teks juga bekerja cukup baik untuk gambar terindex.1

3. METODE KOMPRESI LOSSLESS Dengan pengoperasian mengesampingkan prinsip, tidak ada algoritma kompresi lossless efisien dapat memampatkan semua data yang mungkin, dan benar -benar data acak stream tidak dapat dikompresi. Untuk alasan ini, ada berbagai algoritma yang dirancang baik dengan jenis tertentu dari data masukan dalam pikiran atau dengan asumsi spesifik tentang apa jenis redundansi data terkompresi yang mungkin mengandung. 1

4. KETERBATASAN Lossless data algoritma kompresi tidak dapat menjamin kompresi untuk semua set input data. Dengan kata lain, untuk setiap algoritma kompresi (lossless) data, akan ada masukan data set yang tidak mendapatkan yang lebih kecil ketika diproses oleh algoritma. Hal ini mudah dibuktikan dengan matematika dasar menggunakan argumen menghitung , sebagai berikut: Asumsikan bahwa setiap file direpresentasikan sebagai string bit dari beberapa panjang sewenang -wenang. Misalkan ada algoritma kompresi yang mengubah setiap file ke dalam sebuah file yang berbeda yang tidak lebih dari file asli, dan bahwa setidaknya satu file akan dikompresi menjadi sesuatu yang lebih pendek dari itu sendiri. Misalkan M adalah jumlah minimal seperti yang ada F file dengan bit M panjang yang memampatkan untuk sesuatu yang lebih pendek. Biarkan N menjadi panjang (dalam bit ) dari versi kompresi F. Karena N <M, setiap file panjang ukurannya N terus selama kompresi. Ada 2 N file tersebut. Bersama dengan F, ini membuat 2 N + 1 file yang memampatkan semua ke salah satu dari 2 file N N panjang. Tapi 2 N lebih kecil dari 2 N + 1, sehingga oleh prinsip mengesampingkan harus ada beberapa file panjang N yang secara simultan output dari fungsi kompre si pada dua input yang berbeda. Berkas tersebut tidak dapat didekompresi andal (yang dari dua asli harus yang menghasilkan?), yang bertentangan dengan asumsi bahwa algoritma itu lossless. Karena itu kita harus menyimpulkan bahwa hipotesis asli kita (bahwa fungsi kompresi membuat file tidak lagi) yang tentu tidak benar. 1 Setiap algoritma kompresi lossless yang membuat beberapa fi le yang lebih pendek tentu harus membuat beberapa file lagi, tetapi tidak perlu bahwa file -file menjadi sangat lebih lama lagi. Kebanyakan algoritma kompresi praktis memberikan fasilitas yang dapat mematikan normal pengkodean untuk file yang akan menjadi lagi dengan menjadi disandikan . Kemudian peningkatan hanya dalam ukuran adalah beberapa bit untuk memberitahu decoder bahwa pengkodean normal telah dimatikan untuk seluruh input . Sebagai contoh, deflate file terkompresi tidak perlu tumbuh lebih dari 5 byte per 65.535 byte masukan. 1

Bahkan, jika kita menganggap file panjang N, jika semua file yang sama mungkin, maka untuk setiap kompresi lossless yang mengurangi ukuran beberapa fi le, panjang yang diharapkan dari sebuah file terkompresi (rata-rata lebih dari semua file yang mungkin dengan panjang N) tentu harus lebih besar dari N. Jadi jika kita tahu apa-apa tentang sifat-sifat data kita mengompresi, kita mungkin juga tidak kompres sama sekali. Sebuah algoritma kompresi lossless hanya berguna bila kita lebih cenderung untuk kompres jenis file tertentu daripada yang lain, kemudian algoritma bisa dirancang untuk kompres jenis-jenis data yang lebih baik. 1 Dengan demikian, pelajaran utama dari argumen bukanlah bahwa salah satu risiko kerugian besar, tetapi hanya yang satu tidak bisa selalu menang. Untuk memilih suatu algoritma selalu berarti implisit untuk memilih subset dari semua file yang akan menjadi berguna lebih pendek. Ini adalah alasan teoritis mengapa kita perlu memiliki algoritma kompresi yang berbeda untuk jenis file yang berbeda: ada tidak dapat apapun algoritma yang baik untuk semua jenis data.1 Trik yang memungkinkan algoritma kompresi lossless, yang digunakan pada jenis data yang dirancang untuk secara konsisten kompres file tersebut ke bentuk pendek adalah bahwa file kedua algoritma tersebut dirancang untuk bertindak atas semua memiliki beberapa bentuk mudah -model redundansi bahwa algoritma tersebut dirancang untuk mengh apus, dan dengan demikian termasuk dalam subset dari file yang algoritma yang dapat membuat lebih pendek, sedangkan file lain tidak akan mendapatkan tekanan atau bahkan mendapatkan lebih besar . Algoritma biasanya cukup khusus sesuai untuk jenis file tertentu: misalnya, program kompresi lossless audio tidak bekerja dengan baik pada file teks, dan sebaliknya.2 Secara khusus, file acak data tidak dapat konsisten dikompresi oleh algoritma kompresi data lossless dibayangkan: memang, hasil ini digunakan untuk mendefinisikan konsep keacakan dalam teori kompleksitas algoritmik. 1 Sebuah algoritma yang menegaskan untuk dapat losslessly kompres setiap stream data provably mustahil.3 Meskipun ada banyak klaim melalui tahun-tahun perusahaan mencapai "kompresi sempurna" di mana jumlah yang sewenang -wenang N bit acak
3

comp.compression FAQ daftar entri # 9: Kompresi data acak (WEB, Gilbert dan lain-lain)

selalu dapat dikompresi hingga N-1 bit, jenis ini klaim dapat dibuang dengan aman bahkan tanpa melihat rincian lebih lanjut mengenai diakui skema kompresi. Seperti algoritma yang berbeda dengan hukum dasar matematika karena, jika ada, bisa diterapkan berulang kali untuk mengurangi losslessly file apapun ke panjang 0 . Diduga "sempurna" algoritma kompresi biasanya disebut mengejek "ajaib" algoritma kompresi. Di sisi lain, juga telah terbukti bahwa tidak ada algoritma untuk menentukan apakah suatu file inkompresibel dalam arti kompleksitas Kolmogorov; sehingga, diberikan file tertentu, bahkan jika muncul secara acak, mungkin bahwa mungkin secara signifikan dikompresi , bahkan termasuk ukuran decompressor tersebut. Contohnya adalah angka dari konstanta matematika pi , yang muncul acak tetapi dapat dihasilkan oleh sebuah program yang sangat kecil. Namun, meskipun tidak dapat ditentukan apakah sebuah file tertentu inkompresibel, sebuah teorema sederhana tentang string mampat menunjukkan bahwa lebih dari 99% dari file dari setiap panjang diberikan tidak dapat dikompresi oleh lebih dari satu byte (termasuk ukuran decompressor tersebut). 3

5. KAMUS CODER (DICTIONARY CODER) Sebuah kamus coder, kadang-kadang juga dikenal sebagai substitusi coder, adalah kelas kompresi data lossless algoritma yang beroperasi dengan mencari kecocokan antara teks yang akan dikompresi dan satu set string yang terkandung dalam struktur data (disebut 'kamus') dipertahankan oleh encoder . Ketika encoder menemukan seperti pertandingan, itu pengganti referensi untuk posisi string dalam struktur data. 2

6. METODE DAN APLIKASI KAMUS CODER Beberapa kamus coders menggunakan 'statis kamus', seseorang yang penuh dengan set string ditentukan sebelum coding dimulai dan tidak berubah selama proses pengkodean . Pendekatan ini paling sering digunakan ketika pesan atau sekumpulan pesan yang akan dikodekan adalah tetap dan besar, misalnya, sebuah paket

perangkat lunak yang menyimpan isi dari Alkitab dalam ruang penyimpanan yang terbatas dari PDA umumnya membangun statis kamus dari konkordansi yang menggunakan teks dan kemudian yang kamus untuk kompres ayat-ayat.1 Lebih umum adalah metode dimana kamus dimulai di beberapa negara yang telah ditentukan tetapi isinya be rubah selama proses encoding, berdasarkan data yang telah disandikan . Baik LZ77 dan LZ78 kerja algoritma pada prinsip ini . Dalam LZ77, struktur data yang disebut "jendela geser" digunakan untuk memegang bytes terakhir N data diproses; jendela ini berfungsi sebagai kamus, efektif menyimpan setiap substring yang telah muncul dalam byte N terakhir sebagai entri kamus.2 Alih-alih sebuah indeks tunggal mengidentifikasi entri kamus, dua nilai yang diperlukan: panjang, menunjukkan panjang teks yang cocok, dan offset (juga disebut jarak), menunjukkan yang cocok ditemukan di jendela geser mulai offset byte sebelum teks saat ini. LZ78 menggunakan lebih eksplisit kamus struktur; pada awal proses encoding, kamus hanya perlu mengandu ng entri untuk simbol dari alfabet yang digunakan dalam teks yang akan dikompresi, tetapi indeks diberi nomor sehingga meninggalkan ruang untuk lebih banyak entri. Pada setiap langkah dari proses encoding, catatan terpanjang dalam kamus teks yang cocok ditemukan, dan indeks ini ditulis untuk output, kombinasi yang masuk dan karakter yang mengikutinya dalam teks ini kemudian ditambahkan ke dalam kamus sebagai entri baru. 4 Contoh: Teks yang akan dikompresi dimulai "HURLYBURLY". Dalam enam langkah pertama dari encoding, kita output indeks untuk H, U, R, L, Y, dan B, dan kami tambahkan ke kamus entri baru untuk HU, UR, RL, LY, YB, dan BU. Pada tahap ketujuh, kita berada di awal "URLY"; entri terpanjang dalam kamus kami yang cocok dengan teks ini "RU", sebuah entri kami menambahkan pada tahap kedua . Kami mengirim indeks untuk "UR" untuk output, dan tambahkan sebuah entri untuk "URL" ke dalam kamus. Pada langkah kedelapan, kami mengirim indeks untuk "LY" untuk output, dan dengan asumsi bahwa ruang berikut HURLYBUR LY dalam teks, kita tambahkan sebuah entri untuk "LY" ke dalam kamus . Jika
4

Craig, Patrick. "The 5000 Compression $ Challenge"

kemudian dalam teks kita adalah untuk menemukan kata "HURLYBURLY" lagi, kita bisa menyalinnya kali ini (dengan asumsi kita dimulai pada H) dalam waktu tidak lebih dari lima indeks: - HU, RL, YB, URL, dan Y. 1 Decoder LZ78 menerima masing-masing simbol dan, jika sudah memiliki awalan sebelumnya, menambahkan awalan ditambah simbol untuk perusahaan memiliki kamus terpisah. Kemudian output simbol dan menetapkan prefiks ke karakter terakh ir dari simbol. Satu "gotcha" di sini adalah bahwa jika encoder melihat urutan dari bentuk STRING STRING KARAKTER, di mana STRING saat ini dalam kamus, itu akan menampilkan simbol yang satu lebih tinggi dari decoder itu terakhir masuk kamus. Decoder harus mendeteksi seperti suatu peristiwa dan output simbol sebelumnya ditambah karakter pertama. Simbol ini akan selalu hanya satu lebih tinggi dari simbol nomor terakhir di decoder kamus. 1

H U R L Y B U R L Y

Encoding HURLYBURLY H HU UR RL LY YB BU - (UR sudah ada di kamus) URL RLY (tidak masalah)

Contoh: Encoder ini BANANANANA encoding, setelah keluaran indeks untuk B, A, N dan encoder AN telah di kamus entri untuk BA, AN, NA, dan ANA dan decoder memiliki entri untuk BA, AN, dan NA. encoder ini dapat cocok dengan "ANA" sehingga mengirimkan indeks untuk "ANA" dan menambahkan "anan" ke dalam kamus. Namun, decoder tidak memiliki "ANA" dalam kamus. Ini harus menebak bahwa ini simbol baru adalah awalan (simbol terakhir yang diterimanya, " AN") ditambah dengan karakter pertama ("A"). Kemudian keluaran "ANA" dan menambahkan awalan ditambah karakter terakhir dari output ("A" lagi) ke dalam kamus. Decoding dapat terus dari sana. 1

Skema pengkodean lain kamus byte encoding pasangan, dimana byte yang tidak muncul dalam teks sumber ditugaskan untuk mewakili byte umumnya kombinasi muncul dua paling. Hal ini dapat dilakukan berulang-ulang selama ada byte yang tidak muncul dalam teks sumber, dan byte yang sudah mewakili kombinasi byte lain dapat sendiri muncul dalam kombinasi. 1

Anda mungkin juga menyukai