№ 1509Квантовые вычисленияУровень 2

Найти скрытую строку алгоритмом Бернштейна — Вазирани

Входы — число разрядов $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;
    }
}

Сообщить об ошибке

Войти, чтобы отправить материал.