В «Квантовых вычислениях и квантовой информации» Майка и Айка алгоритм Гровера объясняется очень подробно. Тем не менее, в книге и во всех объяснениях, которые я нашел в Интернете для алгоритма Гровера, кажется, нет упоминания о том, как устроен Оракул Гровера, если только мы уже не знаем, какое именно состояние мы ищем, в ущерб цели алгоритм. В частности, мой вопрос заключается в следующем: учитывая некоторое f (x) такое, что для некоторого значения x f (x) = 1, но для всех остальных f (x) = 0, как можно построить оракула, который получит нас от наше начальное, произвольное состояние | x> | y> to | x> | y + f (x)>? Будем весьма благодарны как можно более подробные подробности (возможно, пример?). Если такая конструкция для любой произвольной функции возможна с Адамаром, Паули или другими стандартными квантовыми вентилями,
16
Ответы:
Оракул - это просто реализация предиката, для которого вы хотите найти удовлетворительное решение.
Например, предположим, что у вас есть проблема с 3-мя соседями:
Или, в форме таблицы, где каждая строка состоит из 3-х предложений, x означает «эта переменная false», o означает «эта переменная true», а пробел означает «не в предложении»:
Теперь создайте схему, которая вычисляет, является ли ввод решением, например:
Теперь, чтобы превратить вашу схему в оракула, нажмите выходной бит с помощью Z-шлюза и вычислите весь мусор, который вы сделали (т.е. запустите вычислительную схему в обратном порядке):
Это все, что нужно сделать. Вычислите предикат, ударьте результат Z, отмените вычисление предиката. Это оракул.
Итерируйте шаги диффузии с шагами оракула, и вы получите большой поиск :
... хотя вам, вероятно, следует выбрать пример с меньшим количеством решений, поэтому прогресс будет постепенным (вместо того, чтобы вращаться вдоль плоскости состояния начального состояния-решения более чем на 90 градусов за шаг, как в моем примере).
источник