测量 · 为什么一测,叠加就没了

测量是量子计算里最诡异也最核心的操作:它把叠加态「拍」成一个确定的 0 或 1,概率由振幅的模平方决定,且不可逆。这一章用代码演示坍缩——包括「测两次结果必相同」的铁证——并讲清为什么量子程序必须靠采样统计。

作者 David更新于 第 3 篇(共 15 篇)

测量 · 为什么一测,叠加就没了

上一章我们偷看了 qubit 的状态向量 [0.707, 0.707]。但那是模拟器给的「上帝视角」——真实的量子计算机做不到。在真机上,你想从 qubit 里拿到信息,只有一条路:测量。而测量,是量子世界里最反直觉的一步。

测量做了什么:坍缩

一个处于叠加态 ∣ψ⟩=α∣0⟩+β∣1⟩\ket{\psi} = \alpha\ket{0} + \beta\ket{1} 的 qubit,你去测量它:

  • 你得到 0,概率是 ∣α∣2|\alpha|^2;或者得到 1,概率是 ∣β∣2|\beta|^2。(这条规则叫 Born 定则。)
  • 关键:测量之后,qubit 的状态立刻坍缩成你测到的那个——测到 0,它就变成了 ∣0⟩\ket{0};测到 1,就变成 ∣1⟩\ket{1}。那个精妙的叠加,一测就没了,而且回不去。

你永远无法直接「读出」振幅 α\alpha、β\beta。 测量只吐给你一个 0 或一个 1,并且顺手把叠加态毁掉。所以上一章 Statevector 打印出的完整状态,是模拟器的特权(它知道全部内幕);真机上你拿不到——这也是为什么量子程序主要在模拟器上调试(调试那章 的核心)。这一条也解释了上一章的悬念:为什么不能「同时读出 2n2^n 个答案」——因为一次测量只塌缩出一个结果,别的全没了。

用代码看坍缩:测两次,结果必相同

坍缩听着玄,但能用代码给出铁证。给一个叠加态的 qubit 连测两次,看会怎样:

from qiskit import QuantumCircuit, transpile
from qiskit_aer import AerSimulator

qc = QuantumCircuit(1, 2)
qc.h(0)              # 叠加
qc.measure(0, 0)     # 第一次测量 → 坍缩
qc.measure(0, 1)     # 第二次测量 → 此时它已经是确定值了

sim = AerSimulator()
print(sim.run(transpile(qc, sim), shots=1000).result().get_counts())
{'00': 501, '11': 499}

注意:只有 00 和 11,从不出现 01 或 10。 也就是说,两次测量的结果永远一致。第一次测量把叠加态坍缩成了 ∣0⟩\ket{0} 或 ∣1⟩\ket{1},第二次再测,它已经是个确定值了,当然给出同样的结果。这就是坍缩的直接证据——叠加是「一次性」的,测一下就定死了。

作为对照,一个确定态测多次毫无悬念:

qc = QuantumCircuit(1, 1)   # 什么门都不加,qubit 就是 |0⟩
qc.measure(0, 0)
# → {'0': 1000}   永远是 0,没有随机性

所以:量子编程 = 概率实验 + 采样

坍缩带来一个深刻的工程后果,也是量子编程和经典编程最大的体感差异:

你运行一次量子程序,只能得到一个样本,而不是一个确定答案。 想知道「这个量子态的测量分布长什么样」,唯一办法是把整个程序重复运行很多次(shots),每次都从头制备、再测量一次,然后统计频率。这就是为什么 Hello Quantum 要 shots=1000——跑一次只会得到一个 0 或 1,看不出「五五开」;跑一千次统计,分布才浮现。

注意是「从头制备再测」,不是「测一个 qubit 一千次」——后者因为坍缩,只会得到同一个值一千遍(如上面的演示)。每个 shot 都是一次独立的「制备 → 测量」实验。量子算法的输出,本质是一个概率分布,你要靠采样去估计它。

测量的「方向」:基

还有一层常被忽略:上面都是在所谓的计算基(computational basis,也叫 Z 基) 下测量——问的是「你是 ∣0⟩\ket{0} 还是 ∣1⟩\ket{1}」。但你也可以换个「方向」问,比如在 X 基下测量——问「你是 ∣+⟩\ket{+} 还是 ∣−⟩\ket{-}」。同一个量子态,在不同的基下测,分布不同。

实践中,换基测量是通过「测量前先加一个门把要测的基旋转到计算基」实现的(比如测 X 基,就先加个 H 门再测)。这个技巧在很多算法里是关键一步,现在先知道「测量是有方向的」即可,用到时再展开。

小结与下一章

测量把叠加态按 Born 定则(P=∣振幅∣2P = |\text{振幅}|^2)坍缩成一个确定的 0 或 1,不可逆、且毁掉叠加;我们用「测两次结果必相同」的代码给了坍缩铁证。因此量子程序是概率实验:靠多次「制备 → 测量」采样,才能还原输出分布。测量还有「基」的方向之分。

到这里,起步三章(环境、qubit、测量)搭好了地基:你会跑程序、能看状态、懂测量。第二站开始,我们系统地认识操作 qubit 的积木——量子门:X、H、Z 各自把状态怎么变,背后又是什么矩阵。👉 单比特门:X、H、Z 与它们的矩阵。

参考文献

  • [1] Qiskit 官方文档.「Measure qubits.」https://docs.quantum.ibm.com/guides —— 测量与 shots。
  • [2] Scott Aaronson.「Quantum Computing Since Democritus」/ 讲义 —— 测量与 Born 定则的直觉。
  • [3] Nielsen & Chuang.《Quantum Computation and Quantum Information》, §2.2 —— 测量公设与基。

本页目录