叠加与干涉 · 两次 H 门为什么不是「更随机」

连按两次 H 门,结果不是「随机的平方」,而是确定地回到 0——这是量子计算最核心的现象:干涉。这一章用代码做出这个惊人实验,一步步算清振幅怎么相消相长,讲透「相位为什么是量子威力的来源」。

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

叠加与干涉 · 两次 H 门为什么不是「更随机」

上一章埋了个雷:那个单独测不出来的相位(负号),才是量子计算的魔法所在。这一章我们把它引爆——用一个会颠覆直觉的小实验。

一个反直觉的实验

H 门把 ∣0⟩\ket{0} 变成五五开的叠加。那连按两次 H 门呢?按经典直觉——「随机 + 再随机 = 更随机」——你大概会猜还是五五开。跑跑看:

from qiskit import QuantumCircuit, transpile
from qiskit_aer import AerSimulator

qc = QuantumCircuit(1, 1)
qc.h(0)
qc.h(0)          # 再来一个 H
qc.measure(0, 0)

sim = AerSimulator()
print(sim.run(transpile(qc, sim), shots=1000).result().get_counts())
{'0': 1000}

永远是 0! 不是五五开,而是 100% 确定地回到 ∣0⟩\ket{0}。两个「制造随机」的门叠一起,结果完全不随机。这在经典世界里是不可能的——两次抛硬币,不会让结果变确定。到底发生了什么?

一步步算:振幅相消相长

秘密在于量子叠加不是「概率的混合」,而是「振幅的叠加」,而振幅带正负号,会互相抵消。把两次 H 一步步算清楚:

第一个 H,∣0⟩→∣+⟩\ket{0} \to \ket{+}:

H∣0⟩=12∣0⟩+12∣1⟩H\ket{0} = \tfrac{1}{\sqrt{2}}\ket{0} + \tfrac{1}{\sqrt{2}}\ket{1}

第二个 H,分别作用在 ∣0⟩\ket{0} 和 ∣1⟩\ket{1} 上(记住 H∣1⟩=12∣0⟩−12∣1⟩H\ket{1} = \tfrac{1}{\sqrt{2}}\ket{0} - \tfrac{1}{\sqrt{2}}\ket{1},带负号):

H∣+⟩=12H∣0⟩⏟12(∣0⟩+∣1⟩)+12H∣1⟩⏟12(∣0⟩−∣1⟩)=12[(∣0⟩+∣1⟩)+(∣0⟩−∣1⟩)]H\ket{+} = \tfrac{1}{\sqrt{2}}\underbrace{H\ket{0}}_{\frac{1}{\sqrt2}(\ket0+\ket1)} + \tfrac{1}{\sqrt{2}}\underbrace{H\ket{1}}_{\frac{1}{\sqrt2}(\ket0-\ket1)} = \tfrac{1}{2}\big[(\ket{0}+\ket{1}) + (\ket{0}-\ket{1})\big]

现在看 ∣1⟩\ket{1} 的振幅:一个 +12+\tfrac{1}{2},一个 −12-\tfrac{1}{2},加起来正好为零——它们相消了(destructive interference)。而 ∣0⟩\ket{0} 的振幅:+12+\tfrac{1}{2} 加 +12+\tfrac{1}{2} 等于 11,相长了(constructive interference)。结果:

H∣+⟩=∣0⟩H\ket{+} = \ket{0}

这就是干涉(interference),量子计算的心脏。 通往 ∣1⟩\ket{1} 的两条「路径」,一条振幅为正、一条为负,狭路相逢、正负抵消,于是 ∣1⟩\ket{1} 这个结果永远不会出现。就像水波:波峰遇波谷,归于平静。如果没有那个负号(相位),两条路径就不会相消,你也永远造不出「确定回到 0」这种效果。 上一章反复强调「相位单独测不出、却主宰全局」,这里你亲眼看到了:相位通过干涉,变成了可观测的、确定的结果。

再来一个:让相位「现形」

既然相位藏在振幅里、干涉能把它逼出来,我们可以设计一个实验,让 ZZ 门那个「看不见的负号」变成一个看得见的比特翻转。做法:HH,然后 ZZ,再 HH(即 HZHHZH):

qc = QuantumCircuit(1, 1)
qc.h(0)          # |0⟩ → |+⟩
qc.z(0)          # |+⟩ → |−⟩   (只是加了个负号,单独测不出)
qc.h(0)          # |−⟩ → |1⟩   (干涉把负号变成了翻转!)
qc.measure(0, 0)
# → {'1': 1000}   确定得到 1!

单看中间那步,ZZ 只是给叠加态加了个测不出的负号(∣+⟩→∣−⟩\ket{+}\to\ket{-})。可两边夹上 HH 之后,这个负号通过干涉,让最终结果从「确定的 0」翻成了「确定的 1」。数学上正是 HZH=XHZH = X——一个相位门,被干涉「翻译」成了一个比特翻转。 相位不是摆设,它能实打实地改变你测到的东西。

这才是量子算法的套路

量子算法的本质,不是「同时算出所有答案」,而是「用干涉安排振幅」。 一个量子算法通常这么设计:① 用 H 门把 qubit 铺成一个覆盖所有可能输入的巨大叠加;② 用一系列门(尤其是往「正确答案」上巧妙地加相位),让错误答案的振幅相消、正确答案的振幅相长;③ 最后测量,于是大概率测到正确答案。

「相消错误、相长正确」——这就是 Grover、Shor 等所有量子加速算法的共同灵魂。你在这个「两次 H」的小实验里已经见到了它的全部内核,只是后面的算法把它玩到了极致。

小结与下一章

两次 H 门确定地回到 0,揭穿了「叠加 = 概率混合」的误解:叠加是带正负号的振幅的叠加,会干涉——相消或相长。HZH=XHZH=X 更说明相位能被干涉「翻译」成可观测的翻转。相消错误、相长正确,是一切量子算法的套路。

单个 qubit 的把戏玩得差不多了。真正的算力,要多个 qubit 协同才谈得上。下一章进入多比特世界:两个 qubit 的状态空间怎么用张量积拼出来,以及 Qiskit 那个让无数人栽跟头的 qubit 排序。👉 多比特与张量积:两个 qubit 的状态空间。

参考文献

  • [1] Michael Nielsen.「Quantum Computing for the Very Curious.」https://quantum.country/qcvc —— 干涉与振幅的一流直觉讲解。
  • [2] Qiskit 官方文档.「Hadamard and interference.」https://learning.quantum.ibm.com —— H 门与干涉实验。
  • [3] Nielsen & Chuang.《Quantum Computation and Quantum Information》, §1.4 —— 干涉在算法中的角色。

本页目录