Классические и квантовые вычисления

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

Разбить на страницы
Показывать лекцию целиком

Единственное нетривиальное использование квантовых свойств для вычислений, которое мы уже рассмотрели, — это решение универсальной переборной задачи алгоритмом Гровера, изложенным в лекции 8. К сожалению, при этом достигается лишь полиномиальное ускорение. Поэтому никаких серьезных следствий для теории сложности вычислений (типа $$\BQP\supset \BPP$$ ) алгоритм Гровера не дает. В настоящее время нет доказательства того, что квантовые вычисления превосходят по скорости классические вероятностные. Но есть косвенные свидетельства в пользу такого утверждения. Первое из них — пример задачи с оракулом (т.е. процедурой типа "черного ящика"), для которой существует полиномиальный квантовый алгоритм, в то время как любой классический вероятностный алгоритм экспоненциаленСледует иметь в виду, что сложность задач с оракулом часто отличается от сложности обычных вычислительных задач. Классический пример — теорема о том, что $$\IP=\PSPACE$$ [36, 37]. Оракульный аналог этого утверждения неверен [30]! . Этот пример, построенный Д. Саймоном [42], называется задачей о скрытой подгруппе в $$(\ZZ_2)^k$$ . В дальнейшем мы решим также задачу о скрытой подгруппе в $$\ZZ^k$$, обобщающую все результаты из этого раздела.

Задача о скрытой подгруппе. Пусть $$G$$ — конечная группа, причем задано некоторое представление элементов $$G$$ двоичными словами. Имеется устройство ( оракул ), вычисляющее функцию $$f\colon G\to\cb^n$$ со следующим свойством:$$\begin{equation}\label{скр-подгруппа} f(x)=f(y)\,\ \Longleftrightarrow\,\ x-y\in D, \end{equation}$$ где $$D\subseteq G$$ — некоторая заранее неизвестная подгруппа. Нужно найти эту подгруппу.

Задача о скрытой подгруппе в $$(\ZZ_2)^k$$.

Мы рассмотрим сформулированную выше задачу в случае $$G=(\ZZ_2)^k$$. Элементы этой группы

можно представлять строками длины $$k$$ из нулей и единиц; групповая операция — побитовое сложение по модулю 2.

Легко доказать, что нельзя быстро найти "скрытую подгруппу" на классической вероятностной машине. (Классическая машина посылает на вход "черного ящика" строки $$x_1,\dots,x_l$$ и получает ответы $$y_1,\dots,y_l$$. Каждый следующий вопрос $$x_j$$ зависит от предыдущих ответов $$y_1,\dots,y_{j-1}$$ и некоторого случайного числа $$r$$.)

Утверждение 12.1. Пусть $$n\ge k$$. Для любого классического вероятностного алгоритма, делающего не более $$2^{k/2}$$ обращений к оракулу, существует подгруппа $$D\subseteq(\ZZ_2)^k$$ и соответствующая функция $$f\colon (\ZZ_2)^k\to\cb^n$$, для которой алгоритм ошибается с вероятностью $$>\slashfrac{1}{3}$$.

Доказательство. Для одной и той же подгруппы $$D$$ существует несколько различных оракулов $$f$$. Мы будем считать, что один из них выбирается случайно и равновероятно. (Если алгоритм ошибается с вероятностью $$>\slashfrac{1}{3}$$ при случайном оракуле, то он также будет ошибаться с вероятностью $$>\slashfrac{1}{3}$$ при каком-нибудь конкретном оракуле.) Случайный оракул обладает следующим свойством: если очередной ответ $$y_j$$ не совпадает ни с одним из предыдущих ответов $$y_1,\dots,y_{j-1}$$, то он равномерно распределен на множестве $$\cb^n\backslash\{y_1,\dots,y_{j-1}\}$$. Таким образом, случайный оракул эквивалентен устройству с памятью, которое на вопрос $$x_j$$ выдает наименьшее число $$s_j\le j$$, такое что $$x_j-x_{s_j}\in D$$. Классическую машину можно изменить таким образом, что она сама будет производить случайный выбор $$y_j\double\in\cb^n\backslash\{y_1,\dots,y_{j-1}\}$$, когда $$s_j=j$$.

Пусть число вопросов к оракулу равно $$l\le 2^{k/2}$$. Без уменьшения общности все вопросы различны. В случае $$D=\{0\}$$ все ответы также различны, то есть $$s_j=j$$ для всех $$j$$. Теперь рассмотрим случай $$D\double=\{0,z\}$$, где $$z$$ выбирается случайно с равномерным распределением на множестве всех ненулевых элементов группы $$(\ZZ_2)^k$$. Тогда, независимо от используемого алгоритма, $$s_j=j$$ c вероятностью $$\ge 1-\slashfrac{(j-1)}{(2^k-1)}$$. С вероятностью $$\ge1-\slashfrac{l(l-1)}{(2(2^k-1))}>\slashfrac{1}{2}$$ это имеет место для всех $$j=1,\dots,l$$. Напомним, что у нас есть два случайных параметра: $$z$$ и $$r$$. Мы можем зафиксировать $$z$$ таким образом, чтобы вероятность получения ответов $$s_j=j$$ (для всех $$j$$ ) по-прежнему была больше $$\slashfrac{1}{2}$$. Посмотрим, что будет делать классическая машина в этом случае. Если она выдает ответ " $$D=\{0\}$$ " с вероятностью $$\ge\slashfrac{2}{3}$$, положим $$D=\{0,z\}$$ — тогда выдаваемый ответ будет неверным с вероятностью $$>(\slashfrac{2}{3})\cdot(\slashfrac{1}{2})=\slashfrac{1}{3}$$. Если же вероятность ответа " $$D=\{0\}$$ " меньше $$\slashfrac{2}{3}$$, положим $$D=\{0\}$$.

Теперь определим квантовый аналог описанного выше устройства. Соответствующий квантовый оракул — это унитарный оператор$$\begin{equation}\label{кв-оракул} U\colon \ket{x,y}\,\mapsto\,\ket{x,\,y\oplus f(x)}. \end{equation}$$ ( $$\oplus$$ обозначает побитовое сложение). Заметим, что квантовый оракул допускает линейные комбинации разных вопросов, поэтому его можно использовать более эффективно, чем классический оракул.

Пусть $$Е=G/D$$, а $$E^*$$ — группа характеров на $$E$$, т.е. гомоморфизмов $$E\to U(1)$$. В случае $$G=(\ZZ_2)^k$$ группу $$E^*$$ можно охарактеризовать следующим образом:$$E^*= \{h \in(\ZZ_2)^k: \forall\, z\in(\ZZ_2)^k\: (h\cdot z=0) \},$$ где $$h\cdot z$$ обозначает скалярное произведение по модулю 2. (Соответствующий $$h$$ характер имеет вид $$z\mapsto(-1)^{h\cdot z}$$.) Покажем, как можно породить случайный элемент $$h\in E^*$$, используя оператор $$U$$. Породив достаточно много случайных элементов, мы найдем группу $$E^*$$, и, тем самым, исходную подгруппу D.

Начнем с того, что приготовим состояние $$\ket{\xi}=2^{-k/2}\sum_{x\in G}\ket{x}=H^{\otimes k}\ket{0^k}$$ в одном квантовом регистре. Во второй регистр поместим состояние $$\ket{0^n}$$ и применим оператор $$U$$. Затем выбросим второй регистр, т.е. не будем его больше использовать. Получится смешанное состояние$$\rho \,=\, \Tr_2\Bigl(U(\ket{\xi}\bra{\xi}\otimes\ket{0^n}\bra{0^n})U^\dagger \Bigr)\,=\, 2^{-k}\,\sum_{x,y:x-y\in D}\ket{x}\bra{y}.$$ Теперь применим оператор $$H^{\otimes k}$$:$$\gamma \,=\, H^{\otimes k}\rho H^{\otimes k} \,=\, 2^{-2k} \sum_{a,b}\sum_{x,y:x-y\in D} (-1)^{a\cdot x-b\cdot y}\ket{a}\bra{b}.$$ Легко видеть, что величина $$\sum\limits_{x,y:x-y\in D}(-1)^{a\cdot x-b\cdot y}$$ отлична от нуля только в том случае, когда $$a=b\in E^*$$. Таким образом,$$\gamma = \frac{1}{|E^*|} \sum_{a\in Е^*} \ket{a}\bra{a}.$$ Это в точности матрица плотности для случайного равномерно распределенного элемента группы $$E^*$$. Теперь осталось воспользоваться следующей леммой, которую мы сформулируем в виде задачи.

Задача 12.1. Пусть $$h_1,\dots,h_l$$ — независимые случайные равномерно распределенные элементы абелевой группы $$X$$. Докажите, что они порождают всю группу $$X$$ c вероятностью $$\ge 1-\slashfrac{|X|}{2^l}$$.

Таким образом, достаточно $$2k$$ случайных элементов, чтобы породить всю группу $$E^*$$ с вероятностью ошибки $$\le 2^{-k}$$. (Такая маленькая вероятность ошибки получается без особых затрат по сравнению с $$\slashfrac{1}{3}$$. Чтобы сделать ее еще меньше, эффективнее всего воспользоваться стандартной процедурой: повторить все вычисление несколько раз и выбрать наиболее часто встречающийся ответ).

Подведем итог: для нахождения "скрытой подгруппы" $$D$$ требуется $$O(k)$$ обращений к квантовому оракулу. В целом алгоритм имеет сложность $$O(k^3)$$.

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

Второе свидетельство в пользу гипотезы $$\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)$$.

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

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

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

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

Вход: число $$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$$.

Квантовый алгоритм нахождения периода: основная идея.

Рассмотрим оператор умножения вычета на $$a$$, действующий по правилу $$U_a\colon \ket{x}\mapsto \ket{ax\bmod q}$$. (Более корректное обозначение — $$U_{q,a}$$, однако число $$q$$ не меняется на протяжении всего вычисления, поэтому мы опускаем его в индексах). Этот оператор переставляет базисные векторы при $$0\leq x <q$$ (напомним, что $$(a,q)=1$$ ). Будем считать, что на остальных базисных векторах он действует тождественно, $$U_a\colon \ket{x}\mapsto \ket{x}$$ при $$x\geq q$$.

Поскольку для умножения вычетов есть обычная булева схема полиномиального — $$O(n^2)$$ — размера, то существует и квантовая схема примерно такого же размера (использующая напрокат дополнительные q-биты, как это объяснялось раньше).

Перестановка, которую задает оператор $$U_a$$, разбивается на циклы. Цикл, содержащий $$a$$, содержит и $$1$$ (после $$\per_q(a)-1$$ итераций мы попадаем из $$a$$ в $$1$$ ). Алгоритм, о котором пойдет речь, начинает с состояния $$\ket1$$ и применяет к нему оператор $$U_a$$ по многу раз. Но за пределы орбиты $$a$$ (цикла перестановки, которому принадлежит $$a$$ ) мы такими преобразованиями не выйдем. Поэтому рассмотрим ограничение оператора $$U_a$$ на подпространство, порожденное орбитой $$a$$.

Собственные числа для $$U_a$$ $$\lambda_k= e^{2\pi\ii\cdot k/t}$$, где $$t$$ — период.

Собственные векторы для $$U_a$$ $$\displaystyle \ket{\xi_{a,k}}=\frac{1}{\sqrt{t}} \sum\limits_{m=0}\limits^{t-1} e^{-2\pi\ii\cdot km/t}\ket{a^m}$$.

Легко проверить, что написанные векторы действительно собственные. Достаточно заметить, что умножение на $$a$$ приводит к сдвигу индексов в сумме. Если заменить переменную суммирования, чтобы устранить этот сдвиг, получим множитель $$e^{2\pi\ii\cdot k/t}$$.

Если бы мы могли измерять собственные числа оператора $$U_a$$, то получали бы числа $$k/t$$. Сначала разберем, как это может нам помочь в нахождении периода.

Пусть у нас есть машина $$M$$, которая при каждом запуске выдает нам число $$k/t$$, где $$t$$ — искомый период, а $$k$$ — равномерно распределенное на множестве $$\{0,\dots,t-1\}$$ случайное число. Мы предполагаем, что $$k/t$$ представлено в виде несократимой дроби $$k'/t'$$ (если бы машина выдавала число в виде $$k/t$$, то вообще не было бы проблем).

Получив несколько дробей такого вида $$k_1'/t_1',\,k_2'/t_2',\dots,k_l'/t_l'$$, можно с большой вероятностью найти число $$t$$, приводя эти дроби к общему знаменателю.

Лемма. Если получено $$l$$ дробей, то вероятность того, что наименьшее общее кратное их знаменателей отлично от $$t$$, меньше $$3\cdot2^{-l}$$.

Доказательство. Дроби $$k_1'/t_1',\dots,k_l'/t_l'$$ получаются сокращением дробей $$k_1/t,\dots,k_l/t$$ (т.е. $$k_j'/t_j'=k_j/t$$ ), где $$k_1,\dots,k_l$$ — независимо распределенные случайные числа. Достаточно, чтобы эти числа были в совокупности взаимно просты, тогда наименьшее общее кратное $$t_1',\dots,t_l'$$ будет равно $$t$$.

Вероятность того, что $$k_1,\dots,k_l$$ имеют общий простой делитель $$p$$, не больше, чем $$1/p^l$$. Поэтому вероятность получить не $$t$$ после приведения к общему знаменателю не превосходит $$\displaystyle \sum\limits_{k=2}\limits^{\infty} \frac{1}{k^l} <3\cdot2^{-l}$$ (эта сумма заведомо включает в себя все простые, меньшие $$t$$ ).

Теперь будем строить машину $$M$$. Она должна содержать схему, измеряющую собственные числа оператора $$U_b$$ для любого $$b$$ (а не только для $$b=a$$ — числа, для которого ищется период). Точнее говоря, нам нужен оператор $$U\colon \ket{b,x}\mapsto \ket{b,bx\bmod q}$$, если $$(b,q)=1$$. Как оператор $$U$$ действует в остальных случаях, неважно. Его можно доопределить любым вычислительно тривиальным способом. На самом деле, все приведенные ранее рассуждения об имитации классических схем квантовыми сохраняют силу и для имитации схем, вычисляющих частично определенные функции.

Задача 12.2. Используя оператор $$U$$, реализуйте оператор $$\Lambda(U_b)$$ для любого $$b$$, взаимно простого с $$q$$.

Обозначим $$\calL_{a,k}=\CC(\ket{\xi_{a,k}})$$ (подпространство, порожденное $$\ket{\xi_{a,k}}$$ ), тогда искомая схема должна реализовывать измеряющий оператор $$W=\sum\limits_{k=0}^{t-1}V_{a,k}\otimes\Pi_{\calL_{a,k}}$$ с операторами $$V_{a,k}$$ вида $$\ket{0}\mapsto\sum_{y,z}c_{y,z}\ket{y,z}$$, где $$y$$ — некоторая несократимая дробь, а $$z$$ — мусор. При этом для условных вероятностей должно выполняться неравенство$$\PP\left(\left.\irr{k}{t}\hskip0.15em\right|k\right)\ \bydef\ \sum_{z}\left|\left\langle\irr{k}{t}\hskip0.15em,z\,\Bigl|V_{a,k} \Bigr|0\right\rangle \right|^2\ \ge\ 1-\eps,$$ где $$\,\irr{k}{t}\$$, обозначает несократимую дробь, представляющую рациональное число $$\slashfrac{k}{t}$$.

Построение такой измеряющей схемы довольно сложное, поэтому вначале объясним, как из нее строится машина $$M$$. Возьмем состояние $$\ket1$$ в качестве начального. Прямое вычисление (читателю рекомендуется его проделать) показывает, что$$\ket1= \frac{1}{\sqrt{t}}\sum_{k=0}^{t-1}\ket{\xi_k}.$$ Это равенство гарантирует равномерное распределение числителей дробей. Проведем измерение в этом состоянии, тогда по формуле полной вероятности получаем$$\PP\Bigl(W(\ket0\otimes\ket1),y\Bigr) = \sum_{k}^{}\PP(y\big| k)\, \PP(\ket1, \calL_k).$$

Вероятности всех $$\ket{\xi_k}$$ равны: $$\PP(\ket{1},\calL_k)=\left| \langle \xi_k|1\rangle \right|^2=\slashfrac1t$$, а указанное выше свойство условных вероятностей гарантирует нам, что с вероятностью $$1-\eps$$ будет получаться $$\irr{k}{t}\$$,. Как будет видно в дальнейшем, при построении $$W$$ можно сделать величину $$\eps$$ сколь угодно малой.

Условно работу машины $$M$$ можно представить в виде такого процесса:

(Cлучайный выбор $$k$$ происходит сам по себе, без применения какого бы то ни было оператора. Просто формула полной вероятности устроена так, как будто до начала измерения генерируется случайное $$k$$, которое затем остается постоянным. Разумеется, формула условной вероятности верна только тогда, когда оператор $$W$$ является измеряющим для заданных подпространств $$\calL_{a,k}$$ ).

Построение измеряющего оператора.

Теперь будем строить оператор, измеряющий собственные числа $$U_a$$. Как уже было сказано, можно ограничиться изучением действия этого оператора на вход $$\ket{\xi_{a,k}}$$. Построение разделяется на три этапа.

  • Ищем информацию о $$\lambda_k=e^{2\pi\ii\varphi_k}$$, где $$\varphi_k=\frac{k}{t}\bmod1$$.
  • Локализуем значение $$\ph$$ с небольшой точностью. Самое время подчеркнуть, что во всех приводимых рассуждениях есть два параметра: вероятность ошибки $$\eps$$ и точность $$\delta$$. Мы получаем некоторое число $$z$$ как результат измерения, при этом должно выполняться условие $$\Prob[|z-\ph_k|>\delta]\le\eps$$. Пока нас устроит небольшая точность, скажем, $$\delta=1/8$$
  • Далее нужно увеличить точность. Необходимо уметь отличать друг от друга числа вида $$\ph=\slashfrac{k}t$$, где $$0\le k<t<2^n$$. Заметим, что если $$\slashfrac{k_1}{t_1}\ne\slashfrac{k_2}{t_2}$$, то $$\left|\slashfrac{k_1}{t_1}-\slashfrac{k_2}{t_2}\right|\ge\slashfrac{1}{t_1t_2} >\slashfrac{1}{2^{2n}}$$. Поэтому, зная значение $$\ph_k=\slashfrac{k}{t}$$ с точностью $$\slashfrac1{2^{2n+1}}$$, мы можем определить его абсолютно точно (в виде несократимой дроби). Чтобы сделать это эффективно (за полиномиальное время), можно использовать алгоритм цепных дробей.
  • Как получать информацию о собственном числе.

    В лекции 11 был введен оператор $$\Xi(U_a)\double=(H\otimes I)\Lambda(U_a)(H\otimes I)$$, измеряющий собственные числа. В нашем случае $$\lambda_k=e^{2\pi\ii\ph_k}$$, поэтому можно записать этот оператор в виде$$\Xi(U_a) =\sum\limits_{k}^{} V_{a,k}\otimes\Pi_{\calL_{a,k}},\quad V_{a,k}=\frac{1}{2} \begin{pmatrix} 1+e^{2\pi\ii\ph_k}1-e^{2\pi\ii\ph_k}\\1-e^{2\pi\ii\ph_k}1+e^{2\pi\ii\ph_k} \end{pmatrix},$$ а его действие в виде$$\ket{0}\otimes\ket{\xi_k}\ \stackrel{\Xi(U_a)}{\longmapsto}\ \left( \frac{1+e^{2\pi\ii\ph_k}}{2}\ket{0}+ \frac{1-e^{2\pi\ii\ph_k}}{2}\ket{1} \right) \otimes \ket{\xi_k},$$ так что для условных вероятностей получаем выражение$$\PP(0\big| k)=\left|\frac{1+e^{2\pi\ii\ph_k}}{2}\right|^2 =\frac{1+\cos(2\pi\ph_k)}{2}.$$

    Нам потребуется еще оператор $$\Xi(\ii U_a)$$. Его также нетрудно реализовать. Реализация, изображенная на рисунке, использует оператор $$K\double=\begin{pmatrix} 10\\0\ii\end{pmatrix}$$ из стандартного базиса. Обведенный фрагмент реализует оператор $$\Lambda(\ii U_a)$$. Действительно, $$K$$ умножает на $$\ii$$ только $$\ket1$$, но как раз в этом случае применяется оператор $$U_a$$ (по определению оператора $$\Lambda(U_a)$$ ). Для оператора $$\Xi(\ii U_a)$$ условные вероятности равны$$\PP(0\big| k)=\frac{1-\sin(2\pi\ph_k)}{2}.$$

    Сложность реализации операторов $$\Xi(U_a)$$ и $$\Xi(\ii U_a)$$ зависит от сложности реализации оператора $$\Lambda(U_a)$$, которая ненамного выше сложности реализации оператора $$U_a$$ (см. задачу 12.2).

    Оценка условных вероятностей.

    Мы будем локализовывать значение $$\ph_k$$, оценивая условные вероятности, приведенные выше. Для получения такой оценки будем применять операторы $$\Xi(U_a)$$ и $$\Xi(\ii U_a)$$ к различным "приборам" (дополнительным q-битам). Рассуждения одинаковы для обоих операторов, поэтому ограничимся случаем $$\Xi(U_a)$$.

    У нас есть квантовый регистр $$A$$, в котором находится $$\ket{\xi_{a,k}}$$. (На самом деле там вначале был$$\ket1=\frac{1}{\sqrt{t}}\sum_{k=0}^{t-1}\ket{\xi_k},$$ но мы рассматриваем $$\ket{\xi_{a,k}}$$ по отдельности; это корректно в силу вида измеряющего оператора). Заведем большое количество ( $$s$$ штук) вспомогательных регистров длиной в 1 бит. Каждый из этих регистров будет использоваться для применения оператора $$\Xi(U_a)$$.

    Как было доказано в лекции 11, условные вероятности в таком случае перемножаются. Для оператора$$\prod\limits_{r=1}^s \Xi(U_a)[r,A]$$ условные вероятности будут равны $$\PP(y_1,\dots, y_s\big| k)=\prod\limits_{r=1}^{s} \PP(y_r\big| k)$$ (здесь через $$y_r$$ обозначено значение в $$r$$ -ом бите).

    Далее с битами, в которых записаны результаты "экспериментов", будут уже производиться классические действия. Поскольку условные вероятности перемножаются, можно считать, что мы оцениваем вероятность выпадения 1 в серии испытаний Бернулли.

    Если монета брошена $$s$$ раз, то доля выпавших единиц $$(\sum y_r)/s$$ примерно равна $$\PP(1\big| k)$$. С какой точностью верна такая оценка? Из теории вероятностей известно, что$$\Prob\left[\left|\frac{\sum\nolimits_{r=1}^{s}y_r}{s}-\PP(1\big|k)\right| >\delta\right]<2e^{-c\delta^{2}s},$$ где $$c>0$$ — некоторая константа. Это показывает, что при любом фиксированном $$\delta$$ можно добиться вероятности ошибки $$\eps$$ за $$O(\log(1/\eps))$$ испытаний.

    Итак, мы научились находить с некоторой точностью $$\delta$$ синус и косинус от $$\ph_k$$. Теперь подберем $$\delta$$ таким, чтобы значение $$\ph_k$$ можно было установить по значениям синуса и косинуса с точностью $$1/8$$. На этом второй этап завершен.

    Экспоненциально точное определение собственных чисел.

    Для увеличения точности мы будем использовать, наряду с $$\Lambda(U_a)$$, операторы $$\Lambda((U_a)^{2^j})$$ для всех $$j\le 2n$$. Числа мы можем быстро возводить в степень, а операторы, вообще говоря, — нет. Но оператор умножения на число $$U_a$$ обладает следующим замечательным свойством:$$(U_a)^p = U_{a^p\bmod q}.$$ Следовательно, $$\Lambda((U_a)^{2^j})=\Lambda(U_b)$$, где $$b\equiv a^{2^j}\pmod q$$. Нужные нам значения параметра $$b$$ можно вычислить при помощи схемы полиномиального размера, а затем использовать результат задачи 12.2.

    Вход: $$a$$ и $$q$$

  • Вычисление степеней $$a^{2^j}$$ ( $$j=1,\dots,2n$$ ) по модулю $$q$$ (классическое).
  • Cоздание $$l$$ штук квантовых регистров, содержащих базисное состояние $$|1\rangle$$.
  • Вычисление наибольшего общего знаменателя (классическое).
  • Ответ: $$t$$ (с вероятностью ошибки $$<3\cdot 2^{-l}+4nle^{-cs}$$, где $$c={\rm const}$$ )

    Вернемся к схеме упоминаемой ранее. Мы находили собственное число $$\lambda_k=e^{2\pi\ii\ph_k}$$ для некоторого собственного вектора $$\ket{\xi_{a,k}}$$. Этот же вектор останется собственным и для любой степени оператора $$U_a$$, поэтому можно на одном и том же квантовом регистре искать собственное число для $$U_a^2=U_{a^2}$$, оно равно $$\lambda_k=e^{2\pi\ii2\ph_k}$$ ; для $$U_a^4=U_{a^4}$$ оно равно $$\lambda_k\double=e^{2\pi\ii4\ph_k}$$ ;...

    Другими словами, мы можем с точностью $$1/8$$ определить значения $$\ph_k, 2\ph_k, \dots, 2^{2n}\ph_k$$ по модулю 1. Но это позволяет определить $$\ph_k$$ с точностью $$1/2^{2n+1}$$ за полиномиальное время .

    Идея доказательства. Множество возможных значений $$\ph_k$$ удобно представлять в виде окружности единичной длины. Зная $$\ph_k$$ с точностью $$1/8$$, мы выделяем дугу в $$1/4$$ от всей окружности. Знание $$2\ph_k$$ с точностью $$1/8$$ позволяет выделить две дуги длиной $$1/8$$ каждая, причем только одна из них имеет непустое пересечение с предыдущей дугой.

    Важные замечания.

  • Существенно, что вектор $$\ket{\xi_k}$$ не портится во время вычислений.
  • Все вычисление в целом зависит от параметров $$l$$ и $$s$$. Cуммарная вероятность ошибки не превышает $$3\cdot 2^{-l}+4nle^{-cs}$$, где $$c={\rm const}$$. Если требуется получить ответ с вероятностью ошибки $$\le\slashfrac{1}{3}$$, следует положить $$l=4$$, $$s=c_1\log n$$, где $$c_1$$ — некоторая константа. При этом получается квантовая схема размера $$O(n^3\log n)$$.
  • Обсуждение алгоритма.

    Обсудим два естественно возникающих вопроса по поводу изложенного алгоритма.

    — Можно ли находить собственные числа других операторов так же, как в алгоритме вычисления периода? Да, например, можно находить собственные числа таких операторов $$U$$, для которых $$U\ket0=\ket0$$, и есть полиномиальная схема реализации оператора $$\Lambda(U)$$. (Из задачи 7.5 следует, что если для самого оператора $$U$$ есть полиномиальная схема, то и для оператора $$\Lambda(U)$$ ее также можно построить).

    Точность определения собственных чисел произвольного оператора невелика, полиномиально зависит от размера схемы. Если можно эффективно вычислять степени оператора (как и было в рассмотренном алгоритме), то точность можно сделать экспоненциальной.

    — Какие собственные числа мы находим?

    Мы находим значение случайно выбранного собственного числа. Распределением по множеству всех собственных чисел можно управлять, выбирая начальное состояние (в алгоритме вычисления периода — $$\ket1$$ ). Если взять в качестве начального состояние, задаваемое диагональной матрицей плотности$$\rho=\frac{1}{t}\sum\limits_{a}^{} \ket{a}\bra{a} =\frac{1}{t}\sum\limits_{k}^{} \ket{\xi_k}\bra{\xi_k},$$ где $$\ket{\xi_k}$$ пробегает множество собственных векторов $$U$$, то получим равномерное распределение на множестве всех собственных чисел. В алгоритме нахождения периода начальное состояние выбиралось иначе: мы выбирали такой вектор, чтобы получить равномерное распределение на собственных числах, соответствующих определенной орбите, остальные собственные числа не порождались.

    Задача 12.3. Постройте квантовую схему размера $$\poly(n\log(\slashfrac1\delta))$$, реализующую преобразование Фурье на группе $$\ZZ_k$$ при любом $$k\le 2^n$$ с точностью $$\delta$$. (Определение см. в задаче 8.4. Указание: воспользуйтесь результатом задачи 11.2).

    Задача о скрытой подгруппе в $$\ZZ^k$$.

    Алгоритмы, открытые Саймоном и Шором, обобщаются на довольно широкий класс задач, связанных с абелевыми группами. Самой общей из них является задача о скрытой подгруппе в $$\ZZ^k$$ [23]. К ней сводится задача о скрытой подгруппе в любой конечно-порожденной абелевой группе $$G$$, поскольку $$G$$ можно представить как фактор-группу $$\ZZ^k$$ (для некоторого $$k$$ ).

    "Скрытая подгруппа" $$D\subseteq\ZZ^k$$ изоморфна $$\ZZ^k$$, поскольку она имеет конечный индекс: порядок группы $$E=\ZZ^k/D$$ не превосходит $$2^n$$. С вычислительной точки зрения $$D$$ представляется базисом $$(g_1,\dots,g_k)$$, двоичная запись которого имеет длину $$\poly(k,n)$$. Любой такой базис считается решением задачи. (Эквивалентность двух базисов можно проверить при помощи полиномиального алгоритма).

    Задача о вычислении периода является частным случаем задачи о скрытой подгруппе в $$\ZZ$$. Напомним, что $$per_q(a)=\min\{t\geq1: a^t\equiv1\pmod q\}$$. Фунция $$f\colon x\mapsto a^x\bmod q$$ удовлетворяет условию (12.1), где $$D=\{m\,per_q(a): m\in\ZZ\}$$. Эта функция полиномиально вычислима, поэтому любой полиномиальный алгоритм нахождения скрытой подгруппы преобразуется в полиномиальный алгоритм решения задачи о вычислении периода.

    Известная задача вычисления дискретного логарифма может быть сведена к задаче о скрытой подгруппе в $$\ZZ^2$$. Дискретным логарифмом числа $$a$$ по основанию $$\zeta$$, где $$\zeta$$ — некоторый первообразный корень по модулю простого числа $$q$$ (образующая $$(\ZZ/q\ZZ)^*$$ ), называется наименьшее положительное число $$s$$ такое, что $$\zeta^s=a$$. Рассмотрим функцию $$f\colon (x_1,x_2)\mapsto\zeta^{x_1}a^{x_2}\bmod q$$. Эта функция также удовлетворяет условию (12.1), где $$D=\{(x_1,x_2)\in\ZZ^2: \zeta^{x_1} a^{x_2}\equiv 1\pmod q\}$$. Зная базис подгруппы $$D\subseteq\ZZ^2$$, легко найти элемент вида $$(s,-1)\in D$$. Тогда $$\zeta^s=a$$, т.е. $$s$$ есть дискретный логарифм $$a$$ по основанию $$\zeta$$.

    Опишем квантовый алгоритм решения задачи о скрытой подгруппе в $$G=\ZZ^k$$. Он аналогичен алгоритму для случая $$G=(\ZZ_2)^k$$, только вместо оператора $$H^{\otimes k}$$ используется процедура измерения собственных чисел. Вместо базиса самой группы $$D$$ мы будем искать систему образующих для группы характеров $$E^*=\mathop{\rm Hom}(E, U(1))$$ (переход от $$E^*$$ к $$D$$ осуществляется при помощи полиномиального алгоритма, см., например,[14, Т.1]). Характер$$(g_1,\dots,g_k)\mapsto\exp(2\pi i\sum_j\phi_jg_j)$$ задается набором чисел $$\phi_1,\dots,\phi_k$$ по модулю $$1$$. Это рациональные числа со знаменателями не больше $$|E^*|\le 2^n$$.

    Если породить $$l=n+3$$ случайных равномерно распределенных характера $$(\phi_1^{(1)},\dots,\phi_k^{(1)})$$ $$,\dots$$, $$(\phi_1^{(l)},\dots,\phi_k^{(l)})$$, то они порождают всю группу $$E^*$$ с вероятностью $$\ge 1-\slashfrac{1}{2^{l-n}}=1-\slashfrac{1}{8}$$ (см. задачу 12.1). Каждую из величин $$\phi_j^{(r)}$$ достаточно знать с точностью $$\delta$$ и вероятностью ошибки $$\le\eps$$, где$$\begin{equation}\label{deltaeps} \delta\le\frac{1}{2^{2n+1}},\qquad\quad \eps\le\frac{1}{5kl}. \end{equation}$$ Последнее условие гарантирует, что суммарная вероятность ошибки будет не больше, чем $$\slashfrac{1}{8}+\slashfrac{1}{5}<\slashfrac{1}{3}$$.

    Выберем достаточно большое число $$M=2^m$$ (конкретная оценка получается из анализа алгоритма). Мы будем работать с целыми числами в диапазоне от $$0$$ до $$M-1$$.

    Приготовим в одном квантовом регистре длины $$km$$ состояние$$\ket{\xi}=M^{-k/2}\sum_{g\in\Delta} \ket{g},\ \text{где}\ \Delta=\{0,\dots,M-1\}^k.$$ В другой регистр поместим $$\ket{0^n}$$. Применим квантовый оракул (12.2) и выбросим второй регистр. Получится смешанное состояние$$\rho=\Tr_{[km+1,\dots,km+n]}\Bigl(U\bigl(\ket{\xi}\bra{\xi}\otimes\ket{0^n}\bra{0^n} \bigr)U^\dagger \Bigr)= M^{-k}\mkern-6mu \sum_{g,h\in\Delta:g-h\in D}\mkern-3mu \ket{g}\bra{h}.$$

    Теперь мы собираемся измерить собственные значения операторов сдвига по модулю $$M$$:$$V_j\colon \Bigl(g_1,\dots,g_j,\dots,g_k\Bigr) \,\mapsto\, \Bigl(g_1,\dots,(g_j+1)\bmod M,\dots,g_k\Bigr)$$ (меняется только $$j$$ -ая компонента). Эти операторы коммутируют, поэтому у них есть общий базис из собственных векторов, и, значит, можно определять их собственные числа одновременно. Собственные числа имеют вид $$e^{2\pi is_j/M}$$. Соответствующие собственные векторы равны$$\ket{\xi_{s_1,\dots,s_k}} \,=\, M^{-k/2} \sum_{(g_1,\dots,g_k)\in\Delta} \exp\Bigl(-2\pi i\sum_{j=1}^{k}\frac{g_js_j}{M}\Bigr) \ket{g_1,\dots,g_k}.$$

    Вероятность того, что реализуется данный набор $$s_1,\dots,s_k$$, равна$$\begin{equation*} \PP(\rho,\,\calL_{s_1,\dots,s_k}) = \bra{\xi_{s_1,\dots,s_k}}\,\rho\,\ket{\xi_{s_1,\dots,s_k}}\, =\\ =\ M^{-2k} \sum_{g,h\in\ZZ^k}\chi_D(g-h)\,\chi_\Delta(g)\chi_\Delta(h)\, \exp\Bigl(2\pi i\sum_{j=1}^{k}\frac{(g_j-h_j)s_j}{M}\Bigr), \end{equation*}$$ где $$\chi_A(\cdot)$$ обозначает характеристическую функцию множества $$A$$. Фурьеобраз от произведения равен свертке фурье-образов сомножителей. Таким образом, получаем:$$\begin{equation*} \PP(\rho,\,\calL_{s_1,\dots,s_k}) = \frac{1}{|E^*|} \sum_{(\phi_1,\dots,\phi_k)\in E^*} p_{\phi_1,\dots,\phi_k}(s_1,\dots,s_k),\\ \text{где}\quad p_{\phi_1,\dots,\phi_k}(s_1,\dots,s_k) = \prod_{j=1}^{k} \left(\frac{\sin(M\pi(s_j/M-\phi_j))}{M\sin(\pi(s_j/M-\phi_j))}\right)^2. \end{equation*}$$

    При заданных значениях $$\phi_1,\dots,\phi_k$$ функция $$p_{\phi_1,\dots,\phi_k}(s_1,\dots,s_k)$$ является вероятностным распределением, относительно которого$$\Pr\Bigl[|s_j/M-\phi_j|>\beta\Bigr] \,\le\, \frac{1}{M\beta}$$ ( $$\beta$$ — любое). Мы измеряем величины $$s_j/M$$ (как уже говорилось, измерение одной из них не меняет значения другой); при этом нас устроит точность $$\beta$$ и вероятность ошибки $$\le\slashfrac{1}{M\beta}$$. Тем самым мы получаем значения $$\phi_1,\dots,\phi_k$$ с точностью $$\delta=2\beta$$ и вероятностью ошибки $$\le\eps=\slashfrac{2}{M\beta}$$. Теперь осталось подобрать числа $$M$$ и $$\beta$$, чтобы удовлетворить неравенствам 12.3.

    Сложность алгоритма.

    Tребуется $$O(n)$$ обращений к оракулу, каждый вопрос имеет длину $$O(k(n+\log k))$$. Размер квантовой схемы оценивается как $$O(kn^3)\poly(\log k,\log n)$$.

    Замечание. Для измерения собственных чисел операторов $$V_j$$ можно воспользоваться квантовым преобразованием Фурье на группе $$\ZZ_M$$ при $$M=2^m$$ (см. задачу 8.4). Это позволяет несколько уменьшить размер схемы (на логарифмический множитель), однако приходится использовать нестандартные элементы.

    Страницы:

    Единственное нетривиальное использование квантовых свойств для вычислений, которое мы уже рассмотрели, — это решение универсальной переборной задачи алгоритмом Гровера, изложенным в лекции 8. К сожалению, при этом достигается лишь полиномиальное ускорение. Поэтому никаких серьезных следствий для теории сложности вычислений (типа $$\BQP\supset \BPP$$ ) алгоритм Гровера не дает. В настоящее время нет доказательства того, что квантовые вычисления превосходят по скорости классические вероятностные. Но есть косвенные свидетельства в пользу такого утверждения. Первое из них — пример задачи с оракулом (т.е. процедурой типа "черного ящика"), для которой существует полиномиальный квантовый алгоритм, в то время как любой классический вероятностный алгоритм экспоненциаленСледует иметь в виду, что сложность задач с оракулом часто отличается от сложности обычных вычислительных задач. Классический пример — теорема о том, что $$\IP=\PSPACE$$ [36, 37]. Оракульный аналог этого утверждения неверен [30]! . Этот пример, построенный Д. Саймоном [42], называется задачей о скрытой подгруппе в $$(\ZZ_2)^k$$ . В дальнейшем мы решим также задачу о скрытой подгруппе в $$\ZZ^k$$, обобщающую все результаты из этого раздела.

    Задача о скрытой подгруппе. Пусть $$G$$ — конечная группа, причем задано некоторое представление элементов $$G$$ двоичными словами. Имеется устройство ( оракул ), вычисляющее функцию $$f\colon G\to\cb^n$$ со следующим свойством:$$\begin{equation}\label{скр-подгруппа} f(x)=f(y)\,\ \Longleftrightarrow\,\ x-y\in D, \end{equation}$$ где $$D\subseteq G$$ — некоторая заранее неизвестная подгруппа. Нужно найти эту подгруппу.

    Задача о скрытой подгруппе в $$(\ZZ_2)^k$$.

    Мы рассмотрим сформулированную выше задачу в случае $$G=(\ZZ_2)^k$$. Элементы этой группы

    можно представлять строками длины $$k$$ из нулей и единиц; групповая операция — побитовое сложение по модулю 2.

    Легко доказать, что нельзя быстро найти "скрытую подгруппу" на классической вероятностной машине. (Классическая машина посылает на вход "черного ящика" строки $$x_1,\dots,x_l$$ и получает ответы $$y_1,\dots,y_l$$. Каждый следующий вопрос $$x_j$$ зависит от предыдущих ответов $$y_1,\dots,y_{j-1}$$ и некоторого случайного числа $$r$$.)

    Утверждение 12.1. Пусть $$n\ge k$$. Для любого классического вероятностного алгоритма, делающего не более $$2^{k/2}$$ обращений к оракулу, существует подгруппа $$D\subseteq(\ZZ_2)^k$$ и соответствующая функция $$f\colon (\ZZ_2)^k\to\cb^n$$, для которой алгоритм ошибается с вероятностью $$>\slashfrac{1}{3}$$.

    Доказательство. Для одной и той же подгруппы $$D$$ существует несколько различных оракулов $$f$$. Мы будем считать, что один из них выбирается случайно и равновероятно. (Если алгоритм ошибается с вероятностью $$>\slashfrac{1}{3}$$ при случайном оракуле, то он также будет ошибаться с вероятностью $$>\slashfrac{1}{3}$$ при каком-нибудь конкретном оракуле.) Случайный оракул обладает следующим свойством: если очередной ответ $$y_j$$ не совпадает ни с одним из предыдущих ответов $$y_1,\dots,y_{j-1}$$, то он равномерно распределен на множестве $$\cb^n\backslash\{y_1,\dots,y_{j-1}\}$$. Таким образом, случайный оракул эквивалентен устройству с памятью, которое на вопрос $$x_j$$ выдает наименьшее число $$s_j\le j$$, такое что $$x_j-x_{s_j}\in D$$. Классическую машину можно изменить таким образом, что она сама будет производить случайный выбор $$y_j\double\in\cb^n\backslash\{y_1,\dots,y_{j-1}\}$$, когда $$s_j=j$$.

    Пусть число вопросов к оракулу равно $$l\le 2^{k/2}$$. Без уменьшения общности все вопросы различны. В случае $$D=\{0\}$$ все ответы также различны, то есть $$s_j=j$$ для всех $$j$$. Теперь рассмотрим случай $$D\double=\{0,z\}$$, где $$z$$ выбирается случайно с равномерным распределением на множестве всех ненулевых элементов группы $$(\ZZ_2)^k$$. Тогда, независимо от используемого алгоритма, $$s_j=j$$ c вероятностью $$\ge 1-\slashfrac{(j-1)}{(2^k-1)}$$. С вероятностью $$\ge1-\slashfrac{l(l-1)}{(2(2^k-1))}>\slashfrac{1}{2}$$ это имеет место для всех $$j=1,\dots,l$$. Напомним, что у нас есть два случайных параметра: $$z$$ и $$r$$. Мы можем зафиксировать $$z$$ таким образом, чтобы вероятность получения ответов $$s_j=j$$ (для всех $$j$$ ) по-прежнему была больше $$\slashfrac{1}{2}$$. Посмотрим, что будет делать классическая машина в этом случае. Если она выдает ответ " $$D=\{0\}$$ " с вероятностью $$\ge\slashfrac{2}{3}$$, положим $$D=\{0,z\}$$ — тогда выдаваемый ответ будет неверным с вероятностью $$>(\slashfrac{2}{3})\cdot(\slashfrac{1}{2})=\slashfrac{1}{3}$$. Если же вероятность ответа " $$D=\{0\}$$ " меньше $$\slashfrac{2}{3}$$, положим $$D=\{0\}$$.

    Теперь определим квантовый аналог описанного выше устройства. Соответствующий квантовый оракул — это унитарный оператор$$\begin{equation}\label{кв-оракул} U\colon \ket{x,y}\,\mapsto\,\ket{x,\,y\oplus f(x)}. \end{equation}$$ ( $$\oplus$$ обозначает побитовое сложение). Заметим, что квантовый оракул допускает линейные комбинации разных вопросов, поэтому его можно использовать более эффективно, чем классический оракул.

    Пусть $$Е=G/D$$, а $$E^*$$ — группа характеров на $$E$$, т.е. гомоморфизмов $$E\to U(1)$$. В случае $$G=(\ZZ_2)^k$$ группу $$E^*$$ можно охарактеризовать следующим образом:$$E^*= \{h \in(\ZZ_2)^k: \forall\, z\in(\ZZ_2)^k\: (h\cdot z=0) \},$$ где $$h\cdot z$$ обозначает скалярное произведение по модулю 2. (Соответствующий $$h$$ характер имеет вид $$z\mapsto(-1)^{h\cdot z}$$.) Покажем, как можно породить случайный элемент $$h\in E^*$$, используя оператор $$U$$. Породив достаточно много случайных элементов, мы найдем группу $$E^*$$, и, тем самым, исходную подгруппу D.

    Начнем с того, что приготовим состояние $$\ket{\xi}=2^{-k/2}\sum_{x\in G}\ket{x}=H^{\otimes k}\ket{0^k}$$ в одном квантовом регистре. Во второй регистр поместим состояние $$\ket{0^n}$$ и применим оператор $$U$$. Затем выбросим второй регистр, т.е. не будем его больше использовать. Получится смешанное состояние$$\rho \,=\, \Tr_2\Bigl(U(\ket{\xi}\bra{\xi}\otimes\ket{0^n}\bra{0^n})U^\dagger \Bigr)\,=\, 2^{-k}\,\sum_{x,y:x-y\in D}\ket{x}\bra{y}.$$ Теперь применим оператор $$H^{\otimes k}$$:$$\gamma \,=\, H^{\otimes k}\rho H^{\otimes k} \,=\, 2^{-2k} \sum_{a,b}\sum_{x,y:x-y\in D} (-1)^{a\cdot x-b\cdot y}\ket{a}\bra{b}.$$ Легко видеть, что величина $$\sum\limits_{x,y:x-y\in D}(-1)^{a\cdot x-b\cdot y}$$ отлична от нуля только в том случае, когда $$a=b\in E^*$$. Таким образом,$$\gamma = \frac{1}{|E^*|} \sum_{a\in Е^*} \ket{a}\bra{a}.$$ Это в точности матрица плотности для случайного равномерно распределенного элемента группы $$E^*$$. Теперь осталось воспользоваться следующей леммой, которую мы сформулируем в виде задачи.

    Задача 12.1. Пусть $$h_1,\dots,h_l$$ — независимые случайные равномерно распределенные элементы абелевой группы $$X$$. Докажите, что они порождают всю группу $$X$$ c вероятностью $$\ge 1-\slashfrac{|X|}{2^l}$$.

    Таким образом, достаточно $$2k$$ случайных элементов, чтобы породить всю группу $$E^*$$ с вероятностью ошибки $$\le 2^{-k}$$. (Такая маленькая вероятность ошибки получается без особых затрат по сравнению с $$\slashfrac{1}{3}$$. Чтобы сделать ее еще меньше, эффективнее всего воспользоваться стандартной процедурой: повторить все вычисление несколько раз и выбрать наиболее часто встречающийся ответ).

    Подведем итог: для нахождения "скрытой подгруппы" $$D$$ требуется $$O(k)$$ обращений к квантовому оракулу. В целом алгоритм имеет сложность $$O(k^3)$$.

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

    Второе свидетельство в пользу гипотезы $$\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)$$.

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

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

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

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

    Вход: число $$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$$.

    Квантовый алгоритм нахождения периода: основная идея.

    Рассмотрим оператор умножения вычета на $$a$$, действующий по правилу $$U_a\colon \ket{x}\mapsto \ket{ax\bmod q}$$. (Более корректное обозначение — $$U_{q,a}$$, однако число $$q$$ не меняется на протяжении всего вычисления, поэтому мы опускаем его в индексах). Этот оператор переставляет базисные векторы при $$0\leq x <q$$ (напомним, что $$(a,q)=1$$ ). Будем считать, что на остальных базисных векторах он действует тождественно, $$U_a\colon \ket{x}\mapsto \ket{x}$$ при $$x\geq q$$.

    Поскольку для умножения вычетов есть обычная булева схема полиномиального — $$O(n^2)$$ — размера, то существует и квантовая схема примерно такого же размера (использующая напрокат дополнительные q-биты, как это объяснялось раньше).

    Перестановка, которую задает оператор $$U_a$$, разбивается на циклы. Цикл, содержащий $$a$$, содержит и $$1$$ (после $$\per_q(a)-1$$ итераций мы попадаем из $$a$$ в $$1$$ ). Алгоритм, о котором пойдет речь, начинает с состояния $$\ket1$$ и применяет к нему оператор $$U_a$$ по многу раз. Но за пределы орбиты $$a$$ (цикла перестановки, которому принадлежит $$a$$ ) мы такими преобразованиями не выйдем. Поэтому рассмотрим ограничение оператора $$U_a$$ на подпространство, порожденное орбитой $$a$$.

    Собственные числа для $$U_a$$ $$\lambda_k= e^{2\pi\ii\cdot k/t}$$, где $$t$$ — период.

    Собственные векторы для $$U_a$$ $$\displaystyle \ket{\xi_{a,k}}=\frac{1}{\sqrt{t}} \sum\limits_{m=0}\limits^{t-1} e^{-2\pi\ii\cdot km/t}\ket{a^m}$$.

    Легко проверить, что написанные векторы действительно собственные. Достаточно заметить, что умножение на $$a$$ приводит к сдвигу индексов в сумме. Если заменить переменную суммирования, чтобы устранить этот сдвиг, получим множитель $$e^{2\pi\ii\cdot k/t}$$.

    Если бы мы могли измерять собственные числа оператора $$U_a$$, то получали бы числа $$k/t$$. Сначала разберем, как это может нам помочь в нахождении периода.

    Пусть у нас есть машина $$M$$, которая при каждом запуске выдает нам число $$k/t$$, где $$t$$ — искомый период, а $$k$$ — равномерно распределенное на множестве $$\{0,\dots,t-1\}$$ случайное число. Мы предполагаем, что $$k/t$$ представлено в виде несократимой дроби $$k'/t'$$ (если бы машина выдавала число в виде $$k/t$$, то вообще не было бы проблем).

    Получив несколько дробей такого вида $$k_1'/t_1',\,k_2'/t_2',\dots,k_l'/t_l'$$, можно с большой вероятностью найти число $$t$$, приводя эти дроби к общему знаменателю.

    Лемма. Если получено $$l$$ дробей, то вероятность того, что наименьшее общее кратное их знаменателей отлично от $$t$$, меньше $$3\cdot2^{-l}$$.

    Доказательство. Дроби $$k_1'/t_1',\dots,k_l'/t_l'$$ получаются сокращением дробей $$k_1/t,\dots,k_l/t$$ (т.е. $$k_j'/t_j'=k_j/t$$ ), где $$k_1,\dots,k_l$$ — независимо распределенные случайные числа. Достаточно, чтобы эти числа были в совокупности взаимно просты, тогда наименьшее общее кратное $$t_1',\dots,t_l'$$ будет равно $$t$$.

    Вероятность того, что $$k_1,\dots,k_l$$ имеют общий простой делитель $$p$$, не больше, чем $$1/p^l$$. Поэтому вероятность получить не $$t$$ после приведения к общему знаменателю не превосходит $$\displaystyle \sum\limits_{k=2}\limits^{\infty} \frac{1}{k^l} <3\cdot2^{-l}$$ (эта сумма заведомо включает в себя все простые, меньшие $$t$$ ).

    Теперь будем строить машину $$M$$. Она должна содержать схему, измеряющую собственные числа оператора $$U_b$$ для любого $$b$$ (а не только для $$b=a$$ — числа, для которого ищется период). Точнее говоря, нам нужен оператор $$U\colon \ket{b,x}\mapsto \ket{b,bx\bmod q}$$, если $$(b,q)=1$$. Как оператор $$U$$ действует в остальных случаях, неважно. Его можно доопределить любым вычислительно тривиальным способом. На самом деле, все приведенные ранее рассуждения об имитации классических схем квантовыми сохраняют силу и для имитации схем, вычисляющих частично определенные функции.

    Задача 12.2. Используя оператор $$U$$, реализуйте оператор $$\Lambda(U_b)$$ для любого $$b$$, взаимно простого с $$q$$.

    Обозначим $$\calL_{a,k}=\CC(\ket{\xi_{a,k}})$$ (подпространство, порожденное $$\ket{\xi_{a,k}}$$ ), тогда искомая схема должна реализовывать измеряющий оператор $$W=\sum\limits_{k=0}^{t-1}V_{a,k}\otimes\Pi_{\calL_{a,k}}$$ с операторами $$V_{a,k}$$ вида $$\ket{0}\mapsto\sum_{y,z}c_{y,z}\ket{y,z}$$, где $$y$$ — некоторая несократимая дробь, а $$z$$ — мусор. При этом для условных вероятностей должно выполняться неравенство$$\PP\left(\left.\irr{k}{t}\hskip0.15em\right|k\right)\ \bydef\ \sum_{z}\left|\left\langle\irr{k}{t}\hskip0.15em,z\,\Bigl|V_{a,k} \Bigr|0\right\rangle \right|^2\ \ge\ 1-\eps,$$ где $$\,\irr{k}{t}\$$, обозначает несократимую дробь, представляющую рациональное число $$\slashfrac{k}{t}$$.

    Построение такой измеряющей схемы довольно сложное, поэтому вначале объясним, как из нее строится машина $$M$$. Возьмем состояние $$\ket1$$ в качестве начального. Прямое вычисление (читателю рекомендуется его проделать) показывает, что$$\ket1= \frac{1}{\sqrt{t}}\sum_{k=0}^{t-1}\ket{\xi_k}.$$ Это равенство гарантирует равномерное распределение числителей дробей. Проведем измерение в этом состоянии, тогда по формуле полной вероятности получаем$$\PP\Bigl(W(\ket0\otimes\ket1),y\Bigr) = \sum_{k}^{}\PP(y\big| k)\, \PP(\ket1, \calL_k).$$

    Вероятности всех $$\ket{\xi_k}$$ равны: $$\PP(\ket{1},\calL_k)=\left| \langle \xi_k|1\rangle \right|^2=\slashfrac1t$$, а указанное выше свойство условных вероятностей гарантирует нам, что с вероятностью $$1-\eps$$ будет получаться $$\irr{k}{t}\$$,. Как будет видно в дальнейшем, при построении $$W$$ можно сделать величину $$\eps$$ сколь угодно малой.

    Условно работу машины $$M$$ можно представить в виде такого процесса:

    (Cлучайный выбор $$k$$ происходит сам по себе, без применения какого бы то ни было оператора. Просто формула полной вероятности устроена так, как будто до начала измерения генерируется случайное $$k$$, которое затем остается постоянным. Разумеется, формула условной вероятности верна только тогда, когда оператор $$W$$ является измеряющим для заданных подпространств $$\calL_{a,k}$$ ).

    Построение измеряющего оператора.

    Теперь будем строить оператор, измеряющий собственные числа $$U_a$$. Как уже было сказано, можно ограничиться изучением действия этого оператора на вход $$\ket{\xi_{a,k}}$$. Построение разделяется на три этапа.

  • Ищем информацию о $$\lambda_k=e^{2\pi\ii\varphi_k}$$, где $$\varphi_k=\frac{k}{t}\bmod1$$.
  • Локализуем значение $$\ph$$ с небольшой точностью. Самое время подчеркнуть, что во всех приводимых рассуждениях есть два параметра: вероятность ошибки $$\eps$$ и точность $$\delta$$. Мы получаем некоторое число $$z$$ как результат измерения, при этом должно выполняться условие $$\Prob[|z-\ph_k|>\delta]\le\eps$$. Пока нас устроит небольшая точность, скажем, $$\delta=1/8$$
  • Далее нужно увеличить точность. Необходимо уметь отличать друг от друга числа вида $$\ph=\slashfrac{k}t$$, где $$0\le k<t<2^n$$. Заметим, что если $$\slashfrac{k_1}{t_1}\ne\slashfrac{k_2}{t_2}$$, то $$\left|\slashfrac{k_1}{t_1}-\slashfrac{k_2}{t_2}\right|\ge\slashfrac{1}{t_1t_2} >\slashfrac{1}{2^{2n}}$$. Поэтому, зная значение $$\ph_k=\slashfrac{k}{t}$$ с точностью $$\slashfrac1{2^{2n+1}}$$, мы можем определить его абсолютно точно (в виде несократимой дроби). Чтобы сделать это эффективно (за полиномиальное время), можно использовать алгоритм цепных дробей.
  • Как получать информацию о собственном числе.

    В лекции 11 был введен оператор $$\Xi(U_a)\double=(H\otimes I)\Lambda(U_a)(H\otimes I)$$, измеряющий собственные числа. В нашем случае $$\lambda_k=e^{2\pi\ii\ph_k}$$, поэтому можно записать этот оператор в виде$$\Xi(U_a) =\sum\limits_{k}^{} V_{a,k}\otimes\Pi_{\calL_{a,k}},\quad V_{a,k}=\frac{1}{2} \begin{pmatrix} 1+e^{2\pi\ii\ph_k}1-e^{2\pi\ii\ph_k}\\1-e^{2\pi\ii\ph_k}1+e^{2\pi\ii\ph_k} \end{pmatrix},$$ а его действие в виде$$\ket{0}\otimes\ket{\xi_k}\ \stackrel{\Xi(U_a)}{\longmapsto}\ \left( \frac{1+e^{2\pi\ii\ph_k}}{2}\ket{0}+ \frac{1-e^{2\pi\ii\ph_k}}{2}\ket{1} \right) \otimes \ket{\xi_k},$$ так что для условных вероятностей получаем выражение$$\PP(0\big| k)=\left|\frac{1+e^{2\pi\ii\ph_k}}{2}\right|^2 =\frac{1+\cos(2\pi\ph_k)}{2}.$$

    Нам потребуется еще оператор $$\Xi(\ii U_a)$$. Его также нетрудно реализовать. Реализация, изображенная на рисунке, использует оператор $$K\double=\begin{pmatrix} 10\\0\ii\end{pmatrix}$$ из стандартного базиса. Обведенный фрагмент реализует оператор $$\Lambda(\ii U_a)$$. Действительно, $$K$$ умножает на $$\ii$$ только $$\ket1$$, но как раз в этом случае применяется оператор $$U_a$$ (по определению оператора $$\Lambda(U_a)$$ ). Для оператора $$\Xi(\ii U_a)$$ условные вероятности равны$$\PP(0\big| k)=\frac{1-\sin(2\pi\ph_k)}{2}.$$

    Сложность реализации операторов $$\Xi(U_a)$$ и $$\Xi(\ii U_a)$$ зависит от сложности реализации оператора $$\Lambda(U_a)$$, которая ненамного выше сложности реализации оператора $$U_a$$ (см. задачу 12.2).

    Оценка условных вероятностей.

    Мы будем локализовывать значение $$\ph_k$$, оценивая условные вероятности, приведенные выше. Для получения такой оценки будем применять операторы $$\Xi(U_a)$$ и $$\Xi(\ii U_a)$$ к различным "приборам" (дополнительным q-битам). Рассуждения одинаковы для обоих операторов, поэтому ограничимся случаем $$\Xi(U_a)$$.

    У нас есть квантовый регистр $$A$$, в котором находится $$\ket{\xi_{a,k}}$$. (На самом деле там вначале был$$\ket1=\frac{1}{\sqrt{t}}\sum_{k=0}^{t-1}\ket{\xi_k},$$ но мы рассматриваем $$\ket{\xi_{a,k}}$$ по отдельности; это корректно в силу вида измеряющего оператора). Заведем большое количество ( $$s$$ штук) вспомогательных регистров длиной в 1 бит. Каждый из этих регистров будет использоваться для применения оператора $$\Xi(U_a)$$.

    Как было доказано в лекции 11, условные вероятности в таком случае перемножаются. Для оператора$$\prod\limits_{r=1}^s \Xi(U_a)[r,A]$$ условные вероятности будут равны $$\PP(y_1,\dots, y_s\big| k)=\prod\limits_{r=1}^{s} \PP(y_r\big| k)$$ (здесь через $$y_r$$ обозначено значение в $$r$$ -ом бите).

    Далее с битами, в которых записаны результаты "экспериментов", будут уже производиться классические действия. Поскольку условные вероятности перемножаются, можно считать, что мы оцениваем вероятность выпадения 1 в серии испытаний Бернулли.

    Если монета брошена $$s$$ раз, то доля выпавших единиц $$(\sum y_r)/s$$ примерно равна $$\PP(1\big| k)$$. С какой точностью верна такая оценка? Из теории вероятностей известно, что$$\Prob\left[\left|\frac{\sum\nolimits_{r=1}^{s}y_r}{s}-\PP(1\big|k)\right| >\delta\right]<2e^{-c\delta^{2}s},$$ где $$c>0$$ — некоторая константа. Это показывает, что при любом фиксированном $$\delta$$ можно добиться вероятности ошибки $$\eps$$ за $$O(\log(1/\eps))$$ испытаний.

    Итак, мы научились находить с некоторой точностью $$\delta$$ синус и косинус от $$\ph_k$$. Теперь подберем $$\delta$$ таким, чтобы значение $$\ph_k$$ можно было установить по значениям синуса и косинуса с точностью $$1/8$$. На этом второй этап завершен.

    Экспоненциально точное определение собственных чисел.

    Для увеличения точности мы будем использовать, наряду с $$\Lambda(U_a)$$, операторы $$\Lambda((U_a)^{2^j})$$ для всех $$j\le 2n$$. Числа мы можем быстро возводить в степень, а операторы, вообще говоря, — нет. Но оператор умножения на число $$U_a$$ обладает следующим замечательным свойством:$$(U_a)^p = U_{a^p\bmod q}.$$ Следовательно, $$\Lambda((U_a)^{2^j})=\Lambda(U_b)$$, где $$b\equiv a^{2^j}\pmod q$$. Нужные нам значения параметра $$b$$ можно вычислить при помощи схемы полиномиального размера, а затем использовать результат задачи 12.2.

    Вход: $$a$$ и $$q$$

  • Вычисление степеней $$a^{2^j}$$ ( $$j=1,\dots,2n$$ ) по модулю $$q$$ (классическое).
  • Cоздание $$l$$ штук квантовых регистров, содержащих базисное состояние $$|1\rangle$$.
  • Вычисление наибольшего общего знаменателя (классическое).
  • Ответ: $$t$$ (с вероятностью ошибки $$<3\cdot 2^{-l}+4nle^{-cs}$$, где $$c={\rm const}$$ )

    Вернемся к схеме упоминаемой ранее. Мы находили собственное число $$\lambda_k=e^{2\pi\ii\ph_k}$$ для некоторого собственного вектора $$\ket{\xi_{a,k}}$$. Этот же вектор останется собственным и для любой степени оператора $$U_a$$, поэтому можно на одном и том же квантовом регистре искать собственное число для $$U_a^2=U_{a^2}$$, оно равно $$\lambda_k=e^{2\pi\ii2\ph_k}$$ ; для $$U_a^4=U_{a^4}$$ оно равно $$\lambda_k\double=e^{2\pi\ii4\ph_k}$$ ;...

    Другими словами, мы можем с точностью $$1/8$$ определить значения $$\ph_k, 2\ph_k, \dots, 2^{2n}\ph_k$$ по модулю 1. Но это позволяет определить $$\ph_k$$ с точностью $$1/2^{2n+1}$$ за полиномиальное время .

    Идея доказательства. Множество возможных значений $$\ph_k$$ удобно представлять в виде окружности единичной длины. Зная $$\ph_k$$ с точностью $$1/8$$, мы выделяем дугу в $$1/4$$ от всей окружности. Знание $$2\ph_k$$ с точностью $$1/8$$ позволяет выделить две дуги длиной $$1/8$$ каждая, причем только одна из них имеет непустое пересечение с предыдущей дугой.

    Важные замечания.

  • Существенно, что вектор $$\ket{\xi_k}$$ не портится во время вычислений.
  • Все вычисление в целом зависит от параметров $$l$$ и $$s$$. Cуммарная вероятность ошибки не превышает $$3\cdot 2^{-l}+4nle^{-cs}$$, где $$c={\rm const}$$. Если требуется получить ответ с вероятностью ошибки $$\le\slashfrac{1}{3}$$, следует положить $$l=4$$, $$s=c_1\log n$$, где $$c_1$$ — некоторая константа. При этом получается квантовая схема размера $$O(n^3\log n)$$.
  • Обсуждение алгоритма.

    Обсудим два естественно возникающих вопроса по поводу изложенного алгоритма.

    — Можно ли находить собственные числа других операторов так же, как в алгоритме вычисления периода? Да, например, можно находить собственные числа таких операторов $$U$$, для которых $$U\ket0=\ket0$$, и есть полиномиальная схема реализации оператора $$\Lambda(U)$$. (Из задачи 7.5 следует, что если для самого оператора $$U$$ есть полиномиальная схема, то и для оператора $$\Lambda(U)$$ ее также можно построить).

    Точность определения собственных чисел произвольного оператора невелика, полиномиально зависит от размера схемы. Если можно эффективно вычислять степени оператора (как и было в рассмотренном алгоритме), то точность можно сделать экспоненциальной.

    — Какие собственные числа мы находим?

    Мы находим значение случайно выбранного собственного числа. Распределением по множеству всех собственных чисел можно управлять, выбирая начальное состояние (в алгоритме вычисления периода — $$\ket1$$ ). Если взять в качестве начального состояние, задаваемое диагональной матрицей плотности$$\rho=\frac{1}{t}\sum\limits_{a}^{} \ket{a}\bra{a} =\frac{1}{t}\sum\limits_{k}^{} \ket{\xi_k}\bra{\xi_k},$$ где $$\ket{\xi_k}$$ пробегает множество собственных векторов $$U$$, то получим равномерное распределение на множестве всех собственных чисел. В алгоритме нахождения периода начальное состояние выбиралось иначе: мы выбирали такой вектор, чтобы получить равномерное распределение на собственных числах, соответствующих определенной орбите, остальные собственные числа не порождались.

    Задача 12.3. Постройте квантовую схему размера $$\poly(n\log(\slashfrac1\delta))$$, реализующую преобразование Фурье на группе $$\ZZ_k$$ при любом $$k\le 2^n$$ с точностью $$\delta$$. (Определение см. в задаче 8.4. Указание: воспользуйтесь результатом задачи 11.2).

    Задача о скрытой подгруппе в $$\ZZ^k$$.

    Алгоритмы, открытые Саймоном и Шором, обобщаются на довольно широкий класс задач, связанных с абелевыми группами. Самой общей из них является задача о скрытой подгруппе в $$\ZZ^k$$ [23]. К ней сводится задача о скрытой подгруппе в любой конечно-порожденной абелевой группе $$G$$, поскольку $$G$$ можно представить как фактор-группу $$\ZZ^k$$ (для некоторого $$k$$ ).

    "Скрытая подгруппа" $$D\subseteq\ZZ^k$$ изоморфна $$\ZZ^k$$, поскольку она имеет конечный индекс: порядок группы $$E=\ZZ^k/D$$ не превосходит $$2^n$$. С вычислительной точки зрения $$D$$ представляется базисом $$(g_1,\dots,g_k)$$, двоичная запись которого имеет длину $$\poly(k,n)$$. Любой такой базис считается решением задачи. (Эквивалентность двух базисов можно проверить при помощи полиномиального алгоритма).

    Задача о вычислении периода является частным случаем задачи о скрытой подгруппе в $$\ZZ$$. Напомним, что $$per_q(a)=\min\{t\geq1: a^t\equiv1\pmod q\}$$. Фунция $$f\colon x\mapsto a^x\bmod q$$ удовлетворяет условию (12.1), где $$D=\{m\,per_q(a): m\in\ZZ\}$$. Эта функция полиномиально вычислима, поэтому любой полиномиальный алгоритм нахождения скрытой подгруппы преобразуется в полиномиальный алгоритм решения задачи о вычислении периода.

    Известная задача вычисления дискретного логарифма может быть сведена к задаче о скрытой подгруппе в $$\ZZ^2$$. Дискретным логарифмом числа $$a$$ по основанию $$\zeta$$, где $$\zeta$$ — некоторый первообразный корень по модулю простого числа $$q$$ (образующая $$(\ZZ/q\ZZ)^*$$ ), называется наименьшее положительное число $$s$$ такое, что $$\zeta^s=a$$. Рассмотрим функцию $$f\colon (x_1,x_2)\mapsto\zeta^{x_1}a^{x_2}\bmod q$$. Эта функция также удовлетворяет условию (12.1), где $$D=\{(x_1,x_2)\in\ZZ^2: \zeta^{x_1} a^{x_2}\equiv 1\pmod q\}$$. Зная базис подгруппы $$D\subseteq\ZZ^2$$, легко найти элемент вида $$(s,-1)\in D$$. Тогда $$\zeta^s=a$$, т.е. $$s$$ есть дискретный логарифм $$a$$ по основанию $$\zeta$$.

    Опишем квантовый алгоритм решения задачи о скрытой подгруппе в $$G=\ZZ^k$$. Он аналогичен алгоритму для случая $$G=(\ZZ_2)^k$$, только вместо оператора $$H^{\otimes k}$$ используется процедура измерения собственных чисел. Вместо базиса самой группы $$D$$ мы будем искать систему образующих для группы характеров $$E^*=\mathop{\rm Hom}(E, U(1))$$ (переход от $$E^*$$ к $$D$$ осуществляется при помощи полиномиального алгоритма, см., например,[14, Т.1]). Характер$$(g_1,\dots,g_k)\mapsto\exp(2\pi i\sum_j\phi_jg_j)$$ задается набором чисел $$\phi_1,\dots,\phi_k$$ по модулю $$1$$. Это рациональные числа со знаменателями не больше $$|E^*|\le 2^n$$.

    Если породить $$l=n+3$$ случайных равномерно распределенных характера $$(\phi_1^{(1)},\dots,\phi_k^{(1)})$$ $$,\dots$$, $$(\phi_1^{(l)},\dots,\phi_k^{(l)})$$, то они порождают всю группу $$E^*$$ с вероятностью $$\ge 1-\slashfrac{1}{2^{l-n}}=1-\slashfrac{1}{8}$$ (см. задачу 12.1). Каждую из величин $$\phi_j^{(r)}$$ достаточно знать с точностью $$\delta$$ и вероятностью ошибки $$\le\eps$$, где$$\begin{equation}\label{deltaeps} \delta\le\frac{1}{2^{2n+1}},\qquad\quad \eps\le\frac{1}{5kl}. \end{equation}$$ Последнее условие гарантирует, что суммарная вероятность ошибки будет не больше, чем $$\slashfrac{1}{8}+\slashfrac{1}{5}<\slashfrac{1}{3}$$.

    Выберем достаточно большое число $$M=2^m$$ (конкретная оценка получается из анализа алгоритма). Мы будем работать с целыми числами в диапазоне от $$0$$ до $$M-1$$.

    Приготовим в одном квантовом регистре длины $$km$$ состояние$$\ket{\xi}=M^{-k/2}\sum_{g\in\Delta} \ket{g},\ \text{где}\ \Delta=\{0,\dots,M-1\}^k.$$ В другой регистр поместим $$\ket{0^n}$$. Применим квантовый оракул (12.2) и выбросим второй регистр. Получится смешанное состояние$$\rho=\Tr_{[km+1,\dots,km+n]}\Bigl(U\bigl(\ket{\xi}\bra{\xi}\otimes\ket{0^n}\bra{0^n} \bigr)U^\dagger \Bigr)= M^{-k}\mkern-6mu \sum_{g,h\in\Delta:g-h\in D}\mkern-3mu \ket{g}\bra{h}.$$

    Теперь мы собираемся измерить собственные значения операторов сдвига по модулю $$M$$:$$V_j\colon \Bigl(g_1,\dots,g_j,\dots,g_k\Bigr) \,\mapsto\, \Bigl(g_1,\dots,(g_j+1)\bmod M,\dots,g_k\Bigr)$$ (меняется только $$j$$ -ая компонента). Эти операторы коммутируют, поэтому у них есть общий базис из собственных векторов, и, значит, можно определять их собственные числа одновременно. Собственные числа имеют вид $$e^{2\pi is_j/M}$$. Соответствующие собственные векторы равны$$\ket{\xi_{s_1,\dots,s_k}} \,=\, M^{-k/2} \sum_{(g_1,\dots,g_k)\in\Delta} \exp\Bigl(-2\pi i\sum_{j=1}^{k}\frac{g_js_j}{M}\Bigr) \ket{g_1,\dots,g_k}.$$

    Вероятность того, что реализуется данный набор $$s_1,\dots,s_k$$, равна$$\begin{equation*} \PP(\rho,\,\calL_{s_1,\dots,s_k}) = \bra{\xi_{s_1,\dots,s_k}}\,\rho\,\ket{\xi_{s_1,\dots,s_k}}\, =\\ =\ M^{-2k} \sum_{g,h\in\ZZ^k}\chi_D(g-h)\,\chi_\Delta(g)\chi_\Delta(h)\, \exp\Bigl(2\pi i\sum_{j=1}^{k}\frac{(g_j-h_j)s_j}{M}\Bigr), \end{equation*}$$ где $$\chi_A(\cdot)$$ обозначает характеристическую функцию множества $$A$$. Фурьеобраз от произведения равен свертке фурье-образов сомножителей. Таким образом, получаем:$$\begin{equation*} \PP(\rho,\,\calL_{s_1,\dots,s_k}) = \frac{1}{|E^*|} \sum_{(\phi_1,\dots,\phi_k)\in E^*} p_{\phi_1,\dots,\phi_k}(s_1,\dots,s_k),\\ \text{где}\quad p_{\phi_1,\dots,\phi_k}(s_1,\dots,s_k) = \prod_{j=1}^{k} \left(\frac{\sin(M\pi(s_j/M-\phi_j))}{M\sin(\pi(s_j/M-\phi_j))}\right)^2. \end{equation*}$$

    При заданных значениях $$\phi_1,\dots,\phi_k$$ функция $$p_{\phi_1,\dots,\phi_k}(s_1,\dots,s_k)$$ является вероятностным распределением, относительно которого$$\Pr\Bigl[|s_j/M-\phi_j|>\beta\Bigr] \,\le\, \frac{1}{M\beta}$$ ( $$\beta$$ — любое). Мы измеряем величины $$s_j/M$$ (как уже говорилось, измерение одной из них не меняет значения другой); при этом нас устроит точность $$\beta$$ и вероятность ошибки $$\le\slashfrac{1}{M\beta}$$. Тем самым мы получаем значения $$\phi_1,\dots,\phi_k$$ с точностью $$\delta=2\beta$$ и вероятностью ошибки $$\le\eps=\slashfrac{2}{M\beta}$$. Теперь осталось подобрать числа $$M$$ и $$\beta$$, чтобы удовлетворить неравенствам 12.3.

    Сложность алгоритма.

    Tребуется $$O(n)$$ обращений к оракулу, каждый вопрос имеет длину $$O(k(n+\log k))$$. Размер квантовой схемы оценивается как $$O(kn^3)\poly(\log k,\log n)$$.

    Замечание. Для измерения собственных чисел операторов $$V_j$$ можно воспользоваться квантовым преобразованием Фурье на группе $$\ZZ_M$$ при $$M=2^m$$ (см. задачу 8.4). Это позволяет несколько уменьшить размер схемы (на логарифмический множитель), однако приходится использовать нестандартные элементы.

    Вернуться к учебному плану