Saya baru saja mulai membaca sebuah buku berjudul Pengantar Kompresi Data, oleh Guy E. Blelloch. Di halaman satu, ia menyatakan:
Yang benar adalah bahwa jika ada satu pesan yang dipersingkat oleh suatu algoritma, maka beberapa pesan lainnya perlu diperpanjang. Anda dapat memverifikasi ini dalam praktiknya dengan menjalankan GZIP pada file GIF. Pada kenyataannya, adalah mungkin untuk melangkah lebih jauh dan menunjukkan bahwa untuk sekumpulan pesan input dengan panjang tetap, jika satu pesan dikompresi, maka panjang rata-rata pesan terkompresi pada semua input yang mungkin selalu akan lebih panjang daripada yang asli. masukan pesan.
Pertimbangkan, misalnya, 8 pesan 3 bit yang mungkin. Jika seseorang dikompresi menjadi dua bit, tidak sulit untuk meyakinkan diri sendiri bahwa dua pesan harus diperluas menjadi 4 bit, memberikan rata-rata 3 1/8 bit.
Betulkah? Saya merasa sangat sulit untuk meyakinkan diri saya tentang hal itu. Bahkan, inilah contohnya. Pertimbangkan algoritma yang menerima sebagai input string 3-bit, dan memetakan ke output berikut:
000 -> 0
001 -> 001
010 -> 010
011 -> 011
100 -> 100
101 -> 101
110 -> 110
111 -> 111
Jadi begitulah - tidak ada input yang dipetakan ke output yang lebih panjang. Tentu saja tidak ada "dua pesan" yang telah diperluas menjadi 4 bit.
Jadi apa sebenarnya yang dibicarakan penulis? Saya menduga ada beberapa peringatan implisit yang tidak jelas bagi saya, atau dia menggunakan bahasa yang terlalu luas.
Penafian: Saya menyadari bahwa jika algoritma saya diterapkan berulang, Anda memang kehilangan data. Coba terapkan dua kali pada input 110: 110 -> 000 -> 0, dan sekarang Anda tidak tahu yang mana dari 110 dan 000 yang merupakan input asli. Namun, jika Anda menerapkannya hanya sekali, sepertinya tidak rugi bagi saya. Apakah itu terkait dengan apa yang penulis bicarakan?