Алгоритм Верховева
Алгоритм Верховева [1] — контрольная сумма для обнаружения ошибок, впервые опубликованная голландским математиком Якобусом Верхуффом в 1969 году. [2] [3] Это был первый алгоритм десятичных контрольных цифр , который обнаруживает все однозначные ошибки и все ошибки транспонирования, связанные с двумя соседними цифрами. [4] что в то время считалось невозможным при наличии такого кода.
Метод был независимо открыт Х. Питером Гаммом в 1985 году, на этот раз включая формальное доказательство и расширение на любую базу. [5]
Цели
[ редактировать ]Целью Верхуффа было найти десятичный код — такой, в котором контрольная цифра представляет собой одну десятичную цифру, — который обнаруживал бы все однозначные ошибки и все перестановки соседних цифр. В то время предполагаемые доказательства несуществования [6] из этих кодов сделали популярными коды с основанием 11, например, в контрольной цифре ISBN .
Его цели также были практическими: он основывал оценку различных кодов на реальных данных голландской почтовой системы, используя систему взвешенных баллов для различных видов ошибок. Анализ разбил ошибки на несколько категорий: во-первых, по количеству ошибочных цифр; для тех, у кого есть ошибка в две цифры, есть транспозиции ( ab → ba ), близнецы ( aa → 'bb'), скачкообразные транспозиции ( abc → cba ), фонетические ( 1a → a0 ) и скачкообразные близнецы ( aba → cbc ). Кроме того, есть пропущенные и добавленные цифры. Хотя частота некоторых из этих ошибок может быть небольшой, некоторые коды могут быть невосприимчивы к ним в дополнение к основной цели обнаружения всех одиночных ошибок и транспозиций.
Фонетические ошибки, в частности, проявили лингвистический эффект, поскольку в голландском языке числа обычно читаются парами; а также, хотя на голландском языке 50 звучит похоже на 15, 80 не звучит как 18.
На примере шестизначных чисел Верховев предложил следующую классификацию ошибок:
Цифры с ошибкой | Классификация | Считать | Частота |
---|---|---|---|
1 | Транскрипция | 9,574 | 79.05% |
2 | Транспозиции | 1,237 | 10.21% |
Двойняшки | 67 | 0.55% | |
Фонетический | 59 | 0.49% | |
Прочие смежные | 232 | 1.92% | |
Прыжковые транспозиции | 99 | 0.82% | |
Прыжок близнецов | 35 | 0.29% | |
Другие ошибки прыжка | 43 | 0.36% | |
Другой | 98 | 0.81% | |
3 | 169 | 1.40% | |
4 | 118 | 0.97% | |
5 | 219 | 1.81% | |
6 | 162 | 1.34% | |
Общий | 12,112 |
Описание
[ редактировать ]Общая идея алгоритма состоит в том, чтобы представить каждую из цифр (от 0 до 9) как элементы группы диэдра. . То есть сопоставить цифры с , манипулируйте ими, а затем преобразуйте обратно в цифры. Пусть это отображение будет
Пусть n-я цифра будет и пусть количество цифр будет .
Например, учитывая код 248, тогда это 3 и .
Теперь определим перестановку
Например . Другой пример: с
Используя мультипликативную запись для групповой операции , контрольная цифра тогда является просто значением такой, что
явно задается обратной перестановкой
Например, контрольная цифра для 248 равна 5. Чтобы убедиться в этом, используйте сопоставление с и вставляем в левую часть предыдущего уравнения
Чтобы быстро оценить эту перестановку, используйте это
чтобы получить это
Это то же отражение, которое итеративно умножается. Используйте тот факт, что отражения являются их собственными обратными сторонами. [7]
На практике алгоритм реализуется с использованием простых справочных таблиц без необходимости понимать, как генерировать эти таблицы на основе базовой группы и теории перестановок. Правильнее считать это семейством алгоритмов, поскольку работают и другие варианты. Верховев отмечает, что конкретная перестановка, приведенная выше, является особенной, поскольку она обладает свойством обнаруживать 95,3% фонетических ошибок. [8]
Сильные стороны алгоритма заключаются в том, что он обнаруживает все ошибки транслитерации и транспозиции, а также большинство ошибок близнеца, двойного перехода, транспозиции скачка и фонетических ошибок.
Основной слабостью алгоритма Верхуффа является его сложность. Требуемые расчеты не могут быть легко выражены в виде формулы, скажем, . Справочные таблицы необходимы для облегчения вычислений. Аналогичным кодом является алгоритм Дамма , обладающий схожими качествами.
Табличный алгоритм
[ редактировать ]Алгоритм Верхуффа можно реализовать с помощью трех таблиц:таблица умножения d , обратная таблица inv и таблица перестановок p .
|
|
|
Первая таблица d основана на умножении в группе диэдра D 5 . [7] и представляет собой просто таблицу Кэли группы. Обратите внимание, что эта группа не является коммутативной то есть для некоторых значений j и k , d ( j , k ) ≠ d ( k , j ).
Обратная таблица inv представляет собой мультипликативную обратную цифру, то есть значение, которое удовлетворяет условию d ( j , inv ( j )) = 0.
Таблица перестановок p применяет перестановку к каждой цифре в зависимости от ее положения в числе. На самом деле это одна перестановка (1 5 8 9 4 2 7 0)(3 6), применяемая итеративно; т.е. п ( я + j , п ) = п ( я , п ( j , п )).
Расчет контрольной суммы Верхуффа выполняется следующим образом:
- Создайте массив n из отдельных цифр числа, взятых справа налево (самая правая цифра — n 0 и т. д.).
- Инициализируйте контрольную сумму c равным нулю.
- Для каждого индекса i массива n, начиная с нуля, замените c на .
Исходное число действительно тогда и только тогда, когда .
Чтобы сгенерировать контрольную цифру, добавьте 0 и выполните расчет: правильная контрольная цифра — . .
Примеры
[ редактировать ]Создайте контрольную цифру для 236 :
c равен 2, поэтому контрольная цифра — inv (2), то есть 3. | Подтвердите контрольную цифру 2363 :
c равен нулю, поэтому проверка верна. |
См. также
[ редактировать ]- Алгоритм Луна , ранее (1960) алгоритм контрольной цифры
Ссылки
[ редактировать ]- ^ Верховев, Дж. (1969). Обнаружение ошибок десятичных кодов (тракт 29) . Математический центр, Амстердам. Бибкод : 1971ЗаММ...51..240Н . дои : 10.1002/замм.19710510323 .
- ^ Киртланд, Джозеф (2001). «5. Теория групп и схема контрольных цифр Верхуффа» . Идентификационные номера и схемы контрольных цифр . Математическая ассоциация Америки. п. 153. ИСБН 0-88385-720-0 .
- ^ Саломон, Дэвид (2005). «§2.11 Метод контрольной цифры Верхуффа» . Кодирование данных и компьютерных коммуникаций . Спрингер. стр. 56–58. ISBN 0-387-21245-0 .
- ^ Хаунспергер, Дина; Кеннеди, Стивен, ред. (2006). Край Вселенной: празднование десяти лет математических горизонтов . Математическая ассоциация Америки. п. 38. ISBN 978-0-88385-555-3 . LCCN 2005937266 .
- ^ Гамм, Х. (январь 1985 г.). «Новый класс методов контрольных цифр для произвольных систем счисления (Корресп.)» . Транзакции IEEE по теории информации . 31 (1): 102–105. дои : 10.1109/TIT.1985.1056991 .
- ^ Сиссон, Роджер Л. (май 1958 г.). «Улучшенная проверка десятичной избыточности» . Коммуникации АКМ . 1 (5): 10–12. дои : 10.1145/368819.368854 .
- ↑ Перейти обратно: Перейти обратно: а б Галлиан, Джозеф А. (2010). Современная абстрактная алгебра (7-е изд.). Брукс/Коул. п. 111 . ISBN 978-0-547-16509-7 . LCCN 2008940386 . Проверено 26 августа 2011 г.
Контрольная цифра Верховева.
- ^ Верховев 1969 , с. 95
- ^ Верховев 1969 , с. 83
Внешние ссылки
[ редактировать ]