Учитывая ряд чисел, найти алгоритм контрольной цифры ...? - PullRequest
2 голосов
/ 25 февраля 2010

Предположим, у меня есть серия индексов, состоящая из контрольной цифры . Если у меня достаточно честной выборки (скажем, 250 образцов индексов), могу ли я извлечь алгоритм, использованный для генерации контрольной цифры?

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

ОБНОВЛЕНИЕ: длина порядкового номера составляет 8 цифр, включая контрольную цифру.

Ответы [ 2 ]

4 голосов
/ 25 февраля 2010

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

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

Если вы знаете, что алгоритм составлен из меньшего подмножества, чем «каждый возможный алгоритм», то это может быть возможно.Но алгоритмы могут быть только половиной истории - есть также случай, когда множители, возведения в степень и точки обтекания изменяются даже при использовании одного и того же алгоритма.

0 голосов
/ 26 февраля 2010

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

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

...