Быстрые квантовые алгоритмы
Экспоненциально точное определение собственных чисел.
Для увеличения точности мы будем использовать, наряду с , операторы
для всех
. Числа мы можем быстро возводить в степень, а операторы, вообще говоря, — нет. Но оператор умножения на число
обладает следующим замечательным свойством:




Вход: и
- Вычисление степеней
(
) по модулю
(классическое).
- Cоздание
штук квантовых регистров, содержащих базисное состояние
.
- Вычисление наибольшего общего знаменателя (классическое).
Ответ: (с вероятностью ошибки
, где
)
Вернемся к схеме упоминаемой ранее. Мы находили собственное число для некоторого собственного вектора
. Этот же вектор останется собственным и для любой степени оператора
, поэтому можно на одном и том же квантовом регистре искать собственное число для
, оно равно
; для
оно равно
;...
Другими словами, мы можем с точностью определить значения
по модулю 1. Но это позволяет определить
с точностью
за полиномиальное время
.
Идея доказательства. Множество возможных значений удобно представлять в виде окружности единичной длины. Зная
с точностью
, мы выделяем дугу в
от всей окружности. Знание
с точностью
позволяет выделить две дуги длиной
каждая, причем только одна из них имеет непустое пересечение с предыдущей дугой.
Важные замечания.
- Существенно, что вектор
не портится во время вычислений.
- Все вычисление в целом зависит от параметров
и
. Cуммарная вероятность ошибки не превышает
, где
. Если требуется получить ответ с вероятностью ошибки
, следует положить
,
, где
— некоторая константа. При этом получается квантовая схема размера
.