А9 Тема: Кодирование и декодирование информации.

Что нужно знать:

·  кодирование – это перевод информации с одного языка на другой (запись в другой системе символов,
в другом алфавите)

·  обычно кодированием называют перевод информации с «человеческого» языка на формальный, например, в двоичный код, а декодированием – обратный переход

·  один символ исходного сообщения может заменяться одним символом нового кода или несколькими символами, а может быть и наоборот – несколько символов исходного сообщения заменяются одним символом в новом коде (китайские иероглифы обозначают целые слова и понятия)

·  кодирование может быть равномерное и неравномерное;
при равномерном кодировании все символы кодируются кодами равной длины;
при неравномерном кодировании разные символы могут кодироваться кодами разной длины, это затрудняет декодирование

·  закодированное сообщение можно однозначно декодировать с начала, если выполняется условие Фано: никакое кодовое слово не является началом другого кодового слова;

·  закодированное сообщение можно однозначно декодировать с конца, если выполняется обратное условие Фано: никакое кодовое слово не является окончанием другого кодового слова;

·  условие Фано – это достаточное, но не необходимое условие однозначного декодирования.

Пример задания

По каналу связи передаются сообщения, содержащие только 4 буквы: Е, Н, О, Т. Для кодирования букв Е, Н, О используются 5-битовые кодовые слова: Е - 00000, Н - 00111, О - 11011. Для этого набора кодовых слов выполнено такое свойство: любые два слова из набора отличаются не менее чем в трёх позициях. Это свойство важно для расшифровки сообщений при наличии помех. Какое из перечисленных ниже кодовых слов можно использовать для буквы Т, чтобы указанное свойство выполнялось для всех
четырёх кодовых слов?

1) 1100не подходит ни одно из указанных выше слов

Решение:

1)  код, рассмотренный в условии задачи, относится к помехоустойчивым кодам, которые позволяют обнаружить и исправить определенное количество ошибок, вызванных помехами при передаче данных;

1)  количество позиций, в которых отличаются два кодовых слова одинаковой длины, называется расстоянием Хэмминга

2)  код, в котором расстояние Хэмминга между каждой парой кодовых слов равно d, позволяет обнаружить до d-1 ошибок; для исправления r ошибок требуется выполнение условия

d ≥ 2r + 1

поэтому код с d = 3 позволяет обнаружить одну или две ошибки, и исправить одну ошибку.

3)  легко проверить, что для заданного кода (Е - 00000, Н - 00111, О - 11011) расстояние Хэмминга равно 3; в таблице выделены отличающиеся биты, их по три в парах Е-Н и Н-О и четыре
в паре Е-О:

Е – 00000 Е – 00000 Н – 00111

Н – 00111 О – 11011 О – 11011

4)  теперь проверяем расстояние между известными кодами и вариантами ответа; для первого ответа 11111 получаем минимальное расстояние 1 (в паре О-Т), этот вариант не подходит:

Е – 00000 Н – 00111 О – 11011

Т - 11111 Т - 11111 Т - 11111

5)  для второго ответа 11100 получаем минимальное расстояние 3 (в парах Е-Т и О-Т):

Е – 00000 Н – 00111 О – 11011

Т - 11100 Т - 11100 Т - 11100

6)  для третьего ответа 00011 получаем минимальное расстояние 1 (в паре Н-Т) , этот вариант не подходит:

Е – 00000 Н – 00111 О – 11011

Т - 00011 Т - 00011 Т - 00011

7)  таким образом, расстояние Хэмминга, равное 3, сохраняется только для ответа 2 Ответ: 2.

Ещё пример задания:

Для кодирования некоторой последовательности, состоящей из букв А, Б, В, Г и Д, используется неравномерный двоичный код, позволяющий однозначно декодировать полученную двоичную последовательность. Вот этот код: А–00, Б–010, В–011, Г–101, Д–111. Можно ли сократить для одной из букв длину кодового слова так, чтобы код по-прежнему можно было декодировать однозначно? Коды остальных букв меняться не должны. Выберите правильный вариант ответа.

1) для буквы Б –это невозможно

3) для буквы В –для буквы Г – 01

Решение (1 способ, проверка условий Фано):

8)  для однозначного декодирования достаточно, чтобы выполнялось условие Фано или обратное условие Фано;

9)  проверяем последовательно варианты 1, 3 и 4; если ни один из них не подойдет, придется выбрать вариант 2 («это невозможно»);

10)  проверяем вариант 1: А–00, Б–01, В–011, Г–101, Д–111.

«прямое» условие Фано не выполняется (код буквы Б совпадает с началом кода буквы В);

«обратное» условие Фано не выполняется (код буквы Б совпадает с окончанием кода буквы Г); поэтому этот вариант не подходит;

11)  проверяем вариант 3: А–00, Б–010, В–01, Г–101, Д–111.

«прямое» условие Фано не выполняется (код буквы В совпадает с началом кода буквы Б);

«обратное» условие Фано не выполняется (код буквы В совпадает с окончанием кода буквы Г); поэтому этот вариант не подходит;

12)  проверяем вариант 4: А–00, Б–010, В–011, Г–01, Д–111.

«прямое» условие Фано не выполняется (код буквы Г совпадает с началом кодов букв Б и В);
но «обратное» условие Фано выполняется (код буквы Г не совпадает с окончанием кодов остальных буквы); поэтому этот вариант подходит; правильный ответ – 4.

Пример задания: демо_12

Для кодирования некоторой последовательности, состоящей из букв А, Б, В, Г и Д, решили использовать неравномерный двоичный код, позволяющий однозначно декодировать двоичную последовательность, появляющуюся на приёмной стороне канала связи. Использовали код: А–1, Б–000, В–001, Г–011.
Укажите, каким кодовым словом должна быть закодирована буква Д. Длина этого кодового слова должна быть наименьшей из всех возможных. Код должен удовлетворять свойству однозначного декодирования.

1)) 010

Решение:

13)  заметим, что для известной части кода выполняется условие Фано – никакое кодовое слово не является началом другого кодового слова

14)  если Д = 00, такая кодовая цепочка совпадает с началом Б = 000 и В = 001, невозможно однозначно раскодировать цепочку 000000: это может быть ДДД или ББ; поэтому первый вариант не подходит

15)  если Д = 01, такая кодовая цепочка совпадает с началом Г = 011, невозможно однозначно раскодировать цепочку 011: это может быть ДА или Г; поэтому второй вариант тоже не подходит

16)  если Д = 11, условие Фано тоже нарушено: кодовое слово А = 1 совпадает с началом кода буквы Д, невозможно однозначно раскодировать цепочку 111: это может быть ДА или ААА; третий вариант
не подходит

17)  для четвертого варианта, Д = 010, условие Фано не нарушено; правильный ответ 4.



Еще пример задания:

Для передачи по каналу связи сообщения, состоящего только из букв А, Б, В, Г, решили использовать неравномерный по длине код: A=0, Б=10, В=110. Как нужно закодировать
букву Г, чтобы длина кода была минимальной и допускалось однозначное разбиение кодированного сообщения на буквы?

111 4) 11

Решение (вариант 1, метод подбора):

1)  рассмотрим все варианты в порядке увеличения длины кода буквы Г

2)  начнем с Г=1; при этом получается, что сообщение «10» может быть раскодировано двояко:
как ГА или Б, поэтому этот вариант не подходит

3)  следующий по длине вариант Г=11; в этом случае сообщение «110» может быть раскодировано
как ГА или В, поэтому этот вариант тоже не подходит 4)третий вариант, Г=111, дает однозначное раскодирование во всех сочетаниях букв, поэтому… ответ – 3.

Еще пример задания:

Для кодирования букв А, Б, В, Г решили использовать двухразрядные последовательные двоичные числа (от 00 до 11, соответственно). Если таким способом закодировать последовательность символов БАВГ и записать результат шестнадцатеричным кодом, то получится

1) 4B16BACD16

Решение:

18)  из условия коды букв такие: A – 00, Б –01, В – 10 и Г – 11, код равномерный

19)  последовательность БАВГ кодируется так:= 1001011

20)  разобьем такую запись на тетрады справа налево и каждую тетраду переведем в шестнадцатеричную систему (то есть, сначала в десятичную, а потом заменим все числа от 10 до 15 на буквы A, B, C, D, E, F); получаем 1001011 = 0 = 4B16 Правильный ответ – 1.

Еще пример задания:

Черно-белое растровое изображение кодируется построчно, начиная с левого верхнего угла и заканчивая в правом нижнем углу. При кодировании 1 обозначает черный цвет, а 0 – белый.

Для компактности результат записали в шестнадцатеричной системе счисления. Выберите правильную запись кода.

1) BD9AA5 2) BDA9B5 3) BDA9D5 4) DB9DAB

Решение:

1)  «вытянем» растровое изображение в цепочку: сначала первая (верхняя) строка, потом – вторая, и т. д.:

1 строка

2 строка

3 строка

4 строка

2)  в этой полоске 24 ячейки, черные заполним единицами, а белые – нулями:

1

0

1

1

1

1

0

1

1

0

1

0

1

0

0

1

1

1

0

1

0

1

0

1

1 строка

2 строка

3 строка

4 строка

3)  поскольку каждая цифра в шестнадцатеричной системе раскладывается ровно в 4 двоичных цифры, разобьем полоску на тетрады – группы из четырех ячеек (в данном случае все равно, откуда начинать разбивку, поскольку в полоске целое число тетрад – 6):

1

0

1

1

1

1

0

1

1

0

1

0

1

0

0

1

1

1

0

1

0

1

0

1

4)  переводя тетрады в шестнадцатеричную систему, получаем последовательно цифры B (11), D(13), A(10), 9, D(13) и 5, то есть, цепочку BDA9D5 Правильный ответ – 3.

Еще пример задания:

Для передачи чисел по каналу с помехами используется код проверки четности. Каждая его цифра записывается в двоичном представлении, с добавлением ведущих нулей до длины 4, и к получившейся последовательности дописывается сумма её элементов по модулю 2 (например, если передаём 23, то получим последовательность 00101 00110). Определите, какое число передавалось по каналу в виде 0100011?

1) 5902

Решение:

1)  сначала разберемся, как закодированы числа в примере; очевидно, что используется код равномерной длины; поскольку 2 знака кодируются 10 двоичными разрядами (битами), на каждую цифру отводится 5 бит, то есть 2 → 00101 и 3 → 00110

2)  как следует из условия, четыре первых бита в каждой последовательности – это двоичный код цифры, а пятый бит (бит четности) используется для проверки и рассчитывается как «сумма по модулю два», то есть остаток от деления суммы битов на 2; тогда

2 = 00102, бит четности (0 + 0 + 1 + 0) mod 2 = 1

3 = 00112, бит четности (0 + 0 + 1 + 1) mod 2 = 0

3)  но бит четности нам совсем не нужен, важно другое: пятый бит в каждой пятерке можно отбросить!

4)  разобъем заданную последовательность на группы по 5 бит в каждой:

01010, 10010, 01111, 00011.

5)  отбросим пятый (последний) бит в каждой группе: 0101, 1001, 0111, 0001.
это и есть двоичные коды передаваемых чисел: 01012 = 5, 10012 = 9, 01112 = 7, 00012 = 1.

6)  таким образом, были переданы числа 5, 9, 7, 1 или число 5971.

7)  Ответ: 2.

А9 Задачи для тренировки.

№ 69 – 71

69)  По каналу связи передаются сообщения, содержащие только 4 буквы: А, Б, В, Г. Для кодирования букв А, Б, В используются 5-битовые кодовые слова: А - 10000, Б - 00101, В - 01010. Для этого набора кодовых слов выполнено такое свойство: любые два слова из набора отличаются не менее чем в трёх позициях. Это свойство важно для расшифровки сообщений при наличии помех. Какое из перечисленных ниже кодовых слов можно использовать для буквы Г, чтобы указанное свойство выполнялось для всех четырёх кодовых слов?

1) 0110не подходит ни одно из указанных выше слов

70)  (http://ege. *****) Для передачи помехоустойчивых сообщений в алфавите, который содержит 16 различных символов, используется равномерный двоичный код. Этот код удовлетворяет следующему свойству: в любом кодовом слове содержится четное количество единиц (возможно, ни одной). Какую наименьшую длину может иметь кодовое слово?

1 6

71)  По каналу связи передаются сообщения, содержащие только 5 букв А, И, К, О, Т. Для кодирования букв используется неравномерный двоичный код с такими кодовыми словами:

А-0, И-00, К-10, О-110, Т-111.

Среди приведённых ниже слов укажите такое, код которого можно декодировать только одним способом. Если таких слов несколько, укажите первое по алфавиту.

1) КАА 2) ИКОТА 3) КОТ 4) ни одно из сообщений не подходит

№ 1 -

1. Для кодирования букв А, Б, В, Г решили использовать двухразрядные последовательные двоичные числа (от 00 до 11 соответственно). Если таким способом закодировать последовательность символов ГБВА и записать результат шестнадцатеричным кодом, то получится:

1) 13DBCA16 3) D

2. Для 5 букв латинского алфавита заданы их двоичные коды (для некоторых букв - из двух
бит, для некоторых - из трех). Эти коды представлены в таблице:

a b c d e

0

Определите, какой набор букв закодирован двоичной строкой

1) baade 2) badde 3) bacde 4) bacdb

3. Для кодирования сообщения, состоящего только из букв A, B, C, D и E, используется
неравномерный по длине двоичный код:

A B C D E

Какое (только одно!) из четырех полученных сообщений было передано без ошибок
и может быть раскодировано:

1)

2)

3)

4)

4. Для передачи по каналу связи сообщения, состоящего только из букв А, Б, В, Г, решили использовать неравномерный по длине код: A=0, Б=100, В=101. Как нужно закодировать букву Г, чтобы длина кода была минимальной и допускалось однозначное разбиение кодированного сообщения на буквы?

14) 010

5. Черно-белое растровое изображение кодируется построчно, начиная с левого верхнего угла и заканчивая в правом нижнем углу. При кодировании 1 обозначает черный цвет, а 0 – белый.

Для компактности результат записали в восьмеричной системе счисления. Выберите правильную запись кода.1412

6. Для передачи чисел по каналу с помехами используется код проверки четности. Каждая его цифра записывается в двоичном представлении, с добавлением ведущих нулей до длины 4, и к получившейся последовательности дописывается сумма её элементов по модулю 2 (например, если передаём 23, то получим последовательность ). Определите, какое число передавалось по каналу в виде ?

1) 662

7. Для кодирования букв О, Ч, Б, А, К используются двоичные коды чисел 0, 1, 2, 3 и 4 соответственно (с сохранением одного незначащего нуля в случае одноразрядного представления). Если таким способом закодировать последовательность символов
КАБАЧОК и записать результат в шестнадцатеричном коде, то получится:

1) 5434DA4 3) ABCD

8. Для передачи по каналу связи сообщения, состоящего только из букв А, Б, В, Г, решили использовать неравномерный по длине код: A=01, Б=1, В=001. Как нужно закодировать
букву Г, чтобы длина кода была минимальной и допускалось однозначное разбиение кодированного сообщения на буквы?

1) 0

9. Для передачи по каналу связи сообщения, состоящего только из букв А, Б, В, Г, решили использовать неравномерный по длине код: A=0, Б=100, В=110. Как нужно закодировать букву Г, чтобы длина кода была минимальной и допускалось однозначное разбиение кодированного сообщения на буквы?

1) 4) 01