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

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