Microsoft Q#:旋转函数 R() 的问题

Microsoft Q# : problems with rotate function R()

最近在做量子计算的算法,遇到了一些问题。

由于量子位有可能被观察为 |1>|0>,旋转函数应该会改变每个量子位的状态,以便它们有更多或更少的机会在特定状态下进行测量。

在我的程序中,我将阿达玛变换应用于一个量子比特,然后将它在z轴上旋转角度θ(90°),这是为了使|0>和[=的概率相等11=] measurement 然后轮换使得状态的probs |1> 100%,但是还是不行。 |1> 的概率总是 50%,这不应该是。

这是我的代码:

operation Testing () : (Int)
{
    body
    {
        mutable result = -1;
        using (qubit = Qubit[1])
        {
            H(qubit[0]);
            R(PauliZ, PI() / -2.0, qubit[0]);

            //assertprob is a function to help test the probabilities of qubits in specific status
            AssertProb([PauliZ], qubit, One, 0.5,"Measuring in conjugate basis did not give 50/50 results.", 1e-5);
            //AssertProb([PauliZ], qubit, Zero, 0.5,"Measuring in conjugate basis did not give 50/50 results.", 1e-5);

            let value = M(qubit[0]);
            if(value == One)
            {
                set result = 1;
            } else {
                set result = 0;
            }
            ResetAll(qubit);
        }
        return result;
    }
}

来自 Microsoft Q# documentation 的照片可能有助于解释球体结构。在 Hadamard 变换之后,量子位处于状态 [1/√2,1/√2],然后 -π/2 的旋转使其状态变为 [0,1].


(来源:microsoft.com

绕 Pauli Z 轴旋转不会改变 Z 轴测量的测量概率。您可以这样想象它:

  • 您的量子比特的初始状态在 Z 轴上为 +1。
  • H 操作将其移动到 X 轴上的 +1。
  • 绕 Z 轴的任何旋转都会使量子位的状态保持在 X-Y 平面中,这同样有可能在 Z 轴上测量为 0 或 1。

A pi/2 或 3pi/2 绕 Y 轴旋转将使状态回到 Z 轴。