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

Определить тип функции алгоритмом Дойча

Вход — неизвестный фазовый оракул булевой функции $f:\{0,1\}\to\{0,1\}$. Он задан операцией oracle, принимающей один кубит и возвращающей Unit, и действует как $U_f|x\rangle=(-1)^{f(x)}|x\rangle$.

Напишите операцию на языке Q#, которая возвращает true, если функция постоянна, то есть $f(0)=f(1)$, и false, если $f(0)\ne f(1)$. Разрешён только один вызов оракула.

Заготовка Q#:

namespace Kata {
    operation DeutschAlgorithm (oracle : Qubit => Unit) : Bool {
        // Implement your solution here...

        return true;
    }
}

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

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