Коды и кодирование
В дальнейшем будет предполагаться конечное множество А знаков, которое называется также запасом знаков.
Если это множество линейно упорядочено, то его будем называть также алфавитом.
Особенно элементарным запасом знаков является множество В:
В={L.,0}.
Элемент множества В называется двоичным знаком или битом
(Bit – от Binary Digit).
Множество конечных последовательностей знаков над запасом знаков А называется также множеством слов над А. При множестве В* = {L О}* говориться о двоичных словах. Элементы множества
называются также п-битовыми словами или двоичными словами длины п. Множество n-битовых слов часто само снова используется в качестве запаса знаков.
Отображения между запасами знаков А и В, и в частности между словами над запасами знаков, называются кодами
или кодировкой..
Специальные случаи кодировки предусматривают представление не для всех слов из А*. Такие кодировки соответствуют частичным
Если запас знаков А состоит из отдельных литер, то говорится также о шифровке и множество образов называем шифрами.
В общем случае предполагается, что кодировка является инъективным отображением: различные знаки и слова в этом случае отображаются на разные кодовые слова. Тем самым каждая кодировка
обратима на ее прообраз. Обратное отображение
для отображения кодировки с называется декодировкой или дешифровкой. Тогда справедливо следующее: d(c(a))=a.
Коды постоянной длины
При двоичных кодировках, которые каждый кодируемый знак отображают на двоичное слово одинаковой длины, говориться о кодах постоянной длины. Таким кодировкам соответствуют отображения вида
Поскольку часто из-за технических характеристик (как, например, длина регистров вычислительной машины) для представления кода имеется в распоряжении постоянное количество бит, в настоящее время в информатике наиболее потребительны именно коды постоянной длины. Ниже рассмотривается ряд простых кодировок постоянной долины и обсудим их свойства.
Пусть а, b - двоичные слова одинаковой длины; число позиций, в которых различаются слова а и b, назовем расстоянием Хэмминга. Таким образом, расстоянию
Хэмминга математически соответствует отображение
Расстояние отображения кодировки
для длины кодов n определяется через минимальное расстояние Хэмминга между двумя различными кодами:
Большее расстояние кода допускает распознавание ошибок, а часто даже их исправление, однако при этом необходимы более длинные коды и тем самым дополнительные затраты на представление. Это ведет к понятию избыточности.
Для алфавита А (т. е. для набора знаков А, на котором задан линейный порядок) код постоянной длины называется кодом Грэя (или одношаговым кодом), если коды двух последовательных знаков из А различаются точно в одной позиции (в одном бите).
Пример (4-битовый код Грэя для десятичных цифр). Четырехбитовый код Грэя для десятичных цифр соответствует кодировке
Если в кодах Грэя кодировки первого и последнего знаков отличаются тоже только в одной позиции (как в вышеприведенном примере), то говорят о циклическом коде Грэя.
Большие расстояния Хэмминга могут быть достигнуты, например, увеличением длины кодовых слов для дополнительных знаков.
Коды переменной длины
С кодами переменной длины технически труднее оперировать, чем с кодами постоянной длины. Из-за того, что в современных компьютерах используются слова определенной длины, такие коды в практике машинной обработки информации используются редко.
Пример (коды переменной длины).
(1) Код Морзе в двоичном кодировании
Код Морзе строится из трех знаков, которые соответствуют «короткой». «длинной» передаче (точки и тире) и пробелу («паузе»). Двоичная кодировка
с : { ., -, «пауза»} -^ {
OL, OLLL, 000} определяется следующим образом:
с(.) =
OL, с(-) =
OLLL. с(«пауза») =
000.
(2) Код для телефонных систем
Телефонная система использует код для цифр диска набора номера. Такой код, приведенный в табл.7.1, порождается при наборе соответствующей цифры и передается в промежуточный узел.
Цифра
Код
1 LO
2 LLO
3 LLLO
4 LLLLO
5 LLLLLO
6 LLLLLLO
7 LLLLLLLO
8 LLLLLLLLO
9 LLLLLLLLLO
0 LLLLLLLLLLO
Т
аблица 7.1. Код для телефонных cucmem
Коды переменной длины имеют одно важное преимущество. Если имеется данные о средней частоте появления знаков из А, то для часто встречающихся знаков можно выбрать короткие кодовые слова, а для редко встречающихся знаков - винные, и тем самым полнить небольшую среднюю длину кодовых слов.
Трудности использования кодов переменной длины становятся ясными, если учесть, что, вообще говоря, кодированию подлежат не только отдельные знаки, но и последовательности знаков. Если кодировка последовательности знаков производится конкатенацией кодов отдельных знаков, то при кодах переменной длины труднее распознать стыки знаковых кодов.
Последовательное и параллельное кодирование последовательностей знаков
Если необходимо кодировать как отдельные знаки из А, так и слова над А и закодированную информацию передавать по проводам, то - исходя из кодирования отдельных знаков из А - могут использоваться две принципиально различные возможности.
(1)
Последовательная кодировка слов. Для заданной кодировки
отдельных знаков рассмотрим ее расширение на слова над А. Это значит, что рассматривается кодировка с* над А*, индуцированная кодировкой с.
Таким образом, при последовательной кодировке слов кодируются слова w над А путем конкатенации кодов отдельных знаков слова w.
(2) Параллельная кодировка cлoв. Для заданной кодировки с с постоянной длиной кодов рассматривается индуцированное отображение с'.
Итак, при последовательной кодировке слов коды отдельных знаков подлежащего кодированию слова конкатенируются, в то время как при параллельном кодировании слов сохраняется структура кодируемого слова.
Содержание раздела