Определение квантового вычисления. Примеры
Квантовый поиск: алгоритм Гровера.
Итак, мы имеем определение квантового вычисления. Теперь можно заняться сравнением эффективности классического и квантового вычисления. Во введении упоминались три основных примера, для которых квантовое вычисление оказывается, по-видимому, эффективнее классического. Мы начнем с того из них, в котором квантовое вычисление заведомо эффективнее (хотя ускорение лишь "полиномиальное").
Дадим определение универсальной переборной задачи в классической и квантовой постановке.
Пусть имеется устройство (см. рисунок), которое по входам и
определяет значение некоторого предиката
. Нас интересует предикат
. Это похоже на определение класса NP, но сейчас нам недоступна внутренняя структура устройства, вычисляющего предикат
. В таких условиях на классическом компьютере значение предиката
нельзя вычислить быстрее, чем за
шагов, где
— количество битов в записи
.
Оказывается, что на квантовом компьютере можно вычислить значение предиката и даже найти
, на котором выполнено
, за время
. Получены также и нижние оценки, показывающие, что в этой постановке квантовые устройства дают лишь полиномиальное ускорение по сравнению с классическими.
В квантовой постановке задача выглядит так. Вход по-прежнему классический, но сам "черный ящик" — квантовое устройство, и вход
(варианты ответа) мы будем считать квантовым. Поэтому наш оракул (или "черный ящик") задает оператор
, действующий по правилу

Нужно вычислить значение и найти "ответ"
(при котором выполнен
).
Результаты, о которых уже упоминалось, формулируются так (см.[31, 48]): существуют две константы и
такие, что есть схема размера
, решающая задачу для любого предиката
; а для любой схемы размера
существует предикат
, при котором задача не решается на этой схеме (т.е. схема дает неправильный ответ с вероятностью
).
Мы разберем упрощенную постановку: считаем, что "ответ" существует и единствен, обозначим его через ; нужно найти
. Схема, которую мы для этого построим, будет примером "прямого" квантового вычисления; она будет описана в терминах преобразований базисных векторов.
Рассмотрим два оператора:

и

Оператор в матричной форме может быть записан так (напомним, что
):

Оператор нам задан (это оракул). Построим квантовую схему, вычисляющую
. Действовать будем так: переведем
в
некоторым оператором
, затем применим оператор
, после чего применим
.
Построить оператор , который переводит
в
, просто. Это
, где оператор
— из стандартного базиса (см.
"Базисы для квантовых схем"
). Действительно,
.
Теперь построим реализацию оператора . Используем обратимую классическую схему, реализующую оператор
,




Схема, реализующая оператор , изображена на рис. рис. 8.1.. Центральная часть, включающая в себя
,
и
, реализует оператор
. В схеме используется оператор
(
из стандартного базиса).
Заметим, что и
действуют тождественно на векторах с нулевыми значениями q-битов, взятых напрокат. Поэтому решающую роль играет оператор
, действующий на вспомогательный q-бит, который также не меняется после всего вычисления.
Пусть вас не смущает то, что действует только на "управляемый" q-бит, а меняется в результате весь вектор. Вообще, различие между "чтением" и "записью" в квантовом случае неабсолютно и зависит от выбора базиса. Приведем соответствующий пример.
Напишем матрицу в базисе
для каждого из q-бит. Другими словами, запишем матрицу для оператора
. Схема для этого оператора изображена на рис. рис. 8.2. Используя равенство
, найдем действие
на базисном векторе:


Задача 8.2. Что будет, если изменить базис только в одном бите? Например, как будет выглядеть матрица оператора, схема которого изображена на рисунке? Попробуйте также поменять базис в другом бите.
Вернемся к построению схемы для универсальной переборной задачи. Оракул нам задан, и мы реализовали оператор
. Из вектора
можно получить вектор
применением оператора
(
). Теперь с помощью операторов
и
построим из вектора
искомый вектор
. Для этого будем поочередно действовать операторами
:





Композиция двух отражений относительно двух прямых есть поворот на удвоенный угол между этими прямыми. Угол легко вычислить, , т.е. эти прямые почти перпендикулярны. Поэтому можно написать
, где
— поворот на малый угол
. Но тогда
, где
— поворот на угол
. Знак нас не интересует (фазовые множители не меняют вероятностей). При больших
имеем
. Тогда после
итераций исходный вектор повернется на угол
и станет близок к искомому вектору. Это и означает, что система окажется в состоянии
с вероятностью, близкой к единице.
Если решается переборная задача в общей постановке (т.е. ответов может быть несколько, а может не быть вообще), требуются дополнительные технические ухищрения. Число шагов для поворота от исходного вектора к какому-нибудь вектору из подпространства, порожденного векторами ответов, обратно пропорционально корню из числа решений.