Теорема Шеннона определяется в терминах случайных данных и вероятностей. Точно так же энтропия строки определяется только для случайных строк - энтропия является свойством распределения, а не самих строк. Таким образом, мы можем неофициально переформулировать теорему Шеннона как:
Если вы случайным образом выбираете строку из заданного распределения вероятностей, то наилучший средний коэффициент сжатия, который мы можем получить для этой строки, определяется коэффициентом энтропии распределения вероятностей.
Учитывая любую случайную строку, я могу легко написать алгоритм сжатия, который сжимает эту строку до 1 бита, но мой алгоритм обязательно увеличит длину некоторых других строк. Мой алгоритм сжатия работает следующим образом:
- Если входная строка равна некоторой предварительно выбранной случайной строке , на выходе получается 1-битная строка "0"
- В противном случае на выходе получается N + 1-битная строка «1», за которой следует строка ввода
Соответствующий алгоритм распаковки:
- Если на входе «0», на выходе будет наша предыдущая предварительно выбранная случайная строка
- В противном случае выводом является все, кроме первого входного бита
Ключевым моментом здесь является то, что мы не можем записать один алгоритм, который для всех строк из данного распределения сжимает их все с высокой скоростью в среднем. Там слишком много строк.
Если у нас есть заданное распределение вероятностей строк, мы можем рассчитать коэффициент энтропии распределения, а затем, если случайным образом выбрать строку в соответствии с распределением и попытаться сжать ее, используя любой В алгоритме относительный размер сжатой строки в среднем никогда не будет меньше энтропийного показателя. Это то, что говорит Теорема Шеннона.