Главная страница «Первого сентября»Главная страница журнала «Информатика»Содержание №5/2008


В мир информатики
Задачник

Из одной старой публикации

 

В далеком 1974 году в одном научно-техническом журнале была опубликована статья “Помехоустойчивый код, защищенный по модулю 11” (авторы Л.А. Шумяцкий, В.И. Королев). Вот отрывок из этой статьи.

“Широкое внедрение вычислительной техники в инженерно-технические и планово-экономические расчеты предполагает использование различных цифровых кодов. Одной из разновидностей таких кодов являются помехоустойчивые коды.

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

Защита от приборных ошибок осуществляется сравнительно несложными техническими приемами (паритетный контроль, контроль нулем, второй программный просчет и т.д.). Контроль ошибок, допускаемых человеком, техническими приемами затруднен тем, что ЭВМ не может распознать неправильное число.

Одним из способов защиты информации постоянного характера (таких, как коды предприятий, оборудования и т.д.) является способ защиты по модулю, т.е. введение дополнительного защитного разряда, который придает всему числу заранее обусловленное свойство. Наибольшее распространение получил помехоустойчивый код, защищенный по модулю 11.

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

Например, если мы хотим присвоить сотруднику табельный номер 2501, то для того, чтобы этот номер удовлетворял условию модуля 11, т.е. был защищен от помех (ошибок), к нему необходимо добавить разряд “K”, равный 1. В целом табельный номер будет выглядеть: 25011.

Проверим, удовлетворяет ли это число условию модуля 11.

Номер разряда

5

4

3

2

1

Цифры

2

5

0

1

1

Сумма произведений цифр на номера разрядов будет: 2 x 5 + 5 x 4 + 0 x 3 + 1 x 2 + 1 x 1 = 33, т.е. число, кратное 11.

Ошибка, возникшая на любой стадии — в процессе подготовки данных, перфорации или на вводе в ЭВМ, после проверки соответствия условиям модуля 11 будет обнаружена и зафиксирована. Допустим, вместо числа 25 011 было написано число 26 011:

2 x 5 + 6 x 4 + 0 x 3 + 1 x 2 + 1 x 1 = 37, 37 : 11 =  3 + остаток.

Наличие остатка говорит об ошибке в записи числа.

Контроль по модулю 11 надежно оберегает информацию и от неправильного написания цифр (как в нашем примере вместо 5 написано 6), и от перестановки цифр (допустим, вместо 25 011 записано 52 011), а также от сдвигов по разрядам.

При выборе основания кода модуля следует руководствоваться следующими условиями.

1. Минимальная вероятность того, что в случае ошибочного написания неправильно записанное число все же будет удовлетворять условию модуля.

2. Число, положенное в основание модуля, должно быть простым.

3. Для выполнения контрольных функций кода должно быть достаточно одного контрольного разряда.

Всем этим требованиям удовлетворяет метод контроля по модулю 11.

Таким образом, для кодирования числа — табельного номера или т.п. необходимо рассчитать значение дополнительного (последнего) разряда, представляющего собой дополнение по модулю 11 заданного числа.

При этом используются только те числа, у которых это дополнение является однозначным числом, игнорируя числа с двузначным дополнением…”

Задания для самостоятельной работы

1. Определите правило определения (формулу для расчета) дополнительного разряда кода заданного четырехзначного числа.

2. Найдите количество чисел из диапазона 1–99, для которых формирование кода невозможно (например, таким числом является число 6, для которого дополнение по модулю 11 равно 10). Для решения этой задачи вам придется разработать программу на каком-либо языке программирования или использовать электронную таблицу Microsoft Excel.

Ответы, пожалуйста, присылайте в редакцию. Наиболее полные ответы мы поощрим.

TopList