为什么不能简单地复制一个量子比特
经典计算机用蛮力冗余来处理错误。担心某个比特会翻转?那就存三份。如果你读到 0、0、1,就按多数表决,相信那个 0。简单、便宜,而且管用,因为复制一个经典比特是免费的,读取它也不会扰动它。
对一个 量子比特 来说,这两点都不成立。一个量子比特处于 叠加态 |psi> = alpha|0> + beta|1>,而 不可克隆定理 证明了不存在任何能复制未知量子态的操作。你根本没法做备份。而且即便你能做到,读取一个量子比特会触发 测量:叠加态坍缩为单一的 0 或 1,而那对脆弱的振幅 alpha 和 beta 也就永远消失了。
错误本身也比经典比特翻转更微妙。一个量子比特可能遭遇比特翻转(|0> 变成 |1>,和经典情形一样),但也可能遭遇相位翻转(beta 的符号翻转,这在经典里没有对应物),或者在缓慢漂移过程中遭遇这两者的任意连续混合。退相干 是这种量子信息泄漏到环境中的统称,它给你的计算何时分崩离析定下了时钟。
逻辑量子比特与物理量子比特
核心思路是不再把任何单个硬件量子比特当作你的信息单元。取而代之,你用许多不完美的物理量子比特搭出一个 [[logical-qubit|逻辑量子比特]],并借助 纠缠 把量子信息分散到它们全体之上。没有任何单个物理量子比特握有答案,所以任何单个物理量子比特出故障都没法摧毁它。
这堂堂正正地绕开了不可克隆。你并没有把态 |psi> 复制到多个地方。你是在把一个逻辑态编码进整组量子比特共享的纠缠态里,信息存活于量子比特之间的关联之中,而不在它们中的任何一个里。这是一种根本不同、并且物理上允许的操作。
回报来自 容错 与 阈值定理:如果你的物理量子比特足够好(低于某个错误率阈值),那么每个逻辑量子比特用上更多物理量子比特会让逻辑错误率下降,而不是上升。在阈值以下,更多硬件给你换来更高的可靠性。在阈值以上,更多硬件只会给噪声更多可乘之机,整个方案就会失败。
在不测量数据的情况下检测错误
这就是第二堵墙的破解之道。你从不直接测量数据量子比特。取而代之,你测量的是稳定子:一组量子比特经过精心挑选的联合性质,它揭示*是否发生了错误*,却不泄露*被编码的态是什么*。
诀窍在于宇称(奇偶性)。问“这两个量子比特相同还是不同?”,是一个你无需知道任何一个的具体取值就能回答的问题。你用 CNOT 门把数据量子比特连到一个额外的辅助(ancilla)量子比特上,让这个辅助比特拾取它们的合并宇称,然后你只测量这个辅助比特。数据依旧留在叠加态里;出来的只有那个被称为症状(syndrome)的错误信号。
from qiskit import QuantumCircuit # 2 data qubits + 1 ancilla that reads their parity qc = QuantumCircuit(3, 1) # entangle the ancilla (q2) with the parity of q0 and q1 qc.cx(0, 2) qc.cx(1, 2) # measure ONLY the ancilla -> tells us if q0,q1 differ, # without revealing either qubit's actual state qc.measure(2, 0)
还有一个微妙的额外好处:尽管量子比特的错误是连续的,测量稳定子这一动作会把它们离散化。这次测量迫使量子比特“拿定主意”,到底是被比特翻转、还是相位翻转、还是什么都没发生击中了,从而把杂乱的连续统坍缩成一个离散的错误,之后你就能用一个干净的纠正门来修复它。你一遍又一遍地测量症状,再由一个叫做解码器的经典算法推断出错误最可能在哪里。
表面码
领先的实用方案是[[surface-code|表面码]]。它的吸引力在于几何结构:它把量子比特排布在一个平坦的二维网格上,并且只测量相邻量子比特之间的稳定子。这种局域的、最近邻的结构,正好是真实的超导及类似硬件实际能连得起来的,这也是它主导当前路线图的原因。
D --- A --- D --- A --- D | | | | | A --- D --- A --- D --- A | | | | | D --- A --- D --- A --- D | | | | | A --- D --- A --- D --- A | | | | | D --- A --- D --- A --- D D = data qubit A = ancilla (stabilizer measurement)
错误表现为前后不一致的症状测量结果,而一条被翻转的量子比特链会通过点亮其两个端点处的辅助比特来宣告自己的存在。解码器读取这张跨越许多测量轮次的端点点亮图,推断出最可能的错误链并将其撤销。把网格做得更大(更大的“码距”),逻辑 保真度 就会提高,因为现在一个未被察觉的逻辑错误,需要一条更长、可能性更低的物理错误链才能蒙混过关。
开销的现实
现在讲诚实的部分。所有这些保护都极其昂贵。具体估算会随目标和硬件不同而变化,但单单一个有用且受到良好保护的逻辑量子比特,可能就要动用 1,000 个物理量子比特 这个量级,要求苛刻的应用还会把这个数字推得更高。这大约 1000:1 的开销,正是量子计算远比那些量子比特数量的头条标题所暗示的要难得多的核心原因。
这正是为什么我们把当下称为 [[nisq|NISQ]] 时代:含噪中等规模量子(Noisy Intermediate-Scale Quantum)。今天的机器有几十到几百个物理量子比特,且没有完整的纠错,所以 退相干 把它们限制在短而浅的电路上,过了这个限度噪声就会淹没答案。要运行 Shor 算法 来破解真实的加密,需要在纠错支撑下的数百万个物理量子比特,一台至今尚不存在的容错机器。
这一切都不意味着纠错正在失败。实验已经跨过了一个真正的里程碑:表明把码做得更大会让逻辑量子比特*变得更好*,阈值行为正如理论所预言的那样起作用。这是货真价实、来之不易的进展。但从“一个胜过其组成部件的逻辑量子比特”,到一个能改变世界的算法所需要的成千上万个干净的逻辑量子比特,中间还有一条漫长的工程之路,而对这道鸿沟保持诚实,正是本文的全部要点。