Чи можна стиснути дані на розмір менший, ніж межа стиснення даних Шеннона?


17

Я читав про алгоритми стиснення даних та теоретичну межу стиснення даних. Нещодавно я зіткнувся з методом стиснення під назвою "Комбінаторне кодування ентропії", головна ідея цього методу - кодувати файл як символи, представлені у файлі, їх частоти та індекс перестановки цих символів, представлений файлом.

Ці документи можуть допомогти пояснити цей метод:

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

Однак у першому документі я прочитав, що за допомогою цього методу вони можуть стиснути деякий текст до межі, ніж межа Шеннона (Вони не враховували простір, необхідний для збереження частоти символів, і простір, необхідний для збереження мета дані файлу). Я подумав про це, і виявив, що цей метод не буде дуже ефективним для дуже малих файлів, але, з іншого боку, він може добре працювати з великими файлами. Насправді я не дуже добре розумію цей алгоритм або обмеження Шеннона, я просто знаю, що це сума ймовірності кожного символу, помножена на зворотної ймовірності.лог2

Тож у мене є кілька питань:

  1. Чи справді цей метод стиснення стискає файли менше, ніж межа Шеннона?

  2. Чи існує якийсь алгоритм стиснення, який стискає файли менше, ніж межа Шеннона (відповідь на це питання, наскільки я знаю, ні)?

  3. Чи може існувати метод стиснення, який стискає файли, менші за обмеження Шеннона?

  4. Якщо комбінаторне кодування дійсно стискає файли, що перевищують обмеження Шеннона, чи не можна стиснути файл знову і знову, поки ми не досягнемо потрібного нам розміру?


26
Шеннон довів, що ти не можеш стискатися нижче межі Шеннона.
Yuval Filmus

11
Можна стиснути нижче межі Шеннона зі стисненням втрат . Шеннон лише показав, що ти не можеш стискатись нижче межі, не втрачаючи інформації . @YuvalFilmus. Як і на RGB-зображенні, ви можете викинути біти низького порядку з компонентів R, G, B.
smci


6
@smci Це абсолютно не має значення в будь-якій дискусії про теорію стиснення. Очевидно, що я можу викинути кожен шматочок і назвати це стисненням.
труба

1
Скажімо, у мене великий файл, як зображення. Тепер у моделі я зіставляю все зображення на "1" га. Я стискав нижче межі Шеннона, оскільки все зображення стискається до "1" ......
Пітер Б,

Відповіді:


34

Насправді я не дуже добре розумію цей алгоритм або обмеження Шеннона, я просто знаю, що це сума ймовірності кожного символу, помножена на log2 зворотної ймовірності.

У цьому криється суть. Межа Шеннона не є якоюсь універсальною властивістю рядка тексту. Це властивість рядка тексту плюс модель, яка забезпечує (можливо, залежно від контексту) ймовірності символів. Це говорить нам, наскільки добре ця модель могла стиснути текст, припускаючи, що модель є точною .

Якщо ви використовуєте одну модель для обчислення межі Шеннона, а потім іншу модель для стиснення, якщо друга модель є більш точною, ви можете перемогти початковий ліміт Шеннона, який ви обчислили, але це не дуже актуально.


4
Для того, щоб зробити практичний приклад, якщо ви знаєте , що ваші дані складаються з однієї літери повторюється N раз, можна домогтися як завгодно великі ступеня стиснення (тобто перехід від 10 мільярдів «а» в кортеж ( «а», 10000000))
Ant

12

Показати, що ви можете стиснути нижче ліміту Шеннона, неважко просто - візьміть компресор, що містить обман, у якому є купа загальних файлів, присвоєних жетонам. Згадані файли зберігаються як ті лексеми. (Очевидно, що компресор повинен бути дуже великим або малювати дуже велику бібліотеку.)

Компресор, по суті, буде менш ефективним у роботі з будь-яким файлом, який не знаходиться в його бібліотеці, однак, оскільки він повинен певним чином відрізняти маркер від звичайного стиснення.

Що ви не можете зробити - це компресор, який перевищує ліміт Шеннона для всіх файлів .


11

Ви спочатку застосовуєте модель до даних, обчислюючи послідовність ймовірностей, fe 1/2, 1/3, 1/6. Потім, щоб кодувати кожен символ з вірогідністюp, тобі потрібно лог2(1/p)біт. З огляду на якусь конкретну модель, ви не можете стиснути дані краще, ніж ентропія Шеннона ймовірностей, вироблених саме цією моделлю.

Але якщо застосувати іншу модель, ви отримаєте іншу послідовність ймовірностей. Буква "буква" є досить рідкісною, тому її ймовірність над усім текстом може становити 3%, і це ймовірність, що вам доведеться призначити цей лист, використовуючи модель Маркова замовлення-0 .

Але в англійських текстах після "q" зазвичай надходить "u", тому, використовуючи модель порядку-1, ви можете призначити набагато більшу ймовірність "u", що йде після "q", тим самим покращуючи коефіцієнт стиснення.

Більше того, деякі моделі видають менше символів, ніж є вхідні, fe LZ77 замінює повтори тексту на зворотні посилання, тому "abababab" перетворюється на "ab [2,8]".

Коли хтось говорить про ентропію Шеннона деяких даних, а не дані, стиснуті певною моделлю, вона зазвичай означає ентропію Шеннона, вироблену моделлю порядку-0, тобто присвоюючи кожному символу свою вірогідність для всього тексту. Очевидно, ви можете подолати цей запас, застосувавши до даних більш досконалу модель.


3

Інша можлива інтерпретація тексту: даний алгоритм стиснення допоможе вам краще стискати одні тексти, а гірше стискати інші. Однак користувачі, як правило, піклуються про деякі види файлів (HTML-сторінки англійською мовою, 80386 машинного коду) більше, ніж інші (таблиці справді випадкових чисел, безглуздий шум, вибраний для мінімізації повторення). Будь-яка схема стиснення стане кращою для стиснення даних у реальному світі, чим гіршою, ніж марною при стисненні деяких інших типів рядків.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.