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

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

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

Единственное нетривиальное использование квантовых свойств для вычислений, которое мы уже рассмотрели, — это решение универсальной переборной задачи алгоритмом Гровера, изложенным в лекции 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). Это позволяет несколько уменьшить размер схемы (на логарифмический множитель), однако приходится использовать нестандартные элементы.

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