Введение
TWINKLE (The Weizmann Institute Key Locating Engine) — это гипотетическое устройство для факторизации целых чисел, описанное в 1999 году Ади Шамиром и, как утверждается, способное факторизовать 512-битные целые числа. Название также является игрой слов, основанной на мерцающих светодиодах, используемых в устройстве. Шамир оценивал, что стоимость TWINKLE при массовом производстве может составлять всего 5000 долларов за единицу. У TWINKLE есть более эффективный преемник под названием TWIRL.
Метод
Целью TWINKLE является реализация шага просеивания алгоритма решета полей чисел, который является самым быстрым известным алгоритмом для факторизации больших целых чисел. Шаг просеивания, по крайней мере для 512-битных и более крупных целых чисел, является наиболее трудоемким этапом алгоритма NFS. Он включает в себя проверку большого набора чисел на B-гладкость, то есть отсутствие простых множителей, больших, чем заданное ограничение B. Примечательно, что TWINKLE – это не чисто цифровое устройство. Оно достигает своей эффективности, отказываясь от двоичной арифметики в пользу "оптического" сумматора, способного суммировать сотни тысяч значений за один тактовый цикл. Ключевая идея, лежащая в основе разработки, – "инверсия пространства-времени". Традиционное просеивание в NFS выполняется для каждого простого числа по отдельности. Для каждого простого числа счетчик всех чисел, подлежащих проверке на гладкость в рассматриваемом диапазоне и делящихся на это простое число, увеличивается на логарифм этого простого числа (аналогично решету Эратосфена). TWINKLE, напротив, работает с одним кандидатом на гладкое число (назовем его X) за раз. Для каждого простого числа, меньшего B, предусмотрен один светодиод. В момент времени, соответствующий X, набор горящих светодиодов соответствует набору простых чисел, делящих X. Это достигается тем, что светодиод, связанный с простым числом p, загорается один раз за p временных интервалов. Кроме того, интенсивность каждого светодиода пропорциональна логарифму соответствующего простого числа. Таким образом, общая интенсивность равна сумме логарифмов всех простых множителей X, меньших B. Эта интенсивность равна логарифму X тогда и только тогда, когда X является B-гладким. Даже в программных реализациях на основе ПК обычной оптимизацией для ускорения просеивания является суммирование приближенных логарифмов малых простых чисел. Аналогично, TWINKLE допускает значительные погрешности в измерениях света; пока интенсивность находится примерно на правильном уровне, число, скорее всего, будет достаточно гладким для целей известных алгоритмов факторизации. Наличие даже одного большого множителя означает, что логарифм большого числа отсутствует, что приводит к очень низкой интенсивности; поскольку большинство чисел обладают этим свойством, выход устройства будет состоять из отрезков выходного сигнала с низкой интенсивностью, перемежающихся с кратковременными всплесками высокой интенсивности. В вышесказанном предполагается, что X не имеет квадратных множителей, то есть не делится на квадрат какого-либо простого числа. Это допустимо, поскольку алгоритмы факторизации требуют лишь "достаточного количества" гладких чисел, а "выход" уменьшается лишь на небольшой постоянный коэффициент из-за предположения об отсутствии квадратных множителей. Существует также проблема ложных срабатываний из-за неточности оптоэлектронного оборудования, но она легко решается путем добавления этапа постобработки на основе ПК для проверки гладкости чисел, идентифицированных TWINKLE.