Тверской государственный университет
Опубликован: 02.10.2014 | Доступ: свободный | Студентов: 1798 / 183 | Длительность: 10:03:00
Лекция 18:

Все под контролем

< Лекция 1 || Лекция 18

Смотреть на youtube || на ИНТУИТ в качестве: низком | среднем | высоком

Мы уже знаем, что любая информация, хранимая в памяти компьютера, представляет последовательность нулей и единиц. Но информацию нужно не только хранить. Ее нужно передавать от одного компьютера к другому. Компьютеры объединяются в сеть, и информация передается по сети. Хранение информации в памяти компьютера сегодня достаточно надежно, за время хранения искажения информации практически не происходит. Передача данных по сети менее надежна. Во время передачи могут возникать ошибки, приводящие к искажению информации. Передача информации должна проходить под контролем.

Какие же методы контроля правильности переданного сообщения возможны. Условно эти методы разделяют на два класса:

  • обнаружение ошибок;
  • исправление ошибок.

При обнаружении ошибки можно запросить повторную передачу сообщения или части сообщения. Конечно, лучше, если удается не только обнаружить факт появления ошибки, но и исправить ошибку, не требуя повтора передачи.

Ошибки при передаче каждого бита могут быть двух видов – пропадание сигнала и его инвертирование - там, где должен быть ноль, может появиться единица, и, наоборот, вместо единицы может появиться ноль.

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

Остановимся более подробно на проблемах, связанных с инвертированием сигнала в процессе передаче. Ошибок при передаче сообщения из n битов может быть не одна, а несколько. Существуют методы, позволяющие обнаруживать k ошибок и исправлять d ошибок. Метод, который может исправлять d ошибок, может обнаружить k (k > d) ошибок. Обнаружение и исправление ошибок достигается за счет введения в сообщение дополнительных контролирующих битов. Благодаря введенной избыточности при передаче сообщения можно обнаруживать ошибки и более того можно исправлять эти ошибки. Поясним, как это можно сделать. Можно, например, каждый бит передавать m раз. При приёме пакета из m битов считать, что передана единица (ноль), если более чем k из m битов равны единице (нулю). Чем больше m и чем ближе k к значению m, тем надежнее такой способ обнаружения и исправления ошибок. На практике часто достаточно применять этот способ, когда m = 3, а k = 2. Такой метод называется "2 из 3-х". Понятно, что платой за возможность исправления ошибок является увеличение длины передаваемого сообщения в m раз.

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

Один из широко применяемых и простых методов обнаружения одной ошибки является метод контрольных сумм. Будем снабжать каждый пакет контрольной суммой, дополнительным битом. В этот бит записывается контрольная сумма пакета – дополнение двоичного слова, записанного в пакете, до четности. Если число единиц в пакете нечетно, то контрольная сумма равна 1, в противном случае - 0. Когда пакет получен, вычисляется его контрольная сумма. Если при передаче возникла ошибка (одна), то четность изменится, и не будет совпадать со значением контрольной суммы. Контроль позволяет обнаружить ошибку – одну, но не две! Когда ошибка обнаружена, то можно запросить повторную передачу данного пакета.

Рассмотрим еще один метод, позволяющий не только обнаружить ошибку, но и исправить ее. Для этого нам понадобится перейти к кодам, исправляющим ошибки. При хранении информации мы старались минимизировать длину хранимого текста. С этой целью для текстов, записанных в алфавите Т, состоящем из m символов, длина кодового слова выбиралась как минимальное n, удовлетворяющее условию:

2n > m

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

Введем некоторые новые понятия. Пусть s1 и s2 – кодовые слова – двоичные слова одинаковой длины.

Расстоянием по Хэммингу r(s1, s2) между двоичными словами s1 и s2 одинаковой длины называется число несовпадений соответствующих пар битов в s1 и s2.

Для одинаковых слов расстояние, как и следует ожидать, равно 0. Если слова не совпадают в одном разряде, то расстояние равно 1. Рассмотрим пример:

s1 = 100111011;

s2 = 001101111;

r(s1, s2) = 4

Определив расстояние между двумя словами, можно определить расстояние для набора из k слов.

Расстоянием R(s1, s2, … sk) для набора из k двоичных слов одинаковой длины называется минимальное расстояние, между словами, входящими в этот набор.


Рассмотрим пример:

s1 = 100111011;

s2 = 001101111;

s3 = 101010011;

s4 = 011101110;

r(s1, s2) = 4; r(s1, s3) = 3; r(s1, s4) = 6; r(s2, s3) = 6; r(s2, s4) = 2; r(s3, s4) = 7;

R(s1, s2, s3, s4) = 2

Некоторые общие наблюдения. Рассмотрим множество двоичных слов длины m. Их, как известно 2m. Если эти слова применять для кодирования алфавита, содержащего 2m символов, то каждому символу соответствует свое кодовое слово. Расстояние для полного набора слов всегда равно единице, поскольку все слова различны, но всегда в полном наборе есть слова, отличающиеся только в одном разряде. Что происходит при передаче текста при таком способе кодирования. Если при передаче символа в кодовом слове произошла даже одна ошибка, то полученный символ будет декодирован другим символом, коду которого соответствует полученное слово. Ни обнаружить, ни, тем более исправить эту ошибку невозможно.

Рассмотрим теперь ситуацию, когда множество кодовых слов длины m используется для кодирования алфавита, число символов которого k значительно меньше, чем 2m. Тогда из всего множества кодовых слов можно выбрать набор из k слов, расстояние для которого R больше единицы. Чтобы можно было исправить одну ошибку достаточно, чтобы расстояние R было равным 3. Действительно, в этом случае ошибочно переданное кодовое слово будет отличаться по расстоянию от правильного слова на единицу, а от остальных слов, по крайней мере на два.

Подведем итог:

  • Набор из k двоичных слов длины m с расстоянием R, равным 3, используемый для кодирования k символов алфавита, позволяет однозначно декодировать текст при условии, что при передаче каждого символа происходит не более одной ошибки.
  • Если при передаче символа произошли две ошибки, то набор позволяет обнаружить ошибки передачи (полученное слово отличается от всех кодовых слов на расстояние 2), но не позволяет восстановить символ, при передаче которого произошли ошибки.

Рассмотрим задачу на эту тему:

По каналу связи передаются сообщения, содержащие только 4 буквы – П, О, Р, Т. Для кодирования букв используются 5-битовые кодовые слова:

П – 00000, О – 00111, Р – 11011, Т – 11100.

Среди приведённых ниже сообщений найдите то, которое принято корректно, и укажите его расшифровку (пробелы несущественны).

11011 10111 11101 00111 10001

10000 10111 11101 00111 00001

1) ПОТОП

2) РОТОР

3) ТОПОР

4) ни одно из сообщений не принято корректно

Решение:

Вычислим расстояние для кодового набора.

R = 3.

Это позволяет восстановить сообщение, если при передаче символов произошла одна ошибка, и выявить ситуацию, когда ошибок было 2.

В первой последовательности первые и четвертое слово совпадают с кодовыми словами, второе и третье слово можно восстановить, что дает слово "РОТО", но пятое полученное слово отличается от всех кодовых слов, как минимум, в двух разрядах, что свидетельствует о некорректной передаче данных, требующей повторения передачи.

Во второй последовательности несовпадений с кодовыми словами еще больше, но все ошибки могут быть исправлены и прочитано переданное слово "ПОТОП".

Для хранения текстов в алфавите из 4-х символов достаточно использовать слова длины 2. Помехоустойчивый код, позволяющий восстановить информацию, при условии, что передаче символов появляется не более одной ошибки, требует длины кодового слова, равной пяти. Для слов длины 4 невозможно найти набор из четырех слов с расстоянием 3.

Задача 1.

Даны числа, записать их в двоичном виде, добавив бит с контрольной суммой.

Задача 2

При передаче пакетов данных сопровождаемых контрольной суммой получены следующие результаты: …

Сколько пакетов передано с ошибкой?

Задача 3

Даны два двоичных числа одинаковой длины. Вычислите расстояние по Хэммингу между ними.

Задача 4

Даны два десятичных числа. Постройте их двоичные образы длины m. Вычислите расстояние по Хэммингу между ними.

Задача 5

Дан набор двоичных чисел длины m. Вычислите расстояние для этого набора.

Задача 6

Дан набор десятичных чисел. Постройте их двоичные образы длины m. Вычислите расстояние для этого набора.

Задача 7

Задано m. Какие наборы, выбранные из множества всех двоичных слов длины m, имеют расстояние большее или равное R

Задача 8

Сколько k-элементных наборов с расстоянием R можно построить из множества двоичных слов длины m.

Задача 9

Какое слово нужно удалить из набора двоичных слов, чтобы расстояние увеличилось на единицу.

Задача 10

Какое слово следует добавить в набор, чтобы расстояние набора не изменилось.

< Лекция 1 || Лекция 18
Дмитрий Анисимов
Дмитрий Анисимов

Подскажите - где публиковать решения самостоятельных заданий которые Вы задали 

Михаил Жуков
Михаил Жуков

Мне вот реально интересно, не проще было сказать сразу, что есть такая штука - "полином разложения", и привести формулу? Слишком много воды в теме о системах счисления имхо.