Быстрые квантовые алгоритмы
Построение измеряющего оператора.
Теперь будем строить оператор, измеряющий собственные числа . Как уже было сказано, можно ограничиться изучением действия этого оператора на вход
. Построение разделяется на три этапа.
- Ищем информацию о
, где
. - Локализуем значение
с небольшой точностью. Самое время подчеркнуть, что во всех приводимых рассуждениях есть два параметра: вероятность ошибки
и точность
. Мы получаем некоторое число
как результат измерения, при этом должно выполняться условие
. Пока нас устроит небольшая точность, скажем,
- Далее нужно увеличить точность. Необходимо уметь отличать друг от друга числа вида
, где
. Заметим, что если
, то
. Поэтому, зная значение
с точностью
, мы можем определить его абсолютно точно (в виде несократимой дроби). Чтобы сделать это эффективно (за полиномиальное время), можно использовать алгоритм цепных дробей.
Как получать информацию о собственном числе.
В
"Измеряющие операторы"
был введен оператор , измеряющий собственные числа. В нашем случае
, поэтому можно записать этот оператор в виде
![\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},](/sites/default/files/tex_cache/21ff251836d42763af17316005855256.png)
![\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},](/sites/default/files/tex_cache/b31d3e4fbd696be97856b85b90c79b8b.png)
![\PP(0\big| k)=\left|\frac{1+e^{2\pi\ii\ph_k}}{2}\right|^2 =\frac{1+\cos(2\pi\ph_k)}{2}.](/sites/default/files/tex_cache/3c43f2e184c2a599a79b6d084da6254b.png)
Нам потребуется еще оператор . Его также нетрудно реализовать. Реализация, изображенная на рисунке, использует оператор
из стандартного базиса. Обведенный фрагмент реализует оператор
. Действительно,
умножает на
только
, но как раз в этом случае применяется оператор
(по определению оператора
). Для оператора
условные вероятности равны
![\PP(0\big| k)=\frac{1-\sin(2\pi\ph_k)}{2}.](/sites/default/files/tex_cache/c47a691bf4a833aec37541b56f312935.png)
Сложность реализации операторов и
зависит от сложности реализации оператора
, которая ненамного выше сложности реализации оператора
(см. задачу 12.2).
Оценка условных вероятностей.
Мы будем локализовывать значение , оценивая условные вероятности, приведенные выше. Для получения такой оценки будем применять операторы
и
к различным "приборам" (дополнительным q-битам). Рассуждения одинаковы для обоих операторов, поэтому ограничимся случаем
.
У нас есть квантовый регистр , в котором находится
. (На самом деле там вначале был
![\ket1=\frac{1}{\sqrt{t}}\sum_{k=0}^{t-1}\ket{\xi_k},](/sites/default/files/tex_cache/5ca06a5d334c5e2dcc82560b402d9e98.png)
![\ket{\xi_{a,k}}](/sites/default/files/tex_cache/9238c3a3c27f304c08e0fc1b48b5aeaf.png)
![s](/sites/default/files/tex_cache/03c7c0ace395d80182db07ae2c30f034.png)
![\Xi(U_a)](/sites/default/files/tex_cache/82d843acb5b2d8d370c38e64839e2b95.png)
Как было доказано в "Измеряющие операторы" , условные вероятности в таком случае перемножаются. Для оператора
![\prod\limits_{r=1}^s \Xi(U_a)[r,A]](/sites/default/files/tex_cache/58682576919d4b606ee3f6e0c44dddf5.png)
![\PP(y_1,\dots, y_s\big| k)=\prod\limits_{r=1}^{s} \PP(y_r\big| k)](/sites/default/files/tex_cache/bfaf3c3f26c2ce978eaaa5da49bfc43c.png)
![y_r](/sites/default/files/tex_cache/83367bb9cf1ffdce1cf26df1eb11bf07.png)
![r](/sites/default/files/tex_cache/4b43b0aee35624cd95b910189b3dc231.png)
Далее с битами, в которых записаны результаты "экспериментов", будут уже производиться классические действия. Поскольку условные вероятности перемножаются, можно считать, что мы оцениваем вероятность выпадения 1 в серии испытаний Бернулли.
Если монета брошена раз, то доля выпавших единиц
примерно равна
. С какой точностью верна такая оценка? Из теории вероятностей известно, что
![\Prob\left[\left|\frac{\sum\nolimits_{r=1}^{s}y_r}{s}-\PP(1\big|k)\right| >\delta\right]<2e^{-c\delta^{2}s},](/sites/default/files/tex_cache/12136d3feb30efbf5dbb82aeee0c0592.png)
![c>0](/sites/default/files/tex_cache/96df96dd95bbf61a8224853c7a06c48c.png)
![\delta](/sites/default/files/tex_cache/77a3b715842b45e440a5bee15357ad29.png)
![\eps](/sites/default/files/tex_cache/5f95df289e289c8885b4961e68a2d5a2.png)
![O(\log(1/\eps))](/sites/default/files/tex_cache/d0fe227487c6bc0abdd0abface0dd7da.png)
Итак, мы научились находить с некоторой точностью синус и косинус от
. Теперь подберем
таким, чтобы значение
можно было установить по значениям синуса и косинуса с точностью
. На этом второй этап завершен.