Исправление ошибок на основе контрольной цифры Дамма - PullRequest
0 голосов
/ 24 апреля 2018

Если вы используете алгоритм Damm для генерации контрольных цифр, есть ли способ попытаться исправить ошибку, если код не проверяется?

1 Ответ

0 голосов
/ 24 апреля 2018

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

Это можно продемонстрировать на простом примере. Допустим, вы получили номер, содержащий цифры 9857. Когда вы запускаете алгоритм для этого числа, результат равен 6. Таким образом, одна из цифр была изменена. Но какой?

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

original                                                resulting
 number             error that occurred                  number
  1857      the first  digit got changed from 1 to 9      9857
  9157      the second digit got changed from 1 to 8      9857
  9827      the third  digit got changed from 2 to 5      9857
  9850      the fourth digit got changed from 0 to 7      9857

Таким образом, число, содержащее ошибку, не может однозначно идентифицировать исходный номер.

Как правило, можно получить правильную контрольную сумму, изменив любую из цифр. То есть, если вы получаете номер с N цифрами, а контрольная сумма не равна 0, то можно изменить любую из N цифр, чтобы получить правильную контрольную сумму.

...