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

Encoding utama algoritma yang digunakan untuk menghasilkan


urutan bit Huffman Coding (juga digunakan oleh deflate) dan
1
Wikipedia
2
David Salomon, Giovanni Motta, (with contributions by David Bryant ), Handbook of
Data Compression , 5th edition, Springer, 2009

1
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 simbol 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

2
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 kompresi 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 file


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 file, panjang yang diharapkan dari
sebuah file terkompresi (rata-rata lebih dari semua file yang

3
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 menghapus, 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
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

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

4
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

5
Lebih umum adalah metode dimana kamus dimulai di beberapa
negara yang telah ditentukan tetapi isinya berubah 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 mengandung 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 HURLYBURLY dalam teks,
kita tambahkan sebuah entri untuk "LY" ke dalam kamus. Jika
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

4
Craig, Patrick. "The 5000 Compression $ Challenge"

6
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 terakhir 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

Encoding HURLYBURLY
H H
U HU
R UR
L RL
Y LY
B YB
U BU
R - (UR sudah ada di kamus)
L URL
Y 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

7
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