Коды Лекция № 4
Энтропия тесно связана с созданием эффективных кодов для произвольных источников
Идеи, разработанные в контексте теории кодирования, образуют фундамент методов сжатия, поиска данных, криптографической защиты, организации огромных библиотек и исправления ошибок в коммуникации.
Первая теорема Шеннона базируется на двух главных идеях: • Использовать короткие коды для событий, являющихся весьма вероятными (сократить среднюю длину закодированных сообщений). • Кодировать несколько событий одновременно в виде пакета (обеспечить большую гибкость в разработке кода).
Проблема кодирования События источника информации – это символы (н-р: s 1, s 2, …, sm), подлежащие передаче. Для каждого события источника предусматривается один символ (н-р: буквы алфавита a, b, …, z или цифры от 0 до 9). Код состоит из кодовых слов, включающих знаки из кодового алфавита.
Проблема кодирования Обозначим количество знаков в кодовом алфавите через r. Код- это присвоение кодовых слов символам источника. Например: A->0 B->01 C->010
Длина кода Код, в котором все слова имеют одну и ту же длину, называется блок-кодом. Выгодно ли использовать блок-код?
Длина кода Средняя длина слова. Если имеется m символов источника с вероятностями p 1, p 2, …, pm соответственно, а соответствующие кодовые слова имеют длину l 1, l 2, …, lm, то Средняя длина слова является средневзвешенной и вычисляется по формуле:
Эффективность кода Говорят, что код является эффективным, если он имеет наименьшую среднюю длину слова. Рассматривая это подробнее, мы придём к выводу о том, что энтропия источника является соответствущим стандартом для сравнения.
Свойства кода Согласно определению кода мы можем присваивать любые кодовые слова символам источника. Будет ли это полезно? Приведите пример бесполезного кода! Бесполезным будет код, который присваивает одно и то же кодовое слово всем символам источника.
Определение Если каждое кодовое слово соответствует уникальному символу источника, код является несингулярным. В противном случае код является сингулярным.
Примеры Символ источника s 1 Сингулярный Несингулярн код ый код 00 0 s 2 10 10 s 3 01 00 s 4 10 01
Полезность кода Итак, если код является несингулярным, то мы можем однозначно определить соответствующий символ источника по его кодовому слову. Но, несингулярность сама по себе не гарантирует полезности кода. Почему? Символы источника передаются друг за другом, получатель не сможет определить, где кончается одно слово и начинается следующее. Происходит разрушение кода
Пример Получили знаки кода: 0010. Что это означает? s 1 s 4 s 1 или s 3 s 2 или s 1 s 1 s 2 Несингулярный код • 0 -> s 1 • 10 -> s 2 • 00 -> s 3 • 01 -> s 4 Вывод: Если код применяется к последовательностям символов, несингулярный код становится сингулярным.
Однозначная декодируемость Коды, которые могут декодироваться однозначно, даже когда произвольные символы источника кодируются в последовательности, называются однозначно декодируемыми. Т. е символ может быть декодирован сразу же после принятия. Как обеспечить однозначность декодирования?
Моментальный код Код, обладающий таким свойством (каждое слово может быть декодировано сразу же, как только будет получено) называется моментальным кодом. Моментальным кодом является несингулярный блок-код со всеми кодовыми словами равной длины.
Пример Символ источника s 1 s 2 s 3 Кодовое слово 00 01 10 s 4 00 Получили последовательность: 01101100 -> s 2 s 3 s 4 s 1 Каждый символ источника сразу же определяется после получения 2 знаков кода.
Эффективность блок-кодов Блок-коды просты для декодирования, но не всегда являются эффективными. Присвоить короткие кодовые слова высоковероятным символам источника!
Примеры Символ S 1 S 2 S 3 S 4 Код Заглавный запятой код 0 10 1110 0 01 0111 Оба кода являются однозначно декодируемыми, но Заглавный код моментальным не является. Нуль в коде запятой указывает на конец слова (можно декодировать сразу)
Примеры Символ S 1 S 2 S 3 S 4 Код Заглавный запятой код 0 10 1110 0 01 0111 Нуль в заглавном коде указывает на начало нового слова. Только получив следующее слово, мы сможем декодировать предыдущее.
Критерий моментальности кода Ни одно кодовое слово не должно быть приставкой следующего кодового слова. В заглавном коде каждое слово, кроме последнего является приставкой другого слова.
Кодовые деревья Кодовое дерево имеет точку начала отсчёта – один узел. От этого узла идёт одна или две ветви, каждая из которых заканчивается другим узлом. Каждый из новых узлов создаёт ещё одну или две ветви. , и т. д. , до тех пор пока не будет достигнут конечный узел.
Кодовое дерево для алфавита двоичного кода (0, 1) Каждая жирная точка – кодовое слово, состоящее из последовательности нулей и единиц на пути от первоначального узла. Верхний узел – 0001. Дерево содержит 11 кодовых слов.
Кодовое дерево для алфавита двоичного кода (0, 1) 1 0 0 1 1 0 0 1 1 Является ли код моментальным? Нет! Поскольку кодовое слово 01 – это приставка для трёх других кодовых слов. В моментальном коде все кодовые слова должны соответствовать конечным узлам.
Два кодовых дерева Код запятой Заглавный код 0 начало 0 0 0 1 1 Код запятой со словами 0, 110, 1110 1 1 1 начало Заглавный код со словами 0, 011, 0111
Неравенство Крафта Моментальный код может быть построен с помощью данных длин l 1, l 2, …, lm, если только r – число знаков алфавита кода, m - число символов источника
Средняя длина кода и энропия Средняя длина L двоичного моментального кода удовлетворяет следующему неравенству: L>=H, где H – это энтропия источника Т. о. энтропия устанавливает нижний предел средней длины кода. Можно ли достичь этот предел? .
Средняя длина кода и энтропия В определённых случаях возможно. Для источников с вероятностями, которые представляют степени ½, моментальные коды существуют при L=H.
Кодирование Шеннона Если вероятности источника то значения длины слов, достигающих нижний предел Источник с энтропией H может кодироваться с помощью моментального двоичного кода средней длины L H<=L
Первая теорема Шеннона (идеи) • Разрабатывать коды с различными значениями длины слова, закрепляя короткие слова за высоковероятными символами и более длинные слова за редковстречающимися символами. • Сгруппировать символы вместе, образуя последовательности (метасимволы). Кодирование метасимволов обеспечивает дополнительную гибкость.
Первая теорема Шеннона С помощью этих идей для создания эффективных кодов среднюю длину кодового слова можно сделать равной энтропии источника.
Первая теорема Шеннона Кодируя последовательность независимых символов (в Sn ) можно построить декодируемые коды таким образом, чтобы n->∞ где H – энтропия источника S, n - длина последовательности символов Ln – средняя длина кодовых слов.
Первая теорема Шеннона Отсюда можно приблизить среднюю длину кодового слова Настолько, насколько нужно, к энтропии Н.
Первая теорема Шеннона Цена, которую нужно заплатить за такое улучшение, заключается в увеличении сложности кодирования в силу увеличения размера источника и увеличения задержки в процессе декодирования, поскольку вся последовательность должна обрабатываться одновременно.
Первая теорема Шеннона Этот удивительный теоретический результат, устанавливающий значение понятия энтропия в теории информации.


