Я читал об алгоритмах сжатия данных и теоретическом пределе для сжатия данных. Недавно я столкнулся с методом сжатия под названием «Комбинаторное энтропийное кодирование», основная идея этого метода заключается в кодировании файла в виде символов, представленных в файле, их частоты и индекса перестановки этих символов, представленных файлом.
Эти документы могут помочь объяснить этот метод:
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
Тем не менее, в первом документе, который я читал, с помощью этого метода они могли сжимать некоторый текст до предела Шеннона меньше (они не учитывали пространство, необходимое для сохранения частоты символов, и пространство, необходимое для сохранения мета данные файла). Я подумал об этом и обнаружил, что этот метод не очень эффективен для очень маленьких файлов, но, с другой стороны, он может хорошо работать с большими файлами. На самом деле я не очень хорошо понимаю этот алгоритм или предел Шеннона, я просто знаю, что это сумма вероятностей каждого символа, умноженная на обратной вероятности.
Итак, у меня есть несколько вопросов:
Действительно ли этот метод сжатия сжимает файлы до размера, меньшего, чем предел Шеннона?
Существует ли какой-либо алгоритм сжатия, который сжимает файлы до предела Шеннона меньше (насколько я знаю, ответ на этот вопрос нет)?
Может ли когда-либо существовать метод сжатия, который сжимает файлы до предела Шеннона?
Если комбинаторное кодирование действительно сжимает файлы за пределом Шеннона, разве невозможно сжимать файл снова и снова, пока мы не достигнем нужного размера файла?