stringtranslate.com

Алгоритм Верховева

Алгоритм Верхуффа [1] представляет собой контрольную сумму для обнаружения ошибок, впервые опубликованную голландским математиком Якобусом Верхоффом в 1969 году. [2] [3] Это был первый алгоритм десятичных контрольных цифр , который обнаруживает все однозначные ошибки и все ошибки транспонирования, включающие две цифры. соседние цифры, [4] что в то время считалось невозможным для такого кода.

Метод был независимо открыт Х. Питером Гаммом в 1985 году, на этот раз включая формальное доказательство и расширение на любую базу. [5]

Цели

Целью Верхуффа было найти десятичный код — такой, в котором контрольная цифра представляет собой одну десятичную цифру, — который обнаруживал бы все однозначные ошибки и все перестановки соседних цифр. В то время предполагаемые доказательства несуществования [6] этих кодов сделали популярными коды с основанием 11, например, в контрольной цифре ISBN .

Его цели также были практическими: он основывал оценку различных кодов на реальных данных голландской почтовой системы, используя систему взвешенных баллов для различных видов ошибок. Анализ разбил ошибки на несколько категорий: во-первых, по количеству ошибочных цифр; для тех, у кого есть ошибка в две цифры, есть транспозиции ( abba ), близнецы ( aa → 'bb'), скачкообразные транспозиции ( abccba ), фонетические ( 1aa0 ) и скачкообразные близнецы ( abacbc ). Кроме того, есть пропущенные и добавленные цифры. Хотя частота некоторых из этих ошибок может быть небольшой, некоторые коды могут быть невосприимчивы к ним в дополнение к основной цели обнаружения всех одиночных ошибок и транспозиций.

Фонетические ошибки, в частности, проявили лингвистический эффект, поскольку в голландском языке числа обычно читаются парами; а также, хотя на голландском языке 50 звучит похоже на 15, 80 не звучит как 18.

На примере шестизначных чисел Верховев предложил следующую классификацию ошибок:

Описание

Общая идея алгоритма состоит в том, чтобы представить каждую из цифр (от 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 , п )).

Расчет контрольной суммы Верхуффа выполняется следующим образом:

  1. Создайте массив n из отдельных цифр числа, взятых справа налево (самая правая цифра — n 0 и т. д.).
  2. Инициализируйте контрольную сумму c равным нулю.
  3. Для каждого индекса i массива n, начиная с нуля, замените c на .

Исходное число действительно тогда и только тогда, когда .

Чтобы сгенерировать контрольную цифру, добавьте0 , выполните расчет: правильная контрольная цифра — .

Примеры

Смотрите также

Рекомендации

  1. ^ Верховев, Дж. (1969). Обнаружение ошибок десятичных кодов (тракт 29) . Математический центр, Амстердам. Бибкод :1971ЗаММ...51..240Н. дои : 10.1002/zamm.19710510323.
  2. ^ Киртланд, Джозеф (2001). «5. Теория групп и схема контрольных цифр Верхуффа». Идентификационные номера и схемы контрольных цифр . Математическая ассоциация Америки. п. 153. ИСБН 0-88385-720-0.
  3. ^ Саломон, Дэвид (2005). «§2.11 Метод контрольной цифры Верхуффа». Кодирование данных и компьютерных коммуникаций . Спрингер. стр. 56–58. ISBN 0-387-21245-0.
  4. ^ Хаунспергер, Дина; Кеннеди, Стивен, ред. (2006). Край Вселенной: празднование десяти лет математических горизонтов. Математическая ассоциация Америки. п. 38. ISBN 978-0-88385-555-3. LCCN  2005937266.
  5. ^ Гамм, Х. (январь 1985 г.). «Новый класс методов контрольных цифр для произвольных систем счисления (Корресп.)». Транзакции IEEE по теории информации . 31 (1): 102–105. дои : 10.1109/TIT.1985.1056991.
  6. ^ Сиссон, Роджер Л. (май 1958 г.). «Улучшенная проверка десятичной избыточности». Коммуникации АКМ . 1 (5): 10–12. дои : 10.1145/368819.368854 .
  7. ^ аб Галлиан, Джозеф А. (2010). Современная абстрактная алгебра (7-е изд.). Брукс/Коул. п. 111. ИСБН 978-0-547-16509-7. LCCN  2008940386 . Проверено 26 августа 2011 г. Контрольная цифра Верховева.
  8. ^ Верховев 1969, с. 95
  9. ^ Верховев 1969, с. 83

Внешние ссылки