Найти скрытую строку алгоритмом Бернштейна — Вазирани
Входы — число разрядов $N$, где $1\le N\le3$, и неизвестный фазовый оракул, принимающий массив кубитов:
$$U_f|x\rangle=(-1)^{f(x)}|x\rangle.$$
Гарантируется $f(x)=x\cdot s=\bigoplus_{k=0}^{N-1}x_ks_k$ для некоторой неизвестной битовой строки $s$ длины $N$. Здесь произведения и сумма вычисляются по модулю 2.
Напишите операцию на языке Q#, возвращающую $s$ как массив целых битов 0 и 1 в порядке входного массива кубитов. Разрешён только один вызов оракула.
Заготовка Q#:
namespace Kata {
operation BernsteinVaziraniAlgorithm (N : Int, oracle : Qubit[] => Unit) : Int[] {
// Create a mutable array variable for storing the return value.
mutable s = [];
// Implement your solution here...
return s;
}
}Сообщить об ошибке
Войти, чтобы отправить материал.