JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

打造一个量子比特

在量子计算机能做任何事情之前,你需要一个真实的、物理的量子比特——一个你能够制备、控制并读出的东西。本指南先讲清楚什么样的量子比特才算好,然后介绍人们实际用来打造它的三种主流方式:超导电路(transmon)、离子阱以及光子。目前还没有哪一种方案胜出;每一种都要付出某些代价,而且它们全都仍处在嘈杂的 NISQ 时代。

什么样的量子比特才算好

到现在为止,你已经从抽象层面了解了量子比特:一个两能级量子系统,其状态为 |psi> = alpha|0> + beta|1>,且 |alpha|^2 + |beta|^2 = 1。这是数学。而硬件的问题则赤裸裸地具体——到底有什么真实的物理东西,能让你拿一根导线或一束激光指着它,它就照那样运转?你需要一个具备两个干净能级的系统,把它们叫做 |0> 和 |1>,你能把它放进二者的叠加态,并且在最后能够读出它。

事实证明,大自然中到处都是两能级系统,但它们几乎全都无法用于计算,因为它们都不满足四项要求中的某一项。一个好的量子比特必须是可控的(你能按需施加量子门)、可测量的(你能在最后通过玻恩定则读出 0 或 1)、可连接的(它能与其他量子比特相互作用,从而产生纠缠和双量子比特门),以及——最难的那一项——可隔离的。让你能控制量子比特的那种耦合,同样也让环境得以扰动它,而任何无意的轻微推动都会引发退相干,在你的计算完成之前悄悄地把状态搅乱。

超导量子比特

第一种方法是用电路来打造一个人造原子,而不是去借用一个真实的原子。超导量子比特是一段刻蚀在芯片上的微小电路,很像一块普通的微芯片,只不过被冷却到绝对零度以上几千分之一度(几个毫开尔文)。在那个温度下,金属会变成超导态——电流以零电阻流动——整个电路便能像一个单一的量子对象那样运转。

不过,一段普通的电路有着*均匀间隔*的能级,就像一架横档完全相同的梯子。这就成了问题:如果你从 |0> 到 |1> 的台阶与从 |1> 到 |2> 的台阶一样大,那么任何本想翻转量子比特的脉冲都会一并把它踢上能级 2 乃至更高,它就不再是一个干净的两能级系统了。解决办法是一个叫做 Josephson 结的特殊元件,它让横档变得参差不齐。如今最低的两个能级与其余能级的间隔不同了,于是你就能把它们单独挑出来作为 |0> 和 |1>,而不去碰那些更高的能级。

Transmon

早期的超导量子比特有一个致命的弱点:它们对电荷噪声敏感得令人头痛。在芯片附近游荡的杂散电荷会扰动能级,几乎立刻就把信息搅乱,使你的相干时间短得根本无法用来计算。transmon正是修正这一缺陷的设计,如今它已是迄今为止最常见的一类超导量子比特——当人们说“IBM 和 Google 的量子比特”时,几乎总是指 transmon。

transmon 的窍门说起来很简单:在电路上跨接一个相对较大的电容。这能把量子比特的能量对杂散电荷的依赖程度抹平,抹平到电荷噪声几乎不再要紧的地步。这正是 transmon 能把状态保持得足够久、足以派上用场的主要原因。这里的取舍很坦诚,也值得点明:更大的电容也会让能级重新变得*更加*均匀间隔(非谐性更弱),于是 |0> 和 |1> 在间隔上离那些不想要的更高能级更近了。工程师们靠精心整形的微波脉冲来应对这一点,这些脉冲会把量子比特在 |0> 和 |1> 之间推来推去,却不会把它泄漏到能级 2 上去。

离子阱

与之相反的理念是:不再去打造人造原子,干脆就用一个真实的离子阱量子比特把信息存储在一个带电的单原子(离子)内部,靠精心整形的电场和磁场让它在真空中近乎完美地静止——就像一颗弹珠落进一只看不见的碗底。这个原子有内部能级;你从中挑两个作为 |0> 和 |1>。你用精确调谐的激光来写入和读出:一束激光让量子比特在它的两个能级之间翻转,另一束则让原子在某个状态下发光、在另一个状态下保持暗着,于是一台相机就能分辨它处于哪个状态。

由于某种元素的每一个原子都是*天然全同*的,而且离子悬浮在远离任何表面的地方,离子阱的隔离性极好。相比超导芯片,这换来了两个实实在在的优势:长得多的相干时间和非常高的门保真度——操作的结果与你的意图非常接近,错误极少。同一个阱中的离子还能通过它们共享的振动与许多伙伴相互作用,这让双量子比特门变得灵活。

光子量子比特

第三条路线把量子比特编码在单个光粒子——光子——之中。光子量子比特利用一个光子的某个非此即彼的自由度,比如它的偏振(竖直对水平)或者它走两条路径中的哪一条。最大的吸引力在于:光子几乎不与周围环境相互作用,所以它们能很好地保持状态,而且不需要稀释制冷机——许多光子系统在室温下就能运行。而且既然光本来就在光纤和自由空间中传播,光子便是在机器之间发送量子信息的天然载体,这使它们非常适合通信、组网以及量子密钥分发

但让光子如此易于隔离的那种“漠不关心”,同样也是它们的诅咒。两个光子通常会径直穿过彼此而毫无察觉,所以要构建一个双量子比特门——其中一个量子比特必须有条件地影响另一个——是真真切切地难。常见的变通做法依赖于测量和额外的“辅助”光子,而且只在一部分时候才成功,因此需要巧妙的方案才能变得可靠。出色的信使,蹩脚的处理器。

# A 'qubit' in software is platform-agnostic: the same Qiskit
# circuit can target a transmon, an ion, or a photonic backend.
# The hardware differs; the logical description does not.
from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2)
qc.h(0)            # put qubit 0 into a superposition (a Hadamard gate)
qc.cx(0, 1)        # entangle qubit 1 with qubit 0 (a CNOT)
qc.measure([0, 1], [0, 1])  # read out -> one outcome, by the Born rule
print(qc)

#       ┌───┐     ┌─┐
# q_0: ─┤ H ├──■──┤M├───
#       └───┘┌─┴─┐└╥┘┌─┐
# q_1: ──────┤ X ├─╫─┤M├
#            └───┘ ║ └╥┘
# c: 2/════════════╩══╩═
#                  0  1
你写的代码在哪里看上去都一样;编译器会把 H 和 CNOT 这样的门映射到每个平台各自真实的操作上(对 transmon 是微波脉冲,对离子是激光脉冲)。还要记住:这个电路并不是“一次性把所有答案都试一遍”——它构建的是一个特定的纠缠态,而每一次运行恰好给出一个测得的结果。