Московский государственный университет имени М.В.Ломоносова
Опубликован: 15.03.2007 | Доступ: свободный | Студентов: 611 / 26 | Оценка: 5.00 / 4.50 | Длительность: 19:30:00
Специальности: Программист
Лекция 12:

Быстрые квантовые алгоритмы

Разложение на множители и нахождение периода относительно возведения в степень.

Второе свидетельство в пользу гипотезы \BQP\supset\BPP — быстрые квантовые алгоритмы разложения числа на простые множители и вычисления дискретного логарифма. Они были найдены П. Шором [38]. Обсудим пока первую из этих двух задач.

Факторизация числа. Дано натуральное число y. Требуется найти его разложение на простые множители

y=p_1^{\alpha_1}p_2^{\alpha_2}\cdot\ldots\cdot p_k^{\alpha_k}.

Эта задача считается сложной настолько, что на предположении о трудности ее решения основываются практические алгоритмы криптографии. С теоретической точки зрения положение несколько хуже: неизвестно ни сведение к задаче факторизации задач из класса NP, ни другие "прямые" свидетельства в пользу ее сложности. (Слово "прямые" взято в кавычки из-за того, что в настоящее время неизвестен ответ на вопрос \P\qne\NP.) Таким образом, предположение о сложности задачи факторизации пополняет и без того обильную коллекцию недоказанных гипотез в вычислительной теории сложности. Количество таких гипотез хочется по возможности уменьшать. В этом и состоит основная ценность результата Шора — если совершить один "акт веры" и уверовать в сложность задачи факторизации, то необходимость в еще одном акте веры (относительно больших вычислительных возможностей квантового компьютера) отпадает.

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

Нахождение периода. Имеется число q, записывающееся не более чем n двоичными цифрами ( 1\leq q < 2^n ) и число a такое, что a<q, (a,q)=1 ( (a,q) обозначает наибольший общий делитель). Нужно найти период a относительно q, т.е. такое наименьшее неотрицательное число t, что a^t\equiv 1\pmod q.

Другими словами, период — это порядок числа a в мультипликативной группе вычетов (\ZZ/q\ZZ)^*. Будем обозначать период числа a относительно q как \per_q(a).

Ниже мы построим квантовый алгоритм для решения задачи о нахождении периода числа. Но начнем с того, что опишем классическое вероятностное сведение задачи факторизации к задаче вычисления периода. Читателю также предлагается вспомнить вероятностный тест простоты числа, изложенный в первой части (см. "Вероятностные алгоритмы и класс BPP. Проверка простоты числа" ).

Сведение факторизации к вычислению периода.

Итак, предположим, что мы умеем решать задачу нахождения периода. Ясно, что факторизацию числа y можно получить, используя O(\log y) раз подпрограмму, которая по любому составному числу вычисляет какой-то его делитель с вероятностью, не меньшей 1/2. (Конечно, нужна также стандартная процедура усиления вероятностей, описанная в "Вероятностные алгоритмы и класс BPP. Проверка простоты числа" .)

Процедура нахождения делителя.

Вход: число y.

Шаг 1. Проверяем четность y. Если y — четное, то выдаем ответ "2", в противном случае переходим к шагу 2.

Шаг 2. Проверяем, извлекается ли из y нацело корень k -й степени при k=2,\dots,\log_2y. Если y=m^r, то ответ " m ", иначе переходим к шагу 3.

Шаг 3. Выбираем случайное a среди чисел от 1 до y, вычисляем r=\per_y(a) (используя имеющийся по предположению алгоритм нахождения периода) и, если r — нечетное, то ответ " y — простое". В противном случае находим d=(a^{r/2}-1,y) (скажем, алгоритмом Евклида) и переходим к шагу 4.

Шаг 4. Если d>1, то ответ " d ", в противном случае ответ " y — простое".

Анализ процедуры нахождения делителя.

Докажем, что вероятность получить делитель числа y в результате работы процедуры нахождения делителя не меньше, чем 1-\slashfrac{1}{2^{k-1}}, где k — число различных простых делителей y. (Заметим, в частности, что эта вероятность равна~0 для простого y, так что данная процедура может также использоваться и как тест простоты числа.) При доказательстве нам потребуется китайская теорема об остатках и тот факт, что мультипликативная группа вычетов по модулю p^\alpha, где p простое, — циклическая (см. [2, Гл. 6, 3]).

Если r=\per_y(a) — четное, то (a^{r/2}+1)(a^{r/2}-1)\equiv0\pmod y. Так что в этом случае процедура выдаст ответ " y — простое" только тогда, когда a^{r/2}\equiv-1\pmod y.

Запишем разложение y на простые множители y=\prod_{j=1}^{k}p_j^{\alpha_j} и введем обозначения

a_j\equiv a\pmod{p_j^{\alpha_j}}, \quad r_j=\per_{(p_j^{\alpha_j})} a_j= 2^{s_j}r'_j, \text{ где } r'_j\ \text{--- нечетноe}.

Докажем, что процедура выдает ответ " y — простое" тогда и только тогда, когда s_1=s_2=\ldots=s_k. Действительно, если s_1=s_2=\ldots\double=s_k=0, то r нечетно (поскольку r — наименьшее общее кратное всех r_j ). Если s_1=s_2=\ldots=s_k\geq1, то a_j^{r_j/2}\equiv-1\pmod{p_j^{\alpha_j}} (используем цикличность (\ZZ/p_j^{\alpha_j}\ZZ)^* ), а, значит, и a^{r/2}\equiv-1\pmod{y} (используем китайскую теорему об остатках). Наоборот, если не все s_j равны, то при некотором m получим a_m^{r/2}\equiv1\pmod{p_m^{\alpha_m}}, т.е. a^{r/2}\not\equiv-1\pmod{y}.

По китайской теореме об остатках случайный равномерный выбор a есть то же самое, что независимый случайный равномерный выбор всех a_j. Оценим для некоторого s вероятность события s_1=s при независимом выборе a_1. Пусть p_1^{\alpha_1}-1=2^tq, где q — нечетное, g — образующая (циклической) группы (\ZZ/p_1^{\alpha_1}\ZZ)^*. Тогда

|\{a_1: s_1=s\}| = |\{g^{2^{t-s}m}: m\ \text{--- нечетное}\}| = \left\{\begin{array}{@{\hskip2pt}cl} q, &\text{если } s=0,\\ (2^s-2^{s-1})q, &\text{если } s>0, \end{array}\right.
поэтому вероятность s_1=s не больше \slashfrac{1}{2}. Отсюда следует искомая оценка вероятности успеха всей процедуры нахождения делителя: вероятность события s_1=s_2=\ldots=s_k не выше \slashfrac{1}{2^{k-1}}, поэтому с вероятностью не меньше 1-\slashfrac{1}{2^{k-1}} процедура нахождения делителя найдет делитель y.