Отражение относительно подготовленного состояния
Входы — регистр из $N$ кубитов в произвольном состоянии и операция $P$, которая готовит состояние $|\psi\rangle$ из $|0\ldots0\rangle$.
Напишите операцию на языке Q#, отражающую состояние регистра относительно $|\psi\rangle$: реализуйте
$$2|\psi\rangle\langle\psi|-I.$$
Если в качестве $P$ использовать подготовку равномерной суперпозиции, получится отражение относительно среднего.
В заготовке приведена вспомогательная операция ConditionalPhaseFlip из предыдущего упражнения.
Заготовка Q#:
namespace Kata {
import Std.Math.*;
operation ReflectionAboutState(
qs : Qubit[],
statePrep : Qubit[] => Unit is Adj + Ctl
) : Unit is Adj + Ctl {
// Implement your solution here...
}
// You might find this helper operation from an earlier task useful.
operation ConditionalPhaseFlip(qs : Qubit[]) : Unit is Adj + Ctl {
within {
ApplyToEachA(X, qs);
} apply {
Controlled Z(qs[1...], qs[0]);
}
R(PauliI, 2.0 * PI(), qs[0]);
}
}