Saya sedang membaca tentang algoritma kompresi data dan batas teoritis untuk kompresi data. Baru-baru ini saya menemukan metode kompresi yang disebut "Combinatorial Entropy Encoding", ide utama dari metode ini adalah untuk menyandikan file sebagai karakter yang disajikan dalam file, frekuensi mereka dan indeks permutasi karakter ini diwakili oleh file.
Dokumen-dokumen ini dapat membantu menjelaskan metode ini:
https://arxiv.org/pdf/1703.08127
http://www-video.eecs.berkeley.edu/papers/vdai/dcc2003.pdf
https://www.thinkmind.org/download.php?articleid=ctrq_2014_2_10_70019
Namun, dalam dokumen pertama saya telah membaca bahwa dengan menggunakan metode ini mereka dapat memampatkan beberapa teks menjadi kurang dari batas Shannon (Mereka tidak mempertimbangkan ruang yang diperlukan untuk menyimpan frekuensi karakter dan ruang yang diperlukan untuk menyimpan meta data file). Saya memikirkannya dan saya menemukan bahwa metode ini tidak akan sangat efisien untuk file yang sangat kecil tetapi di sisi lain itu dapat bekerja dengan baik dengan file besar. Sebenarnya saya tidak sepenuhnya memahami algoritma ini atau batas Shannon sangat baik, saya hanya tahu itu jumlah dari probabilitas masing-masing karakter dikalikan dengan dari timbal balik dari probabilitas.
Jadi saya punya beberapa pertanyaan:
Apakah metode kompresi ini benar-benar memampatkan file menjadi lebih kecil dari batas Shannon?
Apakah ada algoritma kompresi yang memampatkan file hingga kurang dari batas Shannon (jawaban untuk pertanyaan ini sejauh yang saya tahu tidak)?
Bisakah metode kompresi yang mengkompres file menjadi lebih kecil dari batas Shannon pernah ada?
Jika pengkodean kombinatorial benar-benar memampatkan file di luar batas Shannon, apakah tidak mungkin untuk memampatkan file berulang-ulang sampai kita mencapai ukuran file yang kita inginkan?
Jawaban:
Di sinilah letak intinya. Batas Shannon bukan properti universal string teks. Ini adalah properti dari string teks ditambah model yang menyediakan (mungkin tergantung konteks) probabilitas simbol. Ini memberi tahu kita seberapa baik model itu dapat memampatkan teks, dengan asumsi model itu akurat .
Jika Anda menggunakan satu model untuk menghitung batas Shannon dan kemudian model yang berbeda untuk kompres, jika model kedua lebih akurat Anda dapat mengalahkan batas Shannon asli yang telah Anda hitung, tetapi itu tidak terlalu relevan.
sumber
Sangat mudah untuk menunjukkan bahwa Anda dapat mengompres di bawah batas Shannon - ambil kompresor curang yang memiliki banyak file umum yang ditetapkan untuk token. File-file tersebut disimpan sebagai token tersebut. (Jelas, kompresor harus sangat besar, atau menggambar di perpustakaan yang sangat besar.)
Kompresor pada dasarnya akan kurang efisien dalam menangani file apa pun yang tidak ada di pustaka, karena kompresor harus membedakan token dari kompresi normal.
Yang tidak bisa Anda lakukan adalah memiliki kompresor yang mengalahkan batas Shannon pada semua file .
sumber
Tetapi jika Anda menerapkan model lain, Anda akan mendapatkan urutan probabilitas lainnya. Jika huruf "u" agak jarang, maka kemungkinannya untuk seluruh teks mungkin 3%, dan itu adalah probabilitas Anda harus menetapkan untuk surat ini menggunakan model Markov pesanan-0 .
Tetapi dalam teks bahasa Inggris, setelah "q" biasanya muncul "u", jadi menggunakan model order-1, Anda dapat menetapkan probabilitas yang jauh lebih tinggi untuk "u" setelah "q", sehingga meningkatkan rasio kompresi.
Selain itu, beberapa model menghasilkan simbol yang lebih sedikit daripada yang dimasukkan, fe LZ77 menggantikan pengulangan teks dengan referensi-belakang, sehingga "abababab" berubah menjadi "ab [2,8]".
Ketika seseorang berbicara tentang entropi Shannon dari beberapa data alih-alih data yang dikompresi oleh model tertentu, ia biasanya berarti entropi Shannon yang diproduksi oleh model order-0, yaitu menetapkan masing-masing simbol kemungkinannya atas seluruh teks. Jelas, Anda dapat mengalahkan margin ini dengan menerapkan model yang lebih canggih untuk data.
sumber
Kemungkinan interpretasi lain dari teks: algoritma kompresi yang diberikan akan memberi Anda kompresi yang lebih baik dari beberapa teks, dan kompresi yang lebih buruk pada yang lain. Namun, pengguna umumnya lebih memperhatikan beberapa jenis file (halaman HTML dalam bahasa Inggris, 80386 kode mesin) lebih dari yang lain (tabel angka yang benar-benar acak, suara tidak berarti yang dipilih untuk meminimalkan pengulangan). Skema kompresi apa pun akan menjadi lebih baik dalam mengompresi data dunia nyata dengan menjadi lebih buruk daripada tidak berguna dalam mengompresi jenis string tertentu lainnya.
sumber