Управляемая перестановка двух кубитов
Вход — три кубита в произвольном состоянии, хранящиеся в массиве длины 3:
$$\begin{aligned} |\psi\rangle={}&\alpha|000\rangle+\beta|001\rangle+\gamma|010\rangle\\ &+\delta|011\rangle+\epsilon|100\rangle+\zeta|101\rangle\\ &+\eta|110\rangle+\theta|111\rangle. \end{aligned}$$
Напишите операцию на языке Q#, переставляющую второй и третий кубиты тогда и только тогда, когда первый находится в $|1\rangle$. Требуемое состояние:
$$\begin{aligned} &\alpha|000\rangle+\beta|001\rangle+\gamma|010\rangle\\ &+\delta|011\rangle+\epsilon|100\rangle+\eta|101\rangle\\ &+\zeta|110\rangle+\theta|111\rangle. \end{aligned}$$
Заготовка Q#:
namespace Kata {
operation FredkinGate (qs : Qubit[]) : Unit is Adj + Ctl {
// Implement your solution here...
}
}Предложить решение
Войти, чтобы отправить материал.