Быстрые квантовые алгоритмы
Разложение на множители и нахождение периода относительно возведения в степень.
Второе свидетельство в пользу гипотезы — быстрые квантовые алгоритмы разложения числа на простые множители и вычисления дискретного логарифма. Они были найдены П. Шором [38]. Обсудим пока первую из этих двух задач.
Факторизация числа. Дано натуральное число . Требуется найти его разложение на простые множители
Эта задача считается сложной настолько, что на предположении о трудности ее решения основываются практические алгоритмы криптографии. С теоретической точки зрения положение несколько хуже: неизвестно ни сведение к задаче факторизации задач из класса NP, ни другие "прямые" свидетельства в пользу ее сложности. (Слово "прямые" взято в кавычки из-за того, что в настоящее время неизвестен ответ на вопрос .) Таким образом, предположение о сложности задачи факторизации пополняет и без того обильную коллекцию недоказанных гипотез в вычислительной теории сложности. Количество таких гипотез хочется по возможности уменьшать. В этом и состоит основная ценность результата Шора — если совершить один "акт веры" и уверовать в сложность задачи факторизации, то необходимость в еще одном акте веры (относительно больших вычислительных возможностей квантового компьютера) отпадает.
Мы будем строить быстрый квантовый алгоритм не для решения задачи факторизации, а для решения другой задачи Нахождение периода, к которой задача факторизации сводится с помощью классического вероятностного алгоритма.
Нахождение периода. Имеется число , записывающееся не более чем двоичными цифрами ( ) и число такое, что , ( обозначает наибольший общий делитель). Нужно найти период относительно , т.е. такое наименьшее неотрицательное число , что .
Другими словами, период — это порядок числа в мультипликативной группе вычетов . Будем обозначать период числа относительно как .
Ниже мы построим квантовый алгоритм для решения задачи о нахождении периода числа. Но начнем с того, что опишем классическое вероятностное сведение задачи факторизации к задаче вычисления периода. Читателю также предлагается вспомнить вероятностный тест простоты числа, изложенный в первой части (см. "Вероятностные алгоритмы и класс BPP. Проверка простоты числа" ).
Сведение факторизации к вычислению периода.
Итак, предположим, что мы умеем решать задачу нахождения периода. Ясно, что факторизацию числа можно получить, используя раз подпрограмму, которая по любому составному числу вычисляет какой-то его делитель с вероятностью, не меньшей . (Конечно, нужна также стандартная процедура усиления вероятностей, описанная в "Вероятностные алгоритмы и класс BPP. Проверка простоты числа" .)
Процедура нахождения делителя.
Вход: число .
Шаг 1. Проверяем четность . Если — четное, то выдаем ответ "2", в противном случае переходим к шагу 2.
Шаг 2. Проверяем, извлекается ли из нацело корень -й степени при . Если , то ответ " ", иначе переходим к шагу 3.
Шаг 3. Выбираем случайное среди чисел от до , вычисляем (используя имеющийся по предположению алгоритм нахождения периода) и, если — нечетное, то ответ " — простое". В противном случае находим (скажем, алгоритмом Евклида) и переходим к шагу 4.
Шаг 4. Если , то ответ " ", в противном случае ответ " — простое".
Анализ процедуры нахождения делителя.
Докажем, что вероятность получить делитель числа в результате работы процедуры нахождения делителя не меньше, чем , где — число различных простых делителей . (Заметим, в частности, что эта вероятность равна~0 для простого , так что данная процедура может также использоваться и как тест простоты числа.) При доказательстве нам потребуется китайская теорема об остатках и тот факт, что мультипликативная группа вычетов по модулю , где простое, — циклическая (см. [2, Гл. 6, 3]).
Если — четное, то . Так что в этом случае процедура выдаст ответ " — простое" только тогда, когда .
Запишем разложение на простые множители и введем обозначения
Докажем, что процедура выдает ответ " — простое" тогда и только тогда, когда . Действительно, если , то нечетно (поскольку — наименьшее общее кратное всех ). Если , то (используем цикличность ), а, значит, и (используем китайскую теорему об остатках). Наоборот, если не все равны, то при некотором получим , т.е. .
По китайской теореме об остатках случайный равномерный выбор есть то же самое, что независимый случайный равномерный выбор всех . Оценим для некоторого вероятность события при независимом выборе . Пусть , где — нечетное, — образующая (циклической) группы . Тогда
поэтому вероятность не больше . Отсюда следует искомая оценка вероятности успеха всей процедуры нахождения делителя: вероятность события не выше , поэтому с вероятностью не меньше процедура нахождения делителя найдет делитель .