Различить две трёхкубитные суперпозиции с комплексными фазами
Три кубита в массиве находятся в одном из двух ортогональных состояний:
$$|S_0\rangle=(|100\rangle+\omega|010\rangle+\omega^2|001\rangle)/\sqrt3,$$
$$|S_1\rangle=(|100\rangle+\omega^2|010\rangle+\omega|001\rangle)/\sqrt3,$$
где $\omega=e^{2\pi i/3}$. Напишите операцию на языке Q#, возвращающую 0 для $S_0$ и 1 для $S_1$. Заготовка содержит обратимую операцию приготовления W на произвольном числе кубитов.
Конечное состояние кубитов неважно.
Заготовка Q#:
namespace Kata {
import Std.Convert.*;
import Std.Math.*;
import Std.Measurement.*;
operation ThreeQubitMeasurement(qs : Qubit[]) : Int {
// Implement your solution here...
return -1;
}
// You might find this helper operation from the task
// "W State on Arbitrary Number of Qubits" from the "Preparing Quantum States" kata useful.
operation WState_Arbitrary(qs : Qubit[]) : Unit is Adj + Ctl {
let N = Length(qs);
if N == 1 {
X(qs[0]);
} else {
let theta = ArcSin(1.0 / Sqrt(IntAsDouble(N)));
Ry(2.0 * theta, qs[0]);
X(qs[0]);
Controlled WState_Arbitrary(qs[0..0], qs[1..N - 1]);
X(qs[0]);
}
}
}Сообщить об ошибке
Войти, чтобы отправить материал.