Uploaded by Anton Valiev

Кодирование (1)

advertisement
Глава4.
Кодирование
$1. Алфавитное кодирование
Информация и методы её кодирования стали предметом изучения
в математике
сравнительно
распространение
недавно, чему
вычислительной
техники.
способствовало
При решении
широкое
конкретной
задачи в памяти компьютера кодируются не только её входные данные, но даже и сам алгоритм для её решения, поскольку программу,
как написанную первоначально на языке высокого уровня, так и
транслированную затем в машинные команды, можно считать различными
кодами
одного
и того
же
алгоритма.
Процесс преобразования и передачи информации схематично изображен на рис. 58. Заметим, что коды сообщения на входе и на выходе
канала связи не всегда совпадают, поскольку из-за помех в канале связи могут
происходить
искажения
передаваемых
сигналов.
Источник
сообщений
Получатель
сообщений
Источник
помех
Исходное
сообщение
Код
сообщения
ни,
Канал связи
Код
сообщения
Исходное
сообщение
Рис. 58
В этой главе мы рассмотрим следующие вопросы, изучаемые в
математической теории кодирования:
У
кодирование с однозначным декодированием, при котором получатель кода исходного сообщения может однозначно восстановить
само это сообщение;
У
кодирование с минимальной избыточностью, в результате которого не происходит значительного увеличения объема информации;
У
надежное кодирование (т.е. устойчивое к искажениям, которые
могут возникать при передаче сигналов по каналу связи).
Далее А будет обозначать исходный алфавит, содержащий буквы
а1,2,....а,. В нем записывается исходное сообщение -— слово, составленное
из
одной
или
нескольких
127
букв.
В
кодирующем
алфавите
В={,5.....6.}
записывается
закодированное
сообщение.
Правила,
по которым осуществляется кодирование, могут быть разными. Алфавитное кодирование, как одно из возможных правил, задается схемой
> вида
а, >В,
а› > Во,
У:
а, >В,,
где В,,В.,....В, - слова в кодирующем алфавите. Их называют кодовыми словами. Для того чтобы с помощью такой схемы закодировать
некоторое слово, состоящее из нескольких букв (разрядов), надо каждую букву этого слова закодировать соответствующим ей кодовым
словом. Иными словами, алфавитное кодирование выполняется поразрядно. Например, в азбуке Морзе кодирующий алфавит состоит, как
известно, из двух символов: «. » (точка) и « — » (тире). Буква 5 латинского алфавита кодируется тремя точками « ... », а буква О — тремя тире«--- ». Поэтому сигнал бедствия 5О5 кодируется как «...---...».
Пример 1. Требуется закодировать слово а> аз а! с помощью схемы
а >,
ла,
>Ь.,
аз >В..
В данном примере исходный алфавит А={а1,а>,аз}, кодирующий
алфавит В={1,5>} и три кодовых слова В1=В1, В›=Бь, Вз=Ь1Ь>. Исходное
слово а2аза! кодируется словом Ь>В1Ь>В.
Определение. Схема алфавитного кодирования называется однозначно декодируемой, если любое закодированное слово допускает
только один способ декодирования.
Схема из примера 1 не является однозначно декодируемой, поскольку полученное слово 2516261 можно декодировать двумя различными
способами:
а2аза1
И а2а1а2а1.
Пример 2. Схема алфавитного кодирования
а] >
72
3)
0 1,
42
02,
аз >
03,
с кодовым алфавитом В = {0,1,2,3} и тремя кодовыми словами В! = 01,
В» = 02, В. = 03 однозначно декодируема. Действительно, любое полу128
ченное после кодирования слово можно разбить на последовательные
двухбуквенные фрагменты, каждый из которых является кодовым словом и поэтому допускает однозначное декодирование. Например, слово 030201 после объединения букв в пары (03)(02)(01) единственным
образом
представляется
в виде
ВзВ›В!
и, следовательно,
однозначно
декодируется в слово азала1.
Определение. Схема алфавитного кодирования называется равномерной, если все её кодовые слова попарно различны, но имеют одинаковую длину.
Схема из примера 2 является равномерной. То, что она к тому же
оказалась и однозначно декодируемой, не является случайным совпадением, так как справедливо следующее утверждение.
Утверждение 1 (достаточное условие однозначности декодирования). Любая равномерная схема алфавитного кодирования однозначно декодируема.
Данное условие является достаточным, но его нельзя считать необходимым для однозначности декодирования, поскольку существуют
однозначно декодируемые схемы, не являющиеся равномерными. Рассмотрим соответствующий пример.
Пример 3. Схема алфавитного кодирования
а—>1,
>12,
с двумя кодовыми словами В; = Ти В. = 12 не является равномерной,
однако, она однозначно декодируема. Действительно, для декодирования полученного слова в нем необходимо выделить все фрагменты вида 12. Они соответствуют кодовому слову Во. Все остальные фрагменты -— это кодовые слова В1. В результате исходное слово восстанавливается однозначно. Например, слово
1112112 = 112) 1(12) = ВВ, В-В,В>
единственным образом декодируется в слово аарар.
Рассмотренное достаточное условие однозначности декодирования
касается
только
длин
кодовых
слов.
Есть
и
другие
достаточные
условия, учитывающие внутреннюю структуру кодовых слов.
Определение.
Если
кодовое
слово
Ву
представимо
в
виде
Вь=В’В" , то его фрагмент В’ называется префиксом, а В" — суффиксом слова Ву.
В данном определении допускается, что В’ или В" могут быть
пустыми словами, т.е. не содержать ни одной буквы.
129
Определение. Схема алфавитного кодирования называется ирефиксной (суффиксной), если ни одно кодовое слово не является префиксом (суффиксом) другого кодового слова.
Схема из примера 1 не является ни префиксной, ни суффиксной,
так как кодовое слово В: является префиксом, а В> - суффиксом кодового слова Вз. В схеме из примера 2 ни одно кодовое слово не является
ни префиксом, ни суффиксом другого кодового слова. Поэтому она
является одновременно и префиксной, и суффиксной. В схеме из примера 3 слово В! является префиксом слова Во. Значит, эта схема не является префиксной. Заметим, однако, что она суффиксная схема.
Оказывается, если проанализировать внутреннюю
структуру ко-
довых слов конкретной схемы, обращая внимание на префиксы и суффиксы
кодовых
слов,
то
иногда
удается
сделать
вывод
—
является
ли
данная схема однозначно декодируемой. Этот вывод основывается на
следующем утверждении.
Утверждение 2 (достаточное условие однозначности декодирования). Любая префиксная (суффиксная) схема алфавитного кодирования однозначно декодируема.
Данное условие является достаточным, но не является необходимым
для
однозначности
декодирования.
Действительно,
имеются
не-
суффиксные (непрефиксные) однозначно декодируемые схемы. В качестве примера можно взять рассмотренную ранее схему Уз. Она не
префиксная, хотя и однозначно декодируема.
Кроме двух сформулированных выше достаточных условий однозначности декодирования, в теории кодирования установлено и необходимое условие. Оно содержится в следующем утверждении.
Утверждение 3 (необходимое условие однозначности декодирования). Если схема алфавитного кодирования однозначно декодируема,
то для неё выполняется неравенство Макмиллана
Г
УЧ
51,
(48)
К=1
где г - количество букв в исходном алфавите, 4 — количество
кодирующем алфавите, а 1, [,..., [. — длины кодовых слов.
букв в
Схема из примера 2 однозначно декодируема, поэтому согласно
утверждению
3 она должна удовлетворять неравенству (48). Действи-
тельно, в этом примере „=3,
а=4, 4 =5==2и4
+4? +4? =3/16< 1
— верное неравенство. Согласно утверждениям 1 и 2 любые равномерные, префиксные и суффиксные схемы кодирования обязательно обла-
дают свойством однозначности декодирования.
130
В то же время неравенство Макмиллана не гарантирует однозначность
декодирования.
Оно
является
лишь
необходимым,
но
не
доста-
точным условием того, чтобы схема была однозначно декодируемой.
Существует немало примеров, подтверждающих такой вывод.
Пример
алфавитом
4. Пусть в схеме алфавитного
кодирования
с исходным
{а,5} кодовыми словами являются В! = 01 и В. = 0101. Оче-
видно, неравенство (48)
22 +24 =5/16<1
для неё выполняется. Однако эта схема не обладает свойством однозначности декодирования. Так, например, слово 010101 допускает три
разных варианта декодирования: ааа, либо ар, либо ра.
ТЕОРЕМА. Если при некотором 4 числа 1, Ь,..., [,. удовлетворяют неравенству Макмиллана, то найдется префиксная (суффиксная)
схема алфавитного кодирования с длинами кодовых слов 1, 6,...,
и
кодирующим алфавитом мощности 4.
На конкретном примере рассмотрим метод построения префиксной схемы с заранее заданными длинами кодовых слов, который используется в доказательстве этой теоремы. Её полное доказательство
можно найти в
[24].
Пример 5. В кодирующем алфавите минимальной мощности построить префиксную схему с длинами кодовых слов /= 1, [= 2, [3 = 3,
[=
3.
Минимальное значение 4, при котором выполняется неравенство
(48) с заданными длинами кодовых слов, равно 2. Будем считать, что
кодирующий алфавит В={0,1}. Для построения требуемой схемы рассмотрим бинарное дерево (см. рис. 59).
К
о
1
10
И
110
Рис. 59
131
то
Корень дерева находится в самом верхнем ярусе и помечен пустым словом Л, а все остальные вершины помечены словами в алфавите
{0,1}. Принцип образования этих слов таков: при переходе от вершины к смежной вершине более низкого яруса к концу соответствующего
ей слова добавляется 0 при движении налево, либо 1 при движении направо. В дереве также есть выделенные вершины. Им соответствуют
слова 0, 10, 110, 111, длины
которых
- 1,2, 3 и 3 — заданы
в условии
задачи. Выделенные вершины выбраны в дереве так, чтобы путь из
корня в любую такую вершину не проходил через другие выделенные
вершины. Всё это гарантирует, что никакое слово, отвечающее одной
выделенной вершине, не является префиксом слова, отвечающего другой выделенной вершине. Значит, слова В\=0, В»= 10, Вз= 110,
В. = 111 образуют искомую префиксную схему.
До сих пор мы рассматривали только алфавитное кодирование. Но
есть и другие схемы кодирования. Например, обычный англо-русский
словарь можно рассматривать как схему кодирования, при которой
каждому слову из определенного набора слов английского языка ставится в соответствие одно или несколько слов русского языка. Эта
схема кодирования не является алфавитной, поскольку с одного языка
на другой переводятся не отдельные буквы слова, а все слово целиком.
Ясно, что такую схему нельзя назвать однозначно декодируемой, поскольку одно и то же слово русского языка, как правило, допускает несколько различных вариантов перевода на английский язык.
$2. Алгоритм распознавания
однозначности декодирования
Как было установлено в $1, если схема алфавитного кодирования
не удовлетворяет неравенству Макмиллана (48), то она не является однозначно декодируемой. Если же неравенство Макмиллана выполняется, а схема не принадлежит к числу равномерных, префиксных или
суффиксных схем, то вопрос об однозначности декодирования для неё
остается
открытым,
поскольку
такая
схема
может
быть,
а
может
и
не
быть однозначно декодируемой. Конечно, получить ответ на этот вопрос можно было бы, проведя полное исследование схемы, т.е. кодировать все слова исходного алфавита (их бесконечно много, хотя и
счетное число), и тут же их декодировать, проверяя однозначность декодирования. Если схема не является однозначно декодируемой, то
рано или поздно мы это обнаружим. Однако если она однозначно декодируема, то процесс проверки никогда не завершится. Поэтому хо132
телось
бы
ное время
иметь
за
конеч-
отвечал бы на вопрос — обладает ли она свойством
алгоритм,
который
ДЛЯ
произвольной
схемы
одно-
значности декодирования. Надежда на существование такого алгоритма появилась после того, как Ал.А.Марковым был доказан критерий
взаимной однозначности алфавитного кодирования.
Через ИА, №) обозначим множество всех слов в исходном алфавите А, состоящих не более чем из М букв. Если алфавит А содержит 7
букв, то количество слов во множестве ИА, №) равно
РИ...
+.
Через
И’(А, №)
вите В,
обозначим множество таких слов в кодирующем алфа-
которые
всех
получаются
слов
из
в результате
множества
кодирования
схемы
>»
И”А,№).
И’(А,
№) конечно, и в нем содержится не более
с помощью
Очевидно,
множество
и + ИР...
+7
различных слов.
ТЕОРЕМА (Ал.А.Марков). Для любой схемы алфавитного кодирования У существует такое число №; что схема У является однозначно
декодируемой тогда и только тогда, когда однозначно декодируемы
все слова измножества
И’(А,М;).
Число №, о котором идет речь в теореме Маркова, можно вычислить через характеристики самой схемы >. Для этого нужно рассмот-
реть все возможные префиксы и суффиксы кодовых слов В\,Во....,В,
схемы >. Пусть кодовое слово Ву имеет вид
Ву
= РВь
В.
...Вк,5
>
где р - префикс, 5 — суффикс, В; „Ву, ,...Ву,
(49)
- кодовые слова, причем
префикс (суффикс) может быть пустым словом Л, но не должен совпадать
ни
с одним
из кодовых
слов.
Возможно,
что
кодовое
слово
Вх
имеет несколько различных разложений вида (49). Через Т обозначим
максимальное
число
кодовых
слов,
которые
могут
содержаться
в
раз-
ложении другого кодового слова, т.е.
Т = тах Ь
где максимум берется от числа кодовых слов, содержащихся в разложениях вида (49) всех кодовых слов схемы Х. Тогда число №; из теоремы Маркова удовлетворяет неравенству
133
№; «|
+--к=)
(50)
где Г, — суммарная длина всех кодовых слов В, В.....В,
Пример
схемы ».
1. Требуется оценить сверху число №; для схемы > с ко-
довыми словами В! = аВ, В> = с, Вз= асЬ, В4= аБас, В5 = БаББс.
В этой схеме Г. = 16, "= 5. Для нахождения параметра Т рассмотрим все возможные разложения кодовых слов вида (49):
Ви = ав = (а) (6),
В»= Вс = (6)(с),
Вз= ас = (а)(сБ) = (ас)(Ь),
Вд= аБас = (а)(ас) = [аб (ас) = (аБа)(с),
Вь= БабЬсе = (БаБМЬс] = (Ба)(Ьс) =ФаБ)[Ьс] = (БаБЬ)(с),
где для удобства префиксы и суффиксы заключены в круглые скобки,
а кодовые слова — в квадратные. В некоторых разложениях префикс
или суффикс — пустое слово Л. Поскольку в разложении кодового слова В; = (Б)[аБПЬс] = (Б)ВВ› содержится два других кодовых слова, и
это максимально возможное количество для данной схемы >, то параметр Т = 2. Следовательно,
м, <|5-6+)-06-5+2) =19.
Значит,
для
проверки
данной
схемы
на
однозначность
декодирования
сначала можно было бы закодировать все слова в исходном алфавите
А, содержащие не более 19 букв, а затем декодировать полученные
слова. Если каждое из этих слов допускает только один способ декодирования, то согласно теореме Маркова данная схема >» однозначно
декодируема. Иначе же она не обладает свойством однозначности декодирования.
Заметим, что в данном случае пришлось бы кодировать
5+5'+5 +... +51 слов, что практически невозможно сделать. Этот
факт, однако, не снижает теоретическую значимость теоремы Маркова, поскольку благодаря ей проверка схемы на однозначность декодирования
сводится
к анализу
хоть
и большого,
но
конечного
набора
слов
в исходном алфавите и их кодов.
Вслед за теоремой Маркова появился эффективный алгоритм про-
верки однозначности декодирования, который можно использовать для
достаточно сложных схем. Применим этот алгоритм к анализу схемы
из рассмотренного примера 1. Ранее для неё мы уже получили все возможные разложения кодовых слов вида (49). Опираясь на эти разложения, построим множество 5, включающее все такие префиксы, кото-
134
рые также являются и суффиксами кодовых слов. Также добавим
множество > пустое слово Л. В данном случае получится множество
в
ю = {Ь, ас, $.
Теперь построим ориентированный граф Сх с помеченными вершинами и ребрами. Каждая его вершина помечается некоторым элементом
множества ©. Две вершины соединяются ребром только тогда, когда их
метки являются префиксом
и суффиксом
одного и того же кодового
слова. Само ребро помечают частью этого слова, заключенной между
префиксом и суффиксом, и ориентируют от вершины-префикса к вершине-суффиксу. В данном случае кодовое слово В5 разложимо в виде
В5= БаБЬс = (Ба
ПЬс] = (БВ В»,
т.е. начинается с префикса Ь и заканчивается пустым суффиксом. Поэтому в графе @х имеется ребро, помеченное словами ВВ. и направленное от вершины В к вершине Л. Другое ребро графа @х ‚ помеченное словом В!, выходит из вершины Л в вершину ас, поскольку кодо-
вое слово
Ва= арас = [аБ](ас) = Вас).
Третье
ребро
помечено
ас
пустым
словом Л и направлено от вершины
ас
к вершине
Ь, так
как
Л
В:
кодовое
слово
Ь
Вз= ась = (ас)(Ь).
$ Л
ВВ»
Таким образом, получаем граф Ох,
Рис. 60
изображенный на рис. 60.
Заметим, что в нем есть ориентированный цикл, проходящий через вершину Л. Если выписать все пометки вершин и ребер, встречающиеся при движении по этому циклу, начиная с вершины Л, получим слово ЛВ! (ас) \(Б)В.В› = афасфаББс, которое можно разложить на
кодовые слова двумя разными способами
афасраБЬс = [ав [ас
Па
[Ьс] = В. ВзВ: В»,
афасраЬЬс = [афасПЬаБЬс] = ВаБе.
Следовательно, данная схема > не является однозначно декодируемой.
В графе С; надо обращать внимание на ориентированные циклы,
проходящие через вершину Л, поскольку справедливо следующее утверждение.
Утверждение 1. Схема алфавитного кодирования Х является однозначно декодируемой тогда и только тогда, когда в её графе С;
нет ориентированного цикла, проходящего через вершину Л.
135
Можно строго показать, что рассмотренный алгоритм, использующий понятия из теории графов, имеет полиномиальную сложность
относительно
максимальной
является
большим
его
длины
кодового
преимуществом
по
слова.
На
практике
сравнению
с
описанным
это
в
начале $2 экспоненциальным алгоритмом, основанном на переборе огромного количества слов в исходном алфавите и их кодов.
$3. Коды с минимальной избыточностью
Под длиной исходного сообщения и его кода, как и прежде, будем
понимать количество букв, из которых они состоят. Тогда характерной
чертой всех схем алфавитного кодирования является то, что длина исходного сообщения всегда не превосходит длины его кода, т.е. при кодировании длина сообщения либо сохраняется, либо увеличивается.
На практике предпочтение отдается, конечно же, схемам с наименьшим удлинением (избыточностью). Для его вычисления используются
некоторые понятия из теории вероятностей.
Пусть рт, р»..., Р+. - частоты (вероятности), с которыми буквы ал-
фавита А = {а1,а2,....а,} встречаются в исходных сообщениях. Частоты неотрицательны и удовлетворяют равенству
Р
+
Р>
+...-Р,
=1.
Определение. Избыточностью схемы алфавитного кодирования »
с длинами кодовых слов
Д, [>....,/.
при заданных частотах р, ро,..., Р»
называется число
15) = ПР +Ь 2 +...+1р,.
Избыточность схемы -— это средняя длина её кодового слова. Если
бы все буквы исходного алфавита встречались в исходных сообщениях
с одинаковой частотой, то избыточность любой схемы равнялась бы
среднему арифметическому длин её кодовых слов. Действительно, в
этом случае частота встречаемости каждой буквы из алфавита
А=‹ат,а2,....а,} составляет И’. Поэтому избыточность схемы согласно определению равна
КЕ
и...
=
(И+Ь+...+1,)/".
С точки зрения теории вероятностей избыточность схемы — это
математическое ожидание дискретной случайной величины, равной
136
длине
кодового
слова.
Эта величина
принимает
значения
/, [.,..., [,. с
вероятностями ру, ро,..., р- соответственно.
Пример 1. При заданных частотах р! = 0.4, р» = 0.25, рз = 0.2, ра =
0.15 сравнить избыточность двух схем 27 и >, где
ат —>00,
а —>1,
. } 42 —01,
. } 42 —> 01,
21:
аз —> 10,
а4
22:
—11,
аз > 000,
ад
—
001.
Заметим, что 2/ — равномерная схема, а >> — префиксная, поэто-
му обе эти схемы однозначно декодируемы. В схеме 1 длины кодовых
слов / ==
= [1 = 2, следовательно, её избыточность равна
У)
=2-0.4+2-0.25+2.0.2+2.0.15=2.
В схеме >> длины кодовых слов 1/1 = 1,
= 2, [3 = [4 = 3, поэтому еб из-
быточность равна
10.2) =1.0.4+2.0.25+3.0.2+3.0.15
Избыточность
второй
схемы
меньше,
значит,
=1.95.
с практической
точки
зрения эта схема выгоднее. Это объясняется тем, что избыточность —
это средний коэффициент удлинения исходных сообщений при кодировании.
Иными
словами,
избыточность
схемы
показывает,
сколькими
буквами кодирующего алфавита в среднем заменяется каждая буква
исходного алфавита при кодировании сообщения, или, что то же самое, во сколько раз в среднем удлиняется исходное сообщение после
того, как оно будет закодировано с помощью этой схемы. Термин «в
среднем» в данном случае означает математическое понятие из теории
вероятностей. Нестрого говоря, оно подразумевает следующее. Для
одного исходного сообщения коэффициент удлинения при кодировании по схеме >> может быть меньше, чем 1.95. Например, двухбуквенное сообщение а1а> заменяется трехбуквенным кодом 101, т.е. коэффициент удлинения здесь равен 1.5. Для другого сообщения коэффициент удлинения может оказаться больше, чем 1.95. Например, сообшение а1аз кодируется как 1000, т.е. коэффициент удлинения равняется 2. Нетрудно заметить, что коэффициент удлинения схемы >> может
меняться в пределах от 1 до 3, а его среднее значение равно 1.95. Заметим, что коэффициент удлинения для схемы 2/\ всегда равен своему
среднему значению, т.е. двум.
Зафиксируем исходный алфавит А = {а1,ао.....а„} и кодирующий
137
алфавит В={р1,6......Ба}. Рассмотренный пример 1 показывает, что при
фиксированном распределении вероятностей ру, ро,.... р, разные однозначно декодируемые схемы, кодирующие буквы алфавитаА словами из алфавита В, могут иметь разную избыточность. Среди всех таких
схем можно выбрать схему с минимальной избыточностью. Она называется кодом Хафмана. Нетрудно доказать, что избыточность кода
Хафмана
т
всегда удовлетворяет неравенству
1< 1 т 18а
,
где |х|[ означает минимальное целое, большее или равное числу х. Действительно, левое неравенство выполняется вообще для всех схем алфавитного кодирования, в том числе и для кода Хафмана, а правое неравенство следует из того, что избыточность кода Хафмана по его определению не может быть больше, чем избыточность равномерной
схемы кодирования, которая всегда является целым числом, большим
либо равным величины /054 /.
Поскольку код Хафмана — это однозначно декодируемая схема
алфавитного кодирования, то длины её кодовых слов должны удовлетворять неравенству Макмиллана (48). Тогда в силу теоремы из $1
должен существовать префиксный (суффиксный) код Хафмана. Алгоритм построения такого кода рассмотрим на конкретном примере.
Пример 2. Для набора частот р! = 0.4, р>= 0.25, рз= 0.2, ра= 0.1,
рь= 0.05 требуется построить суффиксный код Хафмана с исходным
алфавитом 4 = {а1,40....,а5} и кодирующим алфавитом В = {0,1}.
Прежде всего, по данному набору частот найдем длины кодовых
слов кода Хафмана. Для этого запишем в столбец исходные частоты в
порядке их убывания сверху вниз и будем преобразовывать этот столбец,
на
каждом
шаге
заменяя
Таблица 12
две
самых
маленьких
частоты
их
суммой
и располагая в новом столбце полученные частоты в порядке убы-
вания.
Процесс
04
частот
завершится,
‘
0.25
придем к столбцу с двумя частотами (их сумма равна единице). В
таблице 12 показаны столбцы, которые получаются в данном примере. Клетки, выделенные темным цветом, содержат сумму двух
0.2
01
0.05
самых
как
только
мы
маленьких частот из пре-
дыдущего столбца.
138
преобразования
Теперь построим бинарное дерево, корень которого располагается
в самом верхнем ярусе. Каждая вершина, кроме корня, помечается
числом из таблицы 12. Построение дерева и расстановка пометок его
вершин выполняется рекурсивно. Сначала к единственной вершине —
корню дерева — добавляются две смежные с ней вершины,
которые
помечаются числами из последнего столбца таблицы 12. Рекурсивный
шаг состоит в следующем:
ленной
клетки таблицы,
к вершине, помеченной числом из выде-
добавляются
две новые
смежные
вершины.
Они помечаются частотами из предыдущего столбца, которые в сумме
дают число из этой выделенной клетки. Рекурсивный шаг выполняется
многократно и всякий раз применяется к вершине, соответствующей
выделенной клетке таблицы.
браженное на рис. 61.
Таким
образом,
получаем
дерево,
изо-
0.6
0.2
(000)
0.1
(0010)
(0011)
Рис. 61
Около каждой концевой вершины дерева указана частота, а в
скобках - соответствующее ей кодовое слово кода Хафмана. Эти кодовые
слова
получены
тем
же
методом,
который
использовался
в приме-
ре 5 из $1 для построения префиксного кода. В итоге получаем префиксную схему Хп кода Хафмана
а 1,
а2 >01,
п :3 аз —> 000,
ад —> 0010,
а5 > 0011.
Однако по условию задачи требовалось построить суффиксную схему
кодирования. Она легко получается «зеркальным отражением» префиксной схемы Хи. Следовательно, искомый суффиксный код Хафма139
на задается схемой №, где
Ус {а >
а2 > 10, аз —> 000, ад
> 0100, а5 >1100$.
Избыточность построенного кода равна
10.) =1.0.4+2.0.25+3.0.2+4.0.1+4.0.05=2.1.
В рассмотренном примере кодирующий алфавит В состоял из
двух букв. В случае же, когда алфавит В содержит более двух букв,
процедура построения таблицы 12 и вид соответствующего ей дерева
несколько изменяются. Так, например, если мощность исходного алфавита равна и, а кодирующего алфавита — 4, то во всех столбцах таблицы 12, кроме первого, нужно суммировать не две (как было в примере 2), а 4 самых маленьких частот. В первом же столбце следует
просуммировать {Е наименьших чисел, где параметр {Е определяется по
формуле
4-1, если г делится на (4—1) без остатка,
1=+4, если остаток от деления г на (4—1) равен 1,
остаток от деления и на (4—1), иначе.
В соответствующем дереве все вершины, кроме концевых и, быть может, одной внутренней, имеют ровно 4 смежных вершин из более низкого яруса.
Заметим, что при заданных мощностях алфавитов А и В минимально возможная избыточность равномерной схемы не зависит от на-
бора частот ру, ро, ..., р,. В только что рассмотренном примере минимальная избыточность равномерной схемы равняется трем, поскольку
для
кодирования
пяти
букв
исходного
алфавита
различными
словами
из нулей и единиц одинаковой длины четырех двухбуквенных слов
будет не достаточно и потребуются, как минимум, трехбуквенные сло-
ва.
Кроме
оптимального
избыточностью,
кода Хафмана,
существуют
и
другие,
обладающего
почти
минимальной
оптимальные
схемы
ал-
фавитного кодирования. При определенном распределении частот ру,
р2,....Рь они имеют минимальную или почти минимальную избыточность. Это, например, коды Фано и коды Шеннона. У всех этих кодов
есть общая черта: чем больше частота встречаемости буквы в исходном сообщении,
тем более коротким
словом
она кодируется.
Любую
схему, в которой это свойство нарушено, можно улучшить, уменьшив
её избыточность лишь за счет изменения взаимно однозначного соответствия
между
буквами
исходного
алфавита
140
и кодовыми
словами.
$4. Линейные коды
Из числа всех однозначно декодируемых кодов схемы с кодирующим алфавитом В = {0,1} — самые простые в том смысле, что они
имеют минимальный кодирующий алфавит. Действительно, согласно
утверждению 3 из $1 однозначно декодируемая схема должна удовлетворять неравенству Макмиллана (48). Если кодирующий алфавит состоит из одного символа, то неравенство Макмиллана будет выполняться только в случае, когда исходный алфавит также содержит одну
букву. Такая тривиальная схема не представляет особого интереса. Поэтому кодирующий алфавит однозначно декодируемой схемы должен
состоять, как минимум, из двух символов. Коды с кодирующим алфавитом В = {0,1} называются двоичными кодами. Эти коды широко распространены, поскольку любая информация в вычислительных системах хранится и передаётся в виде, закодированном с помощью нулей и
единиц.
Далее мы будем рассматривать только равномерные двоичные коды, не обращая внимание на порядок следования кодовых слов в схеме
кодирования. Кроме обычного перечисления кодовых слов, такие схемы можно задавать с помощью характеристических функций.
Определение. Булева функция Г (х1,Х>,... Хи) называется характеристической
функцией
двоичного
кода,
если
она
обращается
в едини-
цу на тех и только тех наборах, которые являются кодовыми словами
этого кода.
Множество всех наборов длины и из нулей и единиц графически
соответствует вершинам я-мерного единичного куба. Тогда кодовые
слова двоичного кода > соответствуют только тем вершинам куба, в
которых характеристическая функция схемы У обращается в единицу.
Такая геометрическая интерпретация кодовых слов бывает полезна
при исследовании различных свойств двоичных кодов.
Пусть
@ = (1%... ), у = (В. 2....В,)
ичного кода Х. Через
- два кодовых слова дво-
р(@, й ) обозначим расстояние Хэмминга между
двумя кодовыми словами
@
и й ‚ которое вычисляется по формуле
_
и
р(&,В)=У
а, - В.
(51)
1=1
Формула (51) означает, что расстояние Хэмминга между двумя кодовыми
словами
равно
числу
позиций,
141
в которых
эти
слова
различаются.
Термин «расстояние» здесь оправдан тем, что расстоянию Хэмминга
можно дать и геометрическое толкование. А именно, если кодовые
слова изображать вершинами и-мерного единичного куба, то расстояние между двумя словами - это длина (т.е. число ребер) кратчайшей
цепи,
соединяющей
Определение.
соответствующие
Кодовым
им
вершины.
расстоянием
двоичного
кода
называется
минимальное расстояние Хэмминга между двумя его кодовыми словаМИ.
Кодовое расстояние схемы 7 -— это минимальное число позиций, в
которых могут отличаться два её кодовых слова. Геометрическая интерпретация кодового расстояния — это длина кратчайшей цепи, которая соединяет две вершины и-мерного единичного куба, отвечающие
кодовым
словам
данной
схемы.
Чем
меньше
кодовое
расстояние
и чем
больше кодовых слов, удаленных друг от друга на расстояние, равное
кодовому
расстоянию
схемы,
тем
плотнее
«упакованы»
кодовые
слова
в и-мерном единичном кубе.
Пример 1. Найти кодовое расстояние двоичного кода >, заданного
характеристической функцией /(х, у,2) =(х\му).2.
Данная булева функция обращается в единицу на трех наборах:
(0,0,1), (1,0,1) и (1,1,1). Поэтому схема кодирования 2>/ имеет вид
а —> 001,
43а 101,
аз —> 111.
У:
В построенной схеме возможен и другой порядок следования кодовых
слов, однако её кодовое расстояние в любом случае будет равно единице.
Далее нам потребуются некоторые понятия из векторной алгебры.
Линейной комбинацией кодовых слов 0/,02,...@, назовем сумму по
модулю 2 вида
104 ® 1292 Ф...Ф Аа,
где коэффициенты 471, /12.....А,
принадлежат множеству {0,1}. Сложе-
ние кодовых слов в линейной комбинации выполняется поразрядно.
Например, 1-(001)Ф0-(101)®1-а11)=а10).
Говорят, что кодовые слова
хотя бы одно
@\,02.....@,
из них является линейной
линейно зависимы,
комбинацией
остальных
если
слов
из этого набора. Если же ни одно из них не является линейной комбинацией
остальных
слов,
то
они
считаются
142
линейно
независимыми.
Определение. Двоичный код называется линейным кодом, если
любая линейная комбинация его кодовых слов также является кодо-
вым словом этого кода.
Двоичный код из примера 1 не является линейным, поскольку
линейная комбинация его кодовых слов (001)® (111) равна (110), что
не является кодовым словом этого кода.
Из определения линейного кода можно получить следующие его
свойства.
1.
Любой линейный код содержит нулевое кодовое слово, т.е.
слово, состоящее только из нулей. Действительно, если Х -— кодовое
слово кода >, то линейная комбинация & Фа ‚ с одной стороны, равняется нулевому слову, а с другой стороны, должна принадлежать коду >. Код из примера 1 не содержит нулевого слова, по этой причине
он
не является
линейным
кодом.
2.
Кодовые слова линейного кода обязательно линейно зависимы, так как линейный код всегда содержит нулевое слово, а оно выражается через другие кодовые слова с помощью линейной комбинации вида ХФа.
3.
Если линейный код не состоит из одного только нулевого
слова, то можно так выбрать несколько его линейно независимых кодовых
слов,
циями
выбранных
чтобы
все
кодовые
слов.
слова
Действительно,
являлись
линейными
множество
комбина-
кодовых
слов
ли-
нейного кода замкнуто относительно операций сложения по модулю 2
и умножения на коэффициент 0 или 1. Следовательно, оно является
линейным
векторным
пространством,
а набор
линейно
независимых
кодовых слов, через которые в виде линейных комбинаций выражаются все кодовые слова, образует один из базисов этого пространства.
Поэтому, пользуясь аналогией с линейными векторными пространствами,
такой
набор
линейно
независимых
кодовых
СЛОВ
будем
называть
базисом кода, а количество слов в базисе — размерностью кода. Сам
линейный код можно рассматривать как линейную оболочку базисных
кодовых слов, т.е. набор их всевозможных линейных комбинаций.
4.
и
Линейный
у
код размерности
г имеет мощность
г
2, т.е. со-
держит ровно 2’ кодовых слов. Это следует из существования базиса в
векторном пространстве кодовых слов линейного кода, где каждое кодовое слово является линейной комбинацией 7 базисных кодовых слов.
По свойству базиса коэффициенты в разложении кодового слова по
базисным словам определяются единственным образом (в векторной
алгебре они называются координатами вектора в данном базисе). Поэтому
разные
кодовые
слова
выражаются
143
различными
линейными
комбинациями
вых
слов,
то
базисных
слов.
существует
ровно
А поскольку
2
г
их
имеется г базисных
различных
хх
линеиных
5.
Кодовое расстояние линейного кода равно
числу единиц в ненулевом кодовом слове этого кода.
Пример
функцией
2.
Показать,
что
двоичный
/(х,х.,х.,х.)=(х
Фх,
код
ФП.х.
кодох
комбинаций.
минимальному
с характеристической
является
линейным
ко-
дом, найти его базис, размерность и кодовое расстояние.
Заданная характеристическая функция обращается в единицу
только тогда, когда х1= х», х.= 0, а хз принимает любые значения. Поэтому данный линейный код имеет четыре кодовых слова — (0000),
(0010), (1100), (1110). По свойству 4 линейного кода в полученном коде базис образуют любые два линейно независимых слова, например,
(0010) и (1100). Согласно свойству 5 кодовое расстояние этого кода
равно 1, так как кодовое слово (0010) содержит меньше всего единиц ровно одну. Доказать, что этот код является линейным, можно двумя
способами. Первый способ: составить все возможные линейные комбинации полученных кодовых слов (их будет ровно 2“) и проверить,
что каждая такая комбинация совпадает с одним из кодовых слов.
Второй способ: показать, что если
вых слова, то их сумма
@& и В
— два произвольных кодо-
&@ ® В также является кодовым словом. Дейст-
вительно, пусть @ = (#134), В = (В. В.В-ДВ.)
заданного кода. Тогда они удовлетворяют условиям
0
= “2,
4
= 0,
А
=
д,
Ва
=0.
м. ФД,
=0,
- кодовые
слова
Из этих равенств следует, что
я
т.е. сумма У=&ФР
ФВ
=а.
ФР,
обращает в единицу характеристическую функ-
цию кода и, значит, также является кодовым словом данного кода.
Определение. Порождающей матрицей линейного кода размерности
г с длинами
кодовых
слов,
равными
и,
называется
матрица
раз-
мера / на и, в строках которой стоят базисные кодовые слова этого кода.
Порождающая матрица определяет линейный код, указывая его
базис. Две различные порождающие матрицы могут задавать один и
тот же код, потому что всякий линейный код имеет несколько разных
базисов, если его размерность / >1. Порождающей матрицей кода из
примера 2 может служить любая из матриц
144
ооо
ооо
1110
1100/1110)
1 100)?
а также всякая матрица, которая получается из этих матриц перестановкой строк.
Определение. Кодовые слова
называются ортогональными, если
о
Ву Фа>р>
& = (0#12..„)
Ф...Фа,р,
и В =(Вр....В,)
=0.
Очевидно, что каждое слово ортогонально нулевому слову. Кроме
того, оно может быть ортогонально и самому себе. Например, слово
(0101) ортогонально словам (0000), (0010), (1000), (1010), (0100,
(0111), (1101) и (1111). Обратим внимание на то, что эти восемь слов
образуют линейный код.
Определение. Двойственным кодом к линейному коду Х называется двоичный код, каждое кодовое слово которого ортогонально любому кодовому слову кода >.
Двойственный код обладает рядом свойств. Наиболее важное из
них состоит в том, что двойственный код к линейному коду размерности 7 сам является линейным кодом размерности (и — 7) ‚ где и - длина
кодового слова. Это свойство можно доказать, используя аналогию с
линейными векторными пространствами. А именно, множество всех
слов, каждое из которых ортогонально любому слову из некоторого
набора слов, замкнуто относительно операций сложения по модулю
два и умножения на 0 или 1 и, следовательно, образует линейный код.
Двойственный код в некотором смысле напоминает ортогональное дополнение к подпространству в евклидовом пространстве. Размерности
подпространства и его ортогонального дополнения, как известно, в
сумме дают размерность всего пространства. Размерности пространства в данном случае соответствует длина кодового слова и, размерности
подпространства — размерность 7 линейного кода, а размерности ортогонального дополнения — размерность двойственного кода.
Пример 3. Линейный код задан порождающей матрицей
00011
ото:
Требуется найти порождающую матрицу и характеристическую функцию двойственного кода.
Поскольку исходный линейный код имеет размерность 2, то искомый двойственный должен иметь размерность 3. Пусть (х1х2...Х5) —
145
кодовое слово двойственного кода. Тогда оно должно быть ортогонально обеим строкам порождающей матрицы и, следовательно, удовлетворять однородной системе
х4
Фх.
=0,
х
Фх.
Фх
=0.
Нетрудно проверить, что если кодовое слово (х1х2...х5) ортогонально
базисным словам, то оно ортогонально и любой их линейной комбинации. Поэтому все решения указанной системы, и только они являются
кодовыми словами искомого двойственного кода. Эта система имеет
три линейно независимых решения, так как ранг порождающей матрицы равен двум. Это согласуется с тем, что размерность искомого двойственного кода должна быть равна 3. Выберем в качестве базисных
переменных
хз ИХ..
Тогда,
переписав
систему
в виде
Хх. д = Х5,
Хх
=М
® Х5,
и каждый раз полагая равной единице только одну из свободных переменных >, х> или х5, получим три линейно независимых решения этой
системы: (10100), (01000), (00111) (аналог фундаментальной системы
решений в линейной алгебре). Они образуют порождающую матрицу
двойственного кода, которая в данном случае будет иметь вид
ото
ооо
Ооо
Чтобы получить характеристическую функцию двойственного кода,
заменим однородную систему, указанную в начале решения, равносильным ей равенством (х4 ® х5)
У (м ФхзФх5) =0, которое можно
записать
иначе
(24 Фх) мо ФхФх5)=1.
Используя правило де Моргана из булевой алгебры, преобразуем полученное соотношение к виду
(х4
Фх;)
(1
Фх:
Фх,)
= (24
®х;Ф1&
(1
Фх.
Фх,
ФП
=1.
Все кодовые слова двойственного кода и только они удовлетворяют
этому равенству. Значит, в качестве характеристической функции полученного двойственного кода можно взять, например, булеву функ-
146
цию /(%,х2,х3,Хд,Х5) = (х4 Фх5 ФП.(1 ФхФх5 ФП.
Построенную в примере 3 порождающую матрицу двойственного
кода иногда называют проверочной матрицей. Это связано с тем, что
некоторые линейные коды позволяют обнаруживать и даже исправлять
ошибки, возникающие при передаче кода по каналу связи. Для этого
применяется процедура проверки полученного кода на четность с использованием порождающей матрицы двойственного кода, т.е. проверочной матрицы.
$5. Самокорректирующиеся коды
Будем
считать,
что кодом
бое т-разрядное слово
исходного
@ =(0%102..„)
сообщения
в алфавите
может
быть
лю-
{0,1}. Множество
всех таких слов образует т-разрядный линейный код мощности 2". В
реальных
системах
при
передаче
информации
по
каналам
связи
в силу
разных причин может происходить искажение сигналов. В результате
отдельные
ноль
может
разряды
передаваемых
превратиться
кодовых
в единицу,
слов
а единица
могут
измениться,
— в ноль.
Если
т.е.
искаже-
нию подвергся только один разряд передаваемого слова, будем называть это одиночной ошибкой.
Без
рования
дополнительных
мы
не
сможем
мер
узнать,
по
повышению
является
ли
надежности
полученное
схемы
на
коди-
выходе
ка-
нала связи кодовое слово точной копией отправленного слова. Самый
простой способ повысить помехоустойчивость схемы — это удлинить
кодовые слова, добавив контрольный разряд, и выполнять проверку
полученного слова на четность. Контрольный разряд отправляемого
слова следует заполнять так, чтобы сумма всех разрядов вместе с контрольным была четной (или, что то же самое, сумма по модулю два
всех разрядов, включая контрольный, была равна нулю). Такое незначительное изменение кодовых слов исходного линейного кода позволит нам обнаружить факт возникновения одиночной ошибки, но не
даст возможности определить, в каком именно разряде эта ошибка
произошла. Далее в этом параграфе мы рассмотрим более сложное
преобразование схемы кодирования, при котором становится возможным и обнаружение, и исправление одиночной ошибки. Такую схему
кодирования будем называть самокорректирующимся кодом.
Тривиальный подход к построению самокорректирующегося кода
— это трехкратное дублирование каждого разряда исходного кодового
слова. Тогда, если исходное слово имело вид @ = (04102..@„), то от147
правлено
будет
кодовое
слово
Д= (0101041620292...
@и@т)
длины
3.т . Полученное на выходе слово будет сжато в три раза с помощью
обратной замены каждой группы из трех символов о;а;и; одним символом
же
с; , если при передаче слова
случится
одиночная
ошибка,
Й не произойдет искажений. Если
то
единственная
ошибочная
группа
символов будет состоять либо из двух нулей и одной единицы, либо из
двух единиц и одного нуля. Выбор правильного символа осуществляется голосованием, т.е. в первом случае вся ошибочная группа заменяется нулем, а во втором — единицей. Недостаток такого подхода в том,
что длина кодового слова при передаче увеличивается в 3 раза, значит,
повышается вероятность ошибки, а вместе с ней возрастает опасность
одновременного искажения двух и более разрядов.
Хэмминг предложил другую, более экономную схему самокорректирующегося кода, у которой длина исходного слова увеличивается
незначительно. В основе схемы лежит уже предлагавшаяся ранее идея
добавления контрольного разряда для проверки полученного слова на
четность. Однако в коде Хэмминга используется не один, а несколько
контрольных разрядов, и каждый из них заполняется таким образом,
чтобы анализ их содержимого в случае одиночной ошибки позволил
точно определить, в каком именно разряде произошло искажение.
Разряды исходного слова & = (002..„) будем называть информационными,
в отличие
в передаваемом слове
от контрольных
разрядов,
которые
появляются
у = (14о...В„). Здесь и = т + К, где К - количе-
ство контрольных разрядов. При передаче слова
Д
на выходе канала
связи мы можем получить одно из (и + 1) различных слов:
Яо = (А 23...В„),
Я =(@>3...Д,).
72 = (>...В),
7, = (А 22%...В.),
где
0=1,1=0.
Здесь 7% = Д ‚ что соответствует передаче слова Д без
искажений, а слова
7,,7......7„
возникают из-за одиночной ошибки.
Заметим, что расстояние Хэмминга от слова
ДВ до любого из слов
7,7 ,....7„ равно единице. Верно и обратное: всякое слово, удаленное
148
от
ДВ
на расстояние
1, вычисляемое по Хэммингу
согласно формуле
(51), обязательно совпадет с одним из слов 7!,7,....7„. Поэтому вершины
я-мерного
единичного
куба, отвечающие
словам
7,7, ,7.,...,
‚..7„› образуют и-мерный шар единичного радиуса, в центре которого
находится слово Уд. На рис. 62 изображены два трехмерных единичных
шара, составленные из вершин трехмерного единичного куба. Центры
шаров выделены черным и белым
квадратиками,
вершины
а
их
периферийные
— соответственно
черными
и
Рис. 62
белыми кружками.
Таким образом, слово
ходе
сего
переходит
в
Я ‚ поданное на вход канала связи, на выкакое-либо
из
(и+1)
вершинам
различных
я-мерного
слов
70, 7ь72»...7„»›
соответствующих
единичного
шара с центром
7%. Для того, чтобы мы могли по полученному слову
узнать, какое слово было отправлено, необходимо, чтобы единичные
шары с разными центрами не имели общих вершин. Это возможно, если расстояние между центрами шаров будет не меньше трех. Значит,
кодовое расстояние кода Хэмминга, составленного из всех неискаженных
слов
у
‚ также
не
может
быть
меньше
трех.
Получим оценку на минимальное значение А — количество контрольных разрядов в коде Хэмминга. Существует всего 2” исходных
слов @ = (0192..„). После добавления исходному слову А контрольных
разрядов
оно
превращается
в соответствующее
слово
р = (2140...В,)
в коде Хэмминга, причем, разные
разные
р . Поэтому
Каждое
из них на выходе
количество различных
&
слов
превращаются в
р
канала связи переходит
также равно 2”.
в одно
из (и + 1)
слов, соответствующих вершинам единичного шара с центром
Как было отмечено ранее, единичные
словам
шары,
отвечающие
7 = р .
различным
р, не должны иметь общих вершин. Поэтому суммарное ко-
личество вершин в этих шарах, с одной стороны, равно
(и+1).2”, ас
другой
которые
быть
стороны,
получены
оно
на
совпадает
выходе
канала
с
количеством
слов,
связи.
все
149
Так
как
эти
слова
могут
имеют
по
и разрядов
и состоят
из
нулей
и единиц,
то
их число
2’. Следовательно, должно выполняться неравенство
Из него, учитывая соотношение я = 1 + К, получаем
п
не
превосходит
(и +1).2” <2”.
(т+Е+1-:2”
< 27+,
откуда следует, что
(т+к+0< 2.
(52)
Теперь минимальное значение А можно найти из неравенства (52) подбором.
Пример 1. Исходные слова & имеют длину 5. Требуется выяснить, какую длину будут иметь кодовые слова кода Хэмминга.
По условию задачи т = 5. Поэтому определим число контрольных
разрядов А из неравенства (52), переписав его в следующем виде:
(6+Ю=2.
Последовательно подставляя вместо К числа 1,2,3 и т.д., выясняем, что
наименьшее допустимое значение ХА равно 4. Значит, кодовые слова
кода Хэмминга в данном случае имеют длину и = т +К=
9.
Код Хэмминга, корректирующий одиночную ошибку, является
экономным в том смысле, что для длинных исходных слов @ количество добавленных контрольных разрядов А гораздо меньше, чем число
информационных разрядов 77. Действительно, из неравенства (52) следует, что
т
2 -К-1.
Поэтому, если величина 1 возрастает, то растет и число А. А поскольку
число контрольных разрядов в коде Хэмминга выбирается минимально
возможным, удовлетворяющим неравенству (52), то при больших т
выполняется соотношение
^^ /082т.
Это означает, что при большой
длине т исходного слова число добавленных контрольных разрядов
незначительно. Например, для 10 информационных разрядов потребуется всего четыре контрольных разряда, для 100 информационных -—
семь контрольных, а для 1000 -— десять.
Следующий важный вопрос — где именно в коде Хэмминга располагаются контрольные разряды, и как происходит их заполнение. Для
удобства будем нумеровать контрольные разряды в кодовом слове ДВ
..
|
слева направо степенями двойки, т.е. числами 1,2,4,8,..., 2 '. Остальные позиции содержат информационные разряды. На рис. 63 изображено кодовое слово с 6 информационными и 4 контрольными разря150
дами. Все разряды пронумерованы числами от 1 до 10, а контрольные
разряды
выделены
_
темным
цветом.
м м
ка
Рис. 63
Информационные
разряды
кодового
слова
В = (21...)
за-
полняются слева направо простым переносом символов из исходного
слова @ = (91 42..„). Правило заполнения контрольных разрядов
сложнее. Чтобы его сформулировать, рассмотрим множества:
И ={1,3,5,7,9,11,...},
И. ={2,3,6,7,10,11,...},
И. ={4, 5,6, 7,12, 13,...},
Из ={8,9,10,11.12,13,...}.
Эту последовательность
пользуя
следующую
— это степени двойки.
множеств можно
закономерность.
(53)
продолжать
Во-первых,
бесконечно,
номера
ис-
множеств
И’;
Во-вторых, минимальное число во множестве
И;
равно 7. В-третьих, множество И; содержит те, и только те натуральные
числа, в разложении которых по различным
степеням двойки
.
1,2,4,8,...,1,....2
Ш
.
1 слагаемое / входит с коэффициентом
При заполнении контрольных разрядов
1.
Ду, До, Ва, Д,..., Рокф
ко-
дового слова р используются следующие равенства:
А =3®4&Ф27ФАФдД®...,
22
=
4%Фр7®р, ФА|®...,
РА =65ФФрФА> ФА з®... итд.
Для каждого
{= 1, 2, 4, 8...., 2
содержимое
/-го контрольного
да получается суммированием последующих разрядов слова
разря-
Д, номе-
ра которых содержатся во множестве И; из последовательности (53). А
поскольку всякое множество Г; содержит единственную степень двойки (это число 7), и она является минимальным числом в этом множестве, то каждый контрольный разряд вычисляется только через содержимое информационных разрядов.
Пример 2. Требуется построить кодовое слово кода Хэмминга, со151
ответствующее исходному слову & = (001011).
Прежде всего заметим, что при шести информационных разрядах
количество контрольных разрядов А должно быть равно четырем. Следовательно, кодовое слово будет состоять из десяти разрядов. Сначала
заполним его информационные разряды. Получим слово, изображенное на рис. 64 (контрольные разряды выделены темным цветом).
_
м
Рис. 64
Теперь в соответствии с указанным выше
контрольные разряды:
В =0Ф0Ф0Ф1=1,
правилом
заполним
2 =0Ф1Ф0Ф1=0,
ДВА =0Ф1Ф0=1,
В = Ро ® Ро =1$1=0.
В игоге получаем искомое кодовое слово
Й = (1001010011).
Хотя принцип заполнения контрольных разрядов в коде Хэмминга
довольно сложный, зато он позволяет проверять правильность передачи кодовых слов по каналу связи и в случае возникновения одиночной
ошибки точно определять её местоположение. Для этого используются
так называемые контрольные суммы. У кода Хэмминга с К контрольными разрядами имеется ровно А контрольных сумм. Обозначим их
через 5:, где номер { является степенью двойки, т.е. принимает значения
—1
1, 2, 4, 8,....2°.
При
вычислении
каждой
м
контрольной
№
суммы
складывается содержимое одного из контрольных и нескольких информационных разрядов, а именно:
5
=4®Ф2:
4
ФрФАФАФ...,
5) =22Ф ФФ
Ри ФД...
54
=4ФД&ФДЖФВ
ФА.
ФД...
ит.д.
Указанное правило вычисления контрольных сумм гарантирует, что
при передаче кодового слова без искажений все контрольные суммы
будут равны нулю. Действительно, первое слагаемое в каждой кон-
трольной сумме 5; — это содержимое контрольного разряда Д,, а оно
равно сумме как раз тех информационных разрядов, которые следуют
152
за ним в правой части формулы для вычисления ›;.
Если же во время передачи кодового слова случится одиночная
ошибка, то номер искаженного разряда можно будет легко определить
с помощью контрольных сумм. Для этого достаточно вычислить все
контрольные суммы (т.е. проверить их на четность) и сложить номера
контрольных сумм, отличных от нуля.
Пример 3. На выходе канала связи получили кодовое слово кода
Хэмминга
У = (1001011101). Требуется выяснить, какое слово
ДВ было
отправлено.
Найдем контрольные суммы. Их будет столько же, сколько и контрольных разрядов, т.е. четыре. Получим
5 =1Ф0Ф0®190=0,
5 =0®90®1®1®1=1,
54 =1Ф0®191=1,
5; =190®1=0.
Отличными
от нуля оказались контрольные
суммы > и 54. Складывая
их номера, узнаём, что одиночная ошибка произошла в шестом разряде слова У. Исправив в этом разряде единицу на ноль, получим от-
правленное слово Д = (1001001101).
В
заключение
отметим,
что
кодовыми
словами
кода
Хэмминга
яв-
ляются только неискаженные слова, т.е. наборы из нулей и единиц,
подаваемые на вход канала связи. Кодовое расстояние такого кода не
меньше трех. Если же рассматривать код, образованный словами на
выходе
ным,
канала связи, то такой код, вообще
говоря, не является линей-
а его кодовое расстояние равно единице.
Можно
доказать, что
при п=2' -1 вершины я-мерного единичного куба можно разбить на
непересекающиеся единичные шары (случай, когда и = 3, изображен
на рис.62, с.148). При таких и кодовые слова кода Хэмминга являются
центрами шаров и вместе с их возможными искажениями в одном разряде располагаются в и-мерном единичном кубе максимально плотно,
покрывая все его вершины.
Существуют самокорректирующиеся коды, позволяющие обнаруживать и исправлять 5 ошибок, где 5>1. Их кодовое расстояние
больше или равно 25 + 1, что возможно лишь при менее плотном расположении кодовых слов в вершинах и-мерного единичного куба.
153
Download