在执行测量后,Q# 是否保持量子位的状态?

Does Q# maintain the state of a qubit, after performing the measurement?

这是 Microsoft 的 Quantum Katas 练习中的一个问题。

// Input: Two qubits (stored in an array) which are guaranteed to be
//        either in superposition of states |00⟩ and |11⟩
//        or in superposition of states |01⟩ and |10⟩.
// Output: 0 if qubits were in the first superposition,
//         1 if they were in the second superposition.
// The state of the qubits at the end of the operation should be the same as the starting state

参考实现中给出的解决方案如下:

operation ParityMeasurement_Reference (qs : Qubit[]) : Int {
    return Measure([PauliZ, PauliZ], qs) == Zero ? 0 | 1;
}

如果进行测量操作,如何保留量子比特的状态?或者,Measure() 函数的工作方式不同吗?

让我们从一个更简单的场景开始:在计算基础上测量一个量子比特。一般来说,它的状态会从 α|0⟩ + β|1⟩ 变为 |0⟩ 或 |1⟩,这取决于测量的结果。但是,如果量子位已经处于 |0⟩ 状态(或 |1⟩ - 两者都是被测量的可观察对象的本征态),则测量不会改变其状态。

一般情况下,投影测量将系统的状态投影到可观测的特征空间上,其特征值对应于测量结果。如果量子比特已经处于本征态,则测量结果是确定的,投影不会修改状态。

现在,回到最初的任务。给定两个处于 α|00⟩ + β|11⟩ 状态或 α|01⟩ + β|10⟩ 状态的量子位。

如果您在计算基础上将测量限制为单量子位测量(在 Q# 中实现为 M 操作),您仍然可以区分状态,但它们会发生变化,在 |00⟩/|11⟩ 或崩溃在 |01⟩/|10⟩ 状态下,取决于测量结果,- 您可以在 Measurements kata 的上一个任务中检查这一点。为了能够在不改变状态的情况下区分状态,您需要找出一个将这两个状态作为具有不同特征值的特征态的可观察对象。

考虑一个 Z ⊗ Z 运算符(将 Z 门应用于两个量子位):α|00⟩ + β|11⟩ 是特征值为 1 的本征态,α|01⟩ + β|10⟩ 是特征值为 -1 的特征态。如果你测量这个算子,你将能够在不改变它们的情况下区分状态。这种测量称为联合测量或奇偶性测量(在 Z 基上测量多个量子比特等同于测量状态的奇偶性,偶数个 1 的状态特征值为 1,奇数个 1 的状态有-1 的特征值)。而这正是 Measure 操作执行的测量类型。

您可以在 Q# documentation 中阅读有关多量子位 Pauli 测量的更多信息。