Позвольте мне пояснить, я не говорю о идеальном сжатии в смысле алгоритма, который способен сжать любой исходный материал, я понимаю, что это невозможно. То, что я пытаюсь получить, - это алгоритм, который способен кодировать любую исходную строку бит в абсолютное максимальное сжатое состояние, как определено энтропией Шеннона.Есть ли алгоритм для «идеального» сжатия?
Я считаю, что я слышал кое-что о Хаффмане кодирования является в некотором смысле оптимального, поэтому я считаю, что эта схема шифрования может быть основана от этого, но вот мой вопрос:
Рассмотрит битовые строки: а = "101010101010", b = "110100011010".
При использовании простой энтропии Shannon эти битовые строки должны иметь ту же самую энтропию, когда мы рассматриваем битовые строки как простые символы 0 и 1, но этот подход является ошибочным, потому что мы можем интуитивно видеть, что битстрона a имеет меньшую энтропию, чем bitstring b, потому что это просто шаблон повторяющихся 10. Имея это в виду, мы могли бы лучше понять фактическую энтропию источника, вычислив энтропию Шеннона для составных символов 00, 10, 01 и 11.
Это просто мое понимание, и я мог бы быть полностью из базы, но из того, что я понимаю, для эргодического источника, чтобы быть действительно случайным, для эргодического источника с длиной n. статистическая вероятность всех групп символов n-длины должна быть одинаково вероятной.
Я полагаю, чтобы быть более конкретными, чем вопрос в названии, у меня есть три основные вопрос:
ли кодирование Хаффмана с использованием отдельных бит в виде символов сжать битовые Подобно оптимально, даже с явным рисунком, который происходит, когда мы анализируем строку на уровне 2-битных символов? Если нет, можно ли оптимально сжать источник, пройдя через разные «уровни» (извините, если я уничтожаю терминологию здесь) кодирования Хаффмана, пока не будет найдена наилучшая степень сжатия? Может ли проходить различные «раунды» кодирования Хаффмана, в некоторых случаях увеличить степень сжатия? (ea сначала пройти через кодировку Хаффмана с символами длиной 5 бит, а затем пройти через кодирование Хаффмана для символов длиной 4 бита? huff_4bits(huff_5bits(bitstring))
)
Возможно, вам стоит изменить вопрос и удалить деталь об идеальном сжатии. (Каков правильный вопрос, по моему мнению, в отношении квантовых вычислений.) Кстати, вы знаете [арифметическое кодирование] (http://en.wikipedia.org/wiki/Arithmetic_coding)? –