Конспект для учителя по теме «Кодирование с исправлением ошибок»

5289
2

В статье размещена информация о кодировании с исправлением ошибок, в конце представлено домашнее задание. Материал актуален для подготовки к ЕГЭ.



Введение

Ключевые слова:

  • коды с обнаружением ошибок
  • избыточность
  •  бит чётности
  • контрольная сумма
  • помехоустойчивые коды

В реальных каналах связи всегда присутствуют помехи, искажающие полезный сигнал. В некоторых случаях ошибки допустимы, например при прослушивании радиопередачи через Интернет небольшое искажение звука не мешает понимать речь. Однако чаще всего требуется обеспечить точную передачу данных. Например, ошибка в передаче одной команды компьютерной программы может привести к катастрофе космического корабля. В таких случаях в первую очередь нужно обнаружить ошибку и, если это произошло, передать блок данных ещё раз. Как мы увидим, в некоторых случаях даже удаётся исправить небольшое число ошибок без повторной передачи данных.

Представьте себе, что получена цепочка нулей и единиц 1010101110, причём биты независимы: каждый бит цепочки может быть нулём или единицей независимо от других. В этом случае нет абсолютно никакой возможности определить, верно ли передана последовательность. Поэтому для того, чтобы обнаружить ошибку, в передаваемое сообщение нужно добавлять какую-то дополнительную информацию («лишние» биты), т. е. вводить избыточность.

Простейший вариант — добавить в конец блока данных дополнительный бит, который будет равен 1, если в основном сообщении нечётное число единиц, и равен 0 для сообщения с чётным числом единиц. В результате в новом блоке всегда будет чётное число единиц. Этот дополнительный бит называется битом чётности. Бит чётности используется при передаче данных в компьютерных сетях.

К каждому из этих двухбитных сообщений добавьте бит чётности (так, чтобы общее число единичных битов в каждом сообщении стало чётным):

00      01      10      11

Сообщения передаются с битом чётности. Какие из этих сообщений были переданы с ошибкой?

00101      0011010101      1001001010011

Как вы рассуждали?

Как вы думаете, можно ли вместо бита чётности добавлять «бит нечётности», который делает общее число единичных битов в блоке данных нечётным?





К каждому из этих сообщений добавьте бит чётности;

1000      0110      1011101011      11111111

При передаче сообщения с битом чётности произошли две ошибки. Сможет ли обнаружить ошибку принимающая сторона? А если ошибок будет три? Четыре?

Получено сообщение с битом чётности, в котором оказалось нечётное число единиц. Можно ли сказать, в каком именно бите произошла ошибка?

Если при передаче изменились два бита, чётность не меняется, и такая ошибка не обнаруживается. Однако на практике две ошибки в одном небольшом (например, 8-битном) блоке данных могут появиться очень редко.

Применение бита чётности позволяет обнаруживать нечётное число ошибок (1, 3, 5, ...), а ошибки в чётном количестве разрядов остаются незамеченными.

При передаче больших файлов может сразу возникнуть множество ошибок, поэтому используют другой метод — вычисляют контрольную сумму файла (по достаточно сложным алгоритмам), которая передаётся вместе с данными. Изменение даже одного бита данных сильно изменяет контрольную сумму. Если контрольная сумма файла, вычисленная приёмником, не совпадает с контрольной суммой, записанной передающей стороной, то произошла ошибка.

Коды с исправлением ошибок

Значительно сложнее исправить ошибку сразу (без повторной передачи данных), однако в некоторых случаях и эту задачу удается решить. Для этого ещё больше увеличивают избыточность кода (добавляют «лишние» биты).

Когда вы говорите по телефону, иногда приходится повторять какието фразы, если собеседник не понял вас из-за помех. Эту идею можно использовать и для компьютеров, например применить код, в котором каждый бит повторяется трижды: вместо каждого нуля будем передавать кодовое слово 000, а вместо каждой единицы — кодовое слово 111.

При передаче сообщения каждый передаваемый бит повторяется три раза подряд. Могли ли быть переданы без ошибок такие сообщения?

1) 000111111111;

2) 000101000111000;

3) 111000111010111.

Как вы рассуждали?

При передаче каждой тройки одинаковых битов произошло не более одной ошибки. Какие биты пытались передать, если получены тройки битов:

001      010 011      100      101      110?

Как вы рассуждали?

Передавались сообщения, в которых каждый бит был утроен. При передаче произошли ошибки (не более одной в каждой тройке), и были получены следующие битовые цепочки:

1) 000011110101010;

2) 000101100011100;

3) 110000101010011.

Восстановите битовые цепочки (без утроения), которые передавались.

Код с утроением битов обнаруживает одну или две ошибки. Кроме того, если сделана одна ошибка, он позволяет исправить её, т. е. является помехоустойчивым.

inf60 Помехоустойчивый код — это код, который позволяет исправлять ошибки, если их количество не превышает некоторого уровня.

Попробуйте придумать другой трёхбитовый код (содержащий два кодовых слова), который позволяет исправлять одну ошибку и обнаруживать одну или две ошибки. Что общего в коде с утроением битов и в вашем коде?

Кроме простого дублирования битов есть и другие, более сложные помехоустойчивые коды. Например, предположим, что передаются сообщения, содержащие только четыре буквы — «П», «О», «Р», «Т». Для кодирования букв используются 5-битные кодовые слова (рис. 2.9).

inf82

Рис. 2.9

Для этого набора кодовых слов выполнено такое свойство: любые два слова из набора различаются не менее чем в трёх битах. В этом случае говорят, что расстояние Хэмминга между кодовыми словами больше или равно трём. Например, слова «П» — 111.11 и «О» — 11000 различаются в трёх последних битах, а слова «П» — 11111 и «Р» — 00100 — в четырёх битах (они подчёркнуты). Это позволяет обнаруживать и даже исправлять ошибки.

Для передачи данных использовался код, заданный на рис. 2.9. Принята цепочка 00110. Определите букву, код которой отличается от этой цепочки меньше всего.

Для передачи данных использовался код, заданный на рис. 2.9. Принята цепочка 10101. Определите знаки, коды которых отличаются от этой цепочки меньше всего.

Для передачи данных использовался код, заданный на рис. 2.9. При передаче каждого кодового слова произошло не более двух ошибок. Декодируйте сообщение, исправив ошибки: 00111 11100       11110       11000 00000       01110       11011       11100       00011       11000

Если ошибку исправить нельзя, поставьте символ «inf84 ».

В каком случае при использовании кода, заданного на рис. 2.9:

а) можно обнаружить ошибки, а исправить нельзя;
б) нельзя даже обнаружить ошибки?

Если все кодовые слова отличаются друг от друга не менее чем в трёх битах, такой код позволяет обнаружить одну или две ошибки. Если сделана только одна ошибка, код позволяет исправить её. Если же произошли три ошибки и более, в результате мог получиться другой правильный код, и эти ошибки обнаружить нельзя.

Выводы

  • Данные при передаче могут искажаться из-за помех в канале связи.
  • Для обнаружения и исправления ошибок код должен быть избыточным, т. е. содержать лишние биты по сравнению с кодом минимальной длины.
  • Бит чётности — это бит, который добавляется в конец блока данных так, чтобы количество единиц в расширенном блоке было чётным.
  • Использование бита чётности позволяет обнаружить нечётное число ошибок при передаче, но не позволяет их исправить.
  • Помехоустойчивый код — это код, который позволяет исправлять ошибки, если их количество не превышает некоторого уровня.
  • Код, в котором все кодовые слова отличаются друг от друга не менее чем в трёх битах, — помехоустойчивый. Он позволяет обнаружить одну или две ошибки и исправить одну ошибку в каждом блоке данных.

Интеллект-карта

inf83

Рис. 2.10

Домашнее задание

1. Почему код с обнаружением и/или исправлением ошибок должен быть избыточным?
2. Сравните коды, использующие бит чётности и коды, использующие контрольную сумму. Какие достоинства и недостатки имеет каждый метод?
3. Зачем нужны коды, которые позволяют обнаружить ошибки, но не позволяют их исправить?
4. Сравните код, в котором каждый бит повторяется три раза, и код на рис. 2.9. Какой из них более экономичный, т. е. требует меньше «лишних» битов?
5. Как вы думаете, почему бы не использовать везде только помехоустойчивые коды?

Еще материалы по теме «1.18 Кодирование с исправлением ошибок »



Хотите пойти учиться в колледж?
Выбирайте «Тьюторию»!

Поступление без ОГЭ и ЕГЭ. Обучаем перспективным профессиям
после 9 или 11 класса.

Жмите на баннер!
Текст прошел проверку у экспертов «ИнПро» ®
педагог по информатике
педагог по информатике
педагог по информатике
Ирина Михайловна
методист образовательного холдинга «ИнПро»

Справочно:

Материалы подготовлены Федеральным образовательным сервисом «ИнПро»® – Лицензия Минобрнауки 22Л01 № 0002491.

Готовим детей к школе, а также подтягиваем по школьной программе по всей России в 40+ центрах и онлайн, в том числе в Вашем городе.

Бесплатная горячая линия: 8 800 250 62 49 (с 6 до 14 по Мск).


Следите за новостями в социальных сетях:


Нужен репетитор? Запишитесь на бесплатное пробное занятие в «ИнПро»®

Отправка запроса ни к чему не обязывает, это бесплатно. Будем рады помочь!

Отправляя заявку, Вы соглашаетесь на обработку персональных данных.

Нужен репетитор?
Запишитесь на пробное занятие в «ИнПро»®

Отправка запроса ни к чему не обязывает, это бесплатно. Будем рады помочь!

Отправляя заявку, Вы соглашаетесь на обработку персональных данных.
Пробное занятие Пробное занятие