Задача 2.3.1. Для передачи чисел по каналу с помехами используется код проверки четности. Каждая его цифра записывается в двоичном представлении, с добавлением незначащих нулей до длины 4, и к получившейся последовательности дописывается сумма её элементов по модулю 2 (например, если передаём 23, то получим последовательность 0010100110). Определите, какое число передавалось по каналу в виде 01100010100000100110. Если фрагмент декодировать невозможно, обозначьте его буквой X.
Теория. Сумма элементов по модулю два означает, что мы пересчитываем количество 1 в числе. Если оно четное, то мы добавляем один бит со значением 0. Если оно нечетное, то добавляем один бит со значением 1. Таким образом, с учетом дополнительного бита, в числе всегда будет четное количество 1. Если окажется, что мы приняли нечетное число, это будет означать, что при передаче сообщения по каналу связи произошла ошибка. Это простейший код, позволяющий обнаруживать ошибки.
Задача 2.3.2. По каналу связи передаются сообщения, содержащие только 4 буквы — П, О, Р, Т. Для кодирования букв используются 5-битовые кодовые слова:
П — 11111, О — 11000, Р — 00100, Т — 00011.
Для этого набора кодовых слов выполнено такое свойство: любые два слова из набора различаются не менее чем в трёх позициях.
Это свойство важно для расшифровки сообщений при наличии помех (в предположении, что передаваемые биты могут искажаться, но не пропадают). Закодированное сообщение считается принятым корректно, если его длина кратна 5 и каждая пятёрка отличается от некоторого кодового слова не более чем в одной позиции; при этом считается, что пятёрка кодирует соответствующую букву. Например, если принята пятерка 00000, то считается, что передавалась буква Р.
Среди приведённых ниже сообщений найдите то, которое принято корректно, и укажите его расшифровку (пробелы несущественны).
11011 11100 00011 11000 01110
00111 11100 11110 11000 00000
Примечание. В отличие от предыдущей задачи, в этой задаче код позволяет не только обнаруживать ошибку, но и исправлять ошибку, если она произошла в одном бите. Кодирование от помех является очень большим разделом дискретной математики и преподаётся в вузах на профильных специальностях в течение одного семестра.