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

Фазовый оракул для отрицания бита

Вход — кубит в произвольном состоянии $|\psi\rangle=\alpha|0\rangle+\beta|1\rangle$.

Напишите операцию на языке Q#, реализующую фазовый оракул функции $f(x)=1-x$: для каждого базисного состояния она должна действовать как

$$U_f|x\rangle=(-1)^{f(x)}|x\rangle.$$

То есть состоянию $|0\rangle$ требуется фаза $-1$, а $|1\rangle$ — фаза $+1$.

Подсказка источника: $(-1)^{1-x}=(-1)(-1)^x$. Можно ли получить такое действие последовательным применением оракулов постоянной функции $f=1$ и функции $f(x)=x$?

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

namespace Kata {
    import Std.Math.*;

    operation PhaseOracle_OneMinusX (x : Qubit) : Unit is Adj + Ctl {
        // Implement your solution here...

    }
}

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

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