叠加与干涉 · 两次 H 门为什么不是「更随机」
连按两次 H 门,结果不是「随机的平方」,而是确定地回到 0——这是量子计算最核心的现象:干涉。这一章用代码做出这个惊人实验,一步步算清振幅怎么相消相长,讲透「相位为什么是量子威力的来源」。
叠加与干涉 · 两次 H 门为什么不是「更随机」
上一章埋了个雷:那个单独测不出来的相位(负号),才是量子计算的魔法所在。这一章我们把它引爆——用一个会颠覆直觉的小实验。
一个反直觉的实验
H 门把 变成五五开的叠加。那连按两次 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% 确定地回到 。两个「制造随机」的门叠一起,结果完全不随机。这在经典世界里是不可能的——两次抛硬币,不会让结果变确定。到底发生了什么?
一步步算:振幅相消相长
秘密在于量子叠加不是「概率的混合」,而是「振幅的叠加」,而振幅带正负号,会互相抵消。把两次 H 一步步算清楚:
第一个 H,:
第二个 H,分别作用在 和 上(记住 ,带负号):
现在看 的振幅:一个 ,一个 ,加起来正好为零——它们相消了(destructive interference)。而 的振幅: 加 等于 ,相长了(constructive interference)。结果:
这就是干涉(interference),量子计算的心脏。 通往 的两条「路径」,一条振幅为正、一条为负,狭路相逢、正负抵消,于是 这个结果永远不会出现。就像水波:波峰遇波谷,归于平静。如果没有那个负号(相位),两条路径就不会相消,你也永远造不出「确定回到 0」这种效果。 上一章反复强调「相位单独测不出、却主宰全局」,这里你亲眼看到了:相位通过干涉,变成了可观测的、确定的结果。
再来一个:让相位「现形」
既然相位藏在振幅里、干涉能把它逼出来,我们可以设计一个实验,让 门那个「看不见的负号」变成一个看得见的比特翻转。做法:,然后 ,再 (即 ):
qc = QuantumCircuit(1, 1)
qc.h(0) # |0⟩ → |+⟩
qc.z(0) # |+⟩ → |−⟩ (只是加了个负号,单独测不出)
qc.h(0) # |−⟩ → |1⟩ (干涉把负号变成了翻转!)
qc.measure(0, 0)
# → {'1': 1000} 确定得到 1!单看中间那步, 只是给叠加态加了个测不出的负号()。可两边夹上 之后,这个负号通过干涉,让最终结果从「确定的 0」翻成了「确定的 1」。数学上正是 ——一个相位门,被干涉「翻译」成了一个比特翻转。 相位不是摆设,它能实打实地改变你测到的东西。
这才是量子算法的套路
小结与下一章
两次 H 门确定地回到 0,揭穿了「叠加 = 概率混合」的误解:叠加是带正负号的振幅的叠加,会干涉——相消或相长。 更说明相位能被干涉「翻译」成可观测的翻转。相消错误、相长正确,是一切量子算法的套路。
单个 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 —— 干涉在算法中的角色。