Существует хорошее объяснение Крейг Gidney здесь (он также имеет другое большое содержание, в том числе схемы симулятора, на своем блоге ).
По сути, алгоритм Гровера применяется, когда у вас есть функция, которая возвращает True
один из возможных входов и False
все остальные. Задача алгоритма - найти тот, который возвращает True
.
Для этого мы выражаем входные данные как битовые строки и кодируем их, используя | 0⟩ и | 1⟩ состояния строки кубитов. Таким образом, битовая строка 0011
будет закодирована в четырехбитном состоянии | 0011⟩ , например.
Нам также нужно уметь реализовать функцию с помощью квантовых вентилей. В частности, нам нужно найти последовательность вентилей, которая будет реализовывать унитарный U такой, что
U|a⟩=−|a⟩,U|b⟩=|b⟩
aTrue
bFalse
12n√nU−12n√
D
bj
D:∑jαj|bj⟩↦∑j(2μ−αj)|bj⟩
μ=∑jαjμ+δμ−δ
−12n√
12n√
Конечно, все это говорит о том, что вся работа выполняется оператором диффузии. Поиск - это просто приложение, к которому мы можем подключиться.
См. Ответы на другие вопросы для получения подробной информации о том, как реализованы функции и оператор диффузии .