Правильный цикл перестановок для алгоритма Верхоффа - PullRequest
4 голосов
/ 20 мая 2010

Я реализую алгоритм Верхоффа для схемы контрольных цифр, но в веб-источниках, похоже, есть некоторые разногласия относительно того, какой цикл перестановок должен составлять основу таблицы перестановок.

Википедия использует: (36) (01589427)

в то время как очевидно , Числовые рецепты используют другой цикл, а эта книга использует: (0) (14) (23) (56789), цитируемую из статьи 1990 года, написанной Уинтерсом. Он также отмечает, что Верхофф использовал одну цитату из Википедии.

Теперь, моя теория чисел немного заржавела, но цикл Википедии, несомненно, повторится после 8-й степени, в то время как первая книга займет 10, несмотря на то, что говорится, что s ^ 8 = s. В таблице 2.14 (b) есть другие ошибки в 2 циклах, так что в любом случае это сомнительно.

К сожалению, у меня нет копий оригинальных статей (и я слишком туго для того, чтобы заплатить / противно, что 40-летние знания все еще удерживаются издателями в качестве выкупа), а также копия «Числовых рецептов» для проверки (и Я не хочу устанавливать их плагин для защиты от копирования, вызванный паранойей, для просмотра в Интернете).

Так кто-нибудь знает, что правильно? Они оба правы?

Ответы [ 2 ]

2 голосов
/ 20 мая 2010

Существует старое издание Числовых рецептов здесь в формате PDF. Алгоритм Верхоффа описан в разделе 20.3. Он использует ту же перестановку, что и статья в Википедии.

1 голос
/ 23 декабря 2011

Перестановка (0) (14) (23) (56789) лучше, чем перестановка (36) (01589427). Это связано с тем, что (36) (01589427) может обнаруживать только 88,89% единичных ошибок транспонирования, а (0) (14) (23) (56789) - все. Считайте, что цифровому коду 716 присваивается 0 в качестве контрольной цифры, если используется (36) (01589427). то есть код будет 7160. Но, если цифры 1 и 6 транспонированы, эта схема контрольных цифр не дает ошибки, поскольку контрольная сумма равна нулю. Это не относится к (0) (14) (23) (56789).

...