想象你是一场大型合唱演出的导演。台上每位歌手的嗓子都可能有瑕疵,观众席还有咳嗽和音响杂音。你不可能找到一个从不失误的歌手——现实世界没有完美的人。但你可以让三个人唱同一句,出错时举手投票,少数服从多数;你还可以让歌手们站成精巧的队形,互相校准音准,把任何一个人的小失误都“淹没”在集体的和声里。这就是纠错:不是让噪声消失,而是让信息足够坚固。 量子计算机面临的问题比合唱复杂一万倍。它的基本单元——量子比特——既会“唱错词”(比特翻转),又会“跑调”(相位翻转);你还不能复制它的声音,因为一复制就破坏了原唱(不可克隆定理)。量子纠错(QEC)就是为量子合唱团设计的“容错管理学”:用多个物理比特编织成一个逻辑比特,像编麻绳一样把脆弱的信息缠紧,再用巧妙的“体温计”(稳定子测量)悄悄探出哪里出了错,最后不动声色地修复。从比特翻转码到 Shor 码,从阈值定理到表面码,这门学问正把量子计算从“偶尔算对”推向“可靠计算”。本文用合唱团比喻,带你零基础看懂量子纠错的全景。

岗位关联

掌握量子纠错,是理解容错量子计算、设计量子-经典混合系统的核心能力——也是量子算法工程师与量子硬件从业者必备的“底层共识”。

目录
  1. 可视化演示
  2. 经典纠错基础
  3. 量子纠错挑战
  4. 比特翻转码
  5. 相位翻转码
  6. Shor九比特码
  7. 错误阈值定理
  8. 表面码方案
  9. 纠错开销估算
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

展示三种核心量子纠错码:比特翻转码3比特编码、相位翻转码、Shor 9比特级联码,以及表面码阈值定理。切换模式查看各码型,拖动滑块调节错误率。

本节配有交互动效(进入视口后自动加载,约 3KB)。

比特翻转码:3比特重复编码 将1个逻辑比特编码为3个物理比特的重复态|000⟩或|111⟩ 多数表决校正单比特X错误,可纠正t=⌊(d-1)/2⌋=1个错误 |0⟩_L = |000⟩, |1⟩_L = |111⟩ 码距d=3,编码率R=1/3

经典纠错基础

合唱团演唱会现场,指挥让三位歌手同唱一句歌词。观众听到的歌声难免被噪声干扰:有人咳嗽、音响滋滋响、某个歌手的嗓子突然沙哑。如果三人里只有一人唱错,另外两人是对的,指挥只需“少数服从多数”,让唱错的人重唱一遍。这就是经典冗余编码的核心——不试图让噪声消失,而是把 1 份信息复制成 3 份,用投票把错误“否决”掉。

在计算机里,这个概念同样朴素:信道有噪声,比特可能从 0 变 1 或从 1 变 0。三比特重复码把每个逻辑比特复制成三份,接收端按多数表决还原。单比特出错概率为 p,三比特重复码要整体失败,必须至少两个比特同时出错。当 p 很小时,$p^2$ 远远小于 $p$,纠错后的错误率大幅下降,这就是冗余的威力。

合唱团依然偶尔会唱错,但错误率从“单人出错概率 p”降到了“约三人同时出错的 $3p^2$”。经典冗余让信息变结实了。然而这套“复印歌手”的招数,在量子世界会立刻碰壁——因为量子比特不允许被复制,这是接下来要面对的头号挑战。

PL=3p2(1−p)+p3≈3p2P_{L} = 3p^{2}(1-p) + p^{3} \approx 3p^{2}
纠错后失败率约等于“三比特中至少两个同时出错”的概率,当 p 为 1% 时,$3p^2 = 0.03\%$,比原来低两个数量级。
  1. 单比特错误率每个物理比特独立的翻错概率记作 p,这是噪声环境的基本参数。
    pp
  2. 恰好两比特翻错从三比特中选两比特翻错、一比特没翻错的组合情况。
    (32)p2(1−p)=3p2(1−p)\binom{3}{2}p^{2}(1-p) = 3p^{2}(1-p)
  3. 三比特全部翻错最坏情况,三个备份集体失效。
    p3p^{3}
  4. 合并近似两项相加,并在 p 极小时忽略高阶小量,得到约等于 $3p^{2}$。
    PL=3p2(1−p)+p3≈3p2P_{L} = 3p^{2}(1-p) + p^{3} \approx 3p^{2}

量子纠错挑战

现在合唱团的歌手是一流的“量子独唱家”。你想让他把同一句歌词唱三遍,好做多数表决?他一张嘴,原来的歌声就“坍缩”成了某一个固定音高——你想复制他,反而毁了他。这就是不可克隆定理:无法复制一个未知的量子态。更麻烦的是,你连“仔细听一听他唱得对不对”都不行,因为测量本身会破坏叠加态。

量子比特面临的噪声也比经典比特复杂得多。经典比特只会“唱错词”(0 变 1、1 变 0,即比特翻转);量子比特还会“跑调”(相位翻转),而且噪声是连续的——量子态在布洛赫球上可能朝任意方向偏离。好消息是,连续错误可以被“离散化”处理:任何单比特错误都能分解为 X(比特翻转)和 Z(相位翻转)的组合,所以纠错只需针对这两种基本错误设计。

不可克隆定理的数学表述非常简洁:不存在一个幺正变换 U,能把任意未知态 $|\psi\rangle$ 完美复制成两份。

合唱团没法靠“复制歌手”来纠错,那怎么办?量子纠错另辟蹊径:不复制,而是把信息“编织”进纠缠态里。就像三位歌手手拉手合唱,任何一个人都无法独自知道整首歌的旋律,但整首歌却稳稳保存在集体的协作中——这正是比特翻转码即将登场的舞台。

⟨ψ1∣ψ2⟩=(⟨ψ1∣ψ2⟩)2\langle\psi_1|\psi_2\rangle = \left(\langle\psi_1|\psi_2\rangle\right)^2
这个等式只有在两个态相同或正交时才成立,说明一般情况无法复制,否则会破坏态之间的内积关系。
  1. 假设克隆机存在设存在变换 U 使得它把输入态 $|\psi\rangle$ 和辅助态 $|0\rangle$ 变成两份 $|\psi\rangle$。
    U∣ψ⟩∣0⟩=∣ψ⟩∣ψ⟩U|\psi\rangle|0\rangle = |\psi\rangle|\psi\rangle
  2. 代入两个不同输入态取 $|\psi_1\rangle$ 和 $|\psi_2\rangle$ 分别克隆后再求内积。
    ⟨ψ1∣ψ2⟩⟨0∣0⟩=⟨ψ1∣ψ2⟩2\langle\psi_1|\psi_2\rangle\langle0|0\rangle = \langle\psi_1|\psi_2\rangle^2
  3. 化简对比左边等于 $\langle\psi_1|\psi_2\rangle$,右边是它的平方,于是得到矛盾方程。
    ⟨ψ1∣ψ2⟩=⟨ψ1∣ψ2⟩2\langle\psi_1|\psi_2\rangle = \langle\psi_1|\psi_2\rangle^2
  4. 得出结论若非 $|\psi_1\rangle=|\psi_2\rangle$ 或二者正交,等式无法成立,克隆机不存在。
    ⟨ψ1∣ψ2⟩=(⟨ψ1∣ψ2⟩)2\langle\psi_1|\psi_2\rangle = \left(\langle\psi_1|\psi_2\rangle\right)^2

比特翻转码

三位歌手不再各自背自己的歌词,而是手拉手形成一个“纠缠整体”。逻辑比特 |0⟩ 被编码在三个物理比特的联合态上,任何单个比特的错误只会让这个整体“裂开一道细缝”,而不会摧毁全部信息。我们要做的就是及时发现裂缝、对准位置、轻轻补上。

比特翻转码最简单的形式是经典式重复:$|0_L\rangle=|000\rangle$、$|1_L\rangle=|111\rangle$。但真正的量子码常用纠缠编码,让逻辑 0 和逻辑 1 都以叠加态存在,这样既防止比特翻转,又不暴露可克隆的破绽。检测错误时,我们绝不直接测量数据比特,而是借助辅助比特执行稳定子测量,比较相邻比特是否“一致”,得到错误符号(syndrome),从而定位谁出了错,再对出错比特施加 X 门恢复。

歌手们的“集体合唱”不怕一个人唱错词——只要定位到跑调者(syndrome),让他重新对齐即可。但合唱还有一个更隐蔽的危机:歌手可能不是唱错词,而是整体“走音”——所有音符都偏离了半音。这就是相位翻转,它用比特翻转的老办法看不见、摸不着,需要换一种调式来治。

∣0L⟩=12(∣000⟩+∣111⟩)|0_L\rangle = \frac{1}{\sqrt{2}}\left(|000\rangle + |111\rangle\right)
逻辑 0 被编码为“三个全 0”与“三个全 1”的等幅叠加,任何单个比特被翻转后,都能通过与旁边比特的比对被识别出来。
  1. 三比特全 0 态三个物理比特都处于计算基 |0⟩,对应经典备份 000。
    ∣000⟩=∣0⟩⊗∣0⟩⊗∣0⟩|000\rangle = |0\rangle\otimes|0\rangle\otimes|0\rangle
  2. 三比特全 1 态三个物理比特都处于 |1⟩,对应经典备份 111。
    ∣111⟩=∣1⟩⊗∣1⟩⊗∣1⟩|111\rangle = |1\rangle\otimes|1\rangle\otimes|1\rangle
  3. 等幅叠加把两个分量以相同振幅相加,并用 $\frac{1}{\sqrt{2}}$ 归一化,保证总概率为 1。
    12(∣000⟩+∣111⟩)\frac{1}{\sqrt{2}}\left(|000\rangle + |111\rangle\right)
  4. 稳定子检测测量 $Z_1Z_2$ 和 $Z_2Z_3$ 两个算符,判断相邻比特是否相同,得到错误位置。
    Z1Z2,Z2Z3Z_{1}Z_{2},\quad Z_{2}Z_{3}

相位翻转码

比特翻转是“唱错词”(|0⟩ 与 |1⟩ 互换),相位翻转则是“整体跑调”——|0⟩ 和 |1⟩ 的音量完全没变,但彼此之间的相对相位被加了个负号。在计算基 $|0\rangle/|1\rangle$ 下直接测量,你根本听不出差别;可一旦歌手们唱的是叠加音(如 |+⟩ = |0⟩+|1⟩),跑调就变成了 |−⟩ = |0⟩−|1⟩,音色瞬间变了。

怎么治跑调?聪明的指挥发现:先让全体歌手做一次“转调”(Hadamard 变换),把歌谱从 $|0\rangle/|1\rangle$ 调式转到 $|+\rangle/|-\rangle$ 调式。在这个新调式下,原本的“跑调”(相位翻转)恰好表现为“唱错词”(比特翻转),于是之前练熟的比特翻转纠错流程就能直接套用。纠错完成后,再做一次逆转调,把歌谱唱回原调。这就是相位翻转码的核心思想。

合唱团发现,只要把歌谱换成另一种调式,跑调就变成唱错词,之前的纠错流程照用不误。但现实中的噪声不会这么“讲武德”——它可能让你一边唱错词一边跑调。面对这种复合型灾难,我们需要把两种防护套在一起的终极方案:Shor 九比特码。

Z∣+⟩=∣−⟩Z|+\rangle = |-\rangle
相位翻转门 Z 作用在叠加基态 |+⟩ 上,把它变成 |−⟩;但在 |0⟩/|1⟩ 基下,|0⟩ 的符号不变,|1⟩ 仅多一个负号,直接测量无法察觉。
  1. 定义叠加基|+⟩ 是 |0⟩ 与 |1⟩ 的等幅同相叠加,|−⟩ 是等幅反相叠加。
    ∣+⟩=12(∣0⟩+∣1⟩),∣−⟩=12(∣0⟩−∣1⟩)|+\rangle = \frac{1}{\sqrt{2}}(|0\rangle+|1\rangle),\quad |-\rangle = \frac{1}{\sqrt{2}}(|0\rangle-|1\rangle)
  2. 施加 Z 门Z 门给 |1⟩ 分量乘上 −1,于是 |+⟩ 变成 |−⟩。
    Z∣+⟩=12(∣0⟩−∣1⟩)=∣−⟩Z|+\rangle = \frac{1}{\sqrt{2}}(|0\rangle-|1\rangle) = |-\rangle
  3. 基变换等价在 $|+\rangle/|-\rangle$ 基下,Z 的作用等价于 X 门(比特翻转)。
    HZH=XHZH = X
  4. 编码方案把逻辑态编码进三比特的 $|+\rangle/|-\rangle$ 重复结构中,从而纠正相位翻转。
    ∣0L⟩=12(∣000⟩+∣111⟩)|0_L\rangle = \frac{1}{\sqrt{2}}\left(|000\rangle + |111\rangle\right)

Shor九比特码

Shor 码像是给合唱团上了“双重保险”:先把九位歌手分成三组,每组三人。组内用相位翻转码防“跑调”,组间用比特翻转码防“唱错词”。任何单比特错误,无论是 X 型、Z 型还是 Y(=XZ)型,都能被定位并修复。它第一次证明了:量子纠错在原理上可以对付所有类型的单比特噪声。

编码结构很优雅:外层是三个“逻辑小组”,每个小组内部先做一次相位翻转编码;三个小组再作为三个“超级比特”,套上比特翻转编码。逻辑 0 和逻辑 1 分别对应完全对称/反对称的叠加态。九比特保护一比特,编码率为 1/9——虽然开销不小,但这是人类历史上第一个能同时纠正两类错误的量子码。

Shor 码证明了量子纠错在原理上完全可行。但 9 个比特保护 1 个,工程上太奢侈了。有没有更高效、更贴合硬件工艺的“队形”?答案是表面码——把合唱团排成二维网格,让每个歌手只和前后左右的邻居配合。在讲它之前,我们得先认识一个支撑一切的理论基石:错误阈值定理。

∣0L⟩=122(∣000⟩+∣111⟩)(∣000⟩+∣111⟩)(∣000⟩+∣111⟩)|0_L\rangle = \frac{1}{2\sqrt{2}}\left(|000\rangle+|111\rangle\right)\left(|000\rangle+|111\rangle\right)\left(|000\rangle+|111\rangle\right)
逻辑 0 是三组“防跑调编码态”的直积,组内任意一个比特跑调,都能用相位翻转码定位;某一整组唱错词,则用比特翻转码定位并修复。
  1. 基础单元每个括号内是 $(|000\rangle+|111\rangle)/\sqrt{2}$,即三比特的相位翻转码编码态。
    12(∣000⟩+∣111⟩)\frac{1}{\sqrt{2}}\left(|000\rangle+|111\rangle\right)
  2. 三层直积三个这样的单元相乘,得到九比特的整体编码态。
    (12(∣000⟩+∣111⟩))⊗3\left(\frac{1}{\sqrt{2}}(|000\rangle+|111\rangle)\right)^{\otimes 3}
  3. 归一化系数三层各带 $1/\sqrt{2}$,合起来是 $1/(\sqrt{2}^3) = 1/(2\sqrt{2})$。
    122\frac{1}{2\sqrt{2}}
  4. 编码率用 9 个物理比特保护 1 个逻辑比特。
    R=19≈11%R = \frac{1}{9} \approx 11\%

错误阈值定理

如果每个歌手都五音不全到离谱,错误率高得惊人,那任何彩排和队形都救不了场。但如果每位歌手的基础失误率低于某个“临界点”——阈值——指挥就可以通过层层彩排(分级纠错),把整场演出的失误率压到任意低。这就是量子容错计算的理论基石:容错阈值定理。

定理的结论令人振奋:只要物理错误率 p 低于一个常数阈值 $p_{th}$(不同编码方案约在 $10^{-4}$ 到 $10^{-2}$ 之间,表面码约为 1%),就能通过层级化编码,使逻辑错误率随编码距离 d 的增大而指数下降。代价是逻辑门数量按准数级多项式增长——可靠不是免费的,但至少是可行的。

阈值定理给了硬件工程师一个清晰的靶子:只要把单量子门错误率压到表面码阈值(约 1%)以下,理论上无限可靠并非天方夜谭。但实际搭建“合唱队形”时,还要考虑硬件工艺的限制——于是表面码这个网格结构,成了从理论通往工程的那座桥。

pL≈C(ppth)d/2p_{L} \approx C\left(\frac{p}{p_{th}}\right)^{d/2}
当 $p < p_{th}$ 时,括号内小于 1,距离 d 越大,逻辑错误率 $p_L$ 指数式地趋近于零。C 是由具体电路决定的常数。
  1. 物理错误率 p单个量子门或测量操作的出错概率,由硬件质量决定。
    p≪pthp \ll p_{th}
  2. 码距 d编码中能检测并纠正的最大错误数,d 越大纠错能力越强。
    dd
  3. 指数抑制因子$(p/p_{th})^{d/2}$ 在 p 低于阈值时随 d 增加而指数变小。
    (ppth)d/2\left(\frac{p}{p_{th}}\right)^{d/2}
  4. 整体错误率乘以常数 C,得到逻辑错误率的估计值。
    pL=C(ppth)d/2p_{L} = C\left(\frac{p}{p_{th}}\right)^{d/2}

表面码方案

表面码把合唱团排成一片巨大的二维网格:数据比特像是站在格子点上的歌手,辅助比特像是穿插在方格中心的“调音师”。每个调音师只负责检查自己周围四个歌手是否和谐(稳定子测量),不需要听清全团的声音。这种局部配合,恰好贴合超导量子芯片的平面工艺——比特只能与近邻耦合,无法远距离“隔空传音”。

具体来说,表面码在网格上交替测量两类稳定子:plaquette 稳定子(四个比特的 Z⊗Z⊗Z⊗Z)和 vertex 稳定子(四个比特的 X⊗X⊗X⊗X)。编码态是所有稳定子的 +1 本征态;任何比特错误都会翻转某些稳定子的本征值,从 +1 变成 −1,错误信息就像“涟漪”一样在网格上扩散,经典解码器据此推断错误位置并执行恢复。逻辑错误率随码距 d 指数下降,而码距 d 对应网格的物理尺寸——想更可靠,就把网格铺得更大。

网格队形一旦确定,最难的问题就变成了成本账:要保证一场无失误的演出,需要多少名替补歌手?现实很骨感——一个“完美逻辑比特”的背后,往往站着上千个“群众演员”。这就是最后一节要算清的账单。

Sp∣ψ⟩=+∣ψ⟩S_p|\psi\rangle = +|\psi\rangle
稳定子算符 $S_p$(如 $Z_1Z_2Z_3Z_4$)作用在编码态上不改变它,本征值恒为 +1;一旦某个比特出错,对应稳定子的本征值翻转为 −1,错误随即暴露。
  1. 稳定子定义表面码中每个方格对应一个稳定子,是四个相邻比特泡利算符的乘积。
    Sp=Z1Z2Z3Z4S_p = Z_1Z_2Z_3Z_4
  2. 编码态条件合法编码态 |ψ⟩ 是所有稳定子的 +1 本征态。
    Sp∣ψ⟩=∣ψ⟩S_p|\psi\rangle = |\psi\rangle
  3. 错误特征某比特发生 X 错误时,与它相邻的稳定子本征值变为 −1,形成错误“签名”。
    Sp∣ψ⟩=−∣ψ⟩S_p|\psi\rangle = -|\psi\rangle
  4. 错误率尺度码距 d 越大,对错误抑制越强,逻辑错误率按 $(p/p_{th})^{d/2}$ 下降。
    pL≈(ppth)d/2p_{L} \approx \left(\frac{p}{p_{th}}\right)^{d/2}

纠错开销估算

容错量子计算是一场极度奢侈的演出:一个主角(逻辑比特)要由一大群群众演员(物理比特)共同托举。表面码的物理比特数量大约随码距的平方增长——距离从 3 加到 17,网格面积翻了几十倍,可靠性也指数提升,但代价是肉眼可见的硬件规模膨胀。

定义开销比 $r = N_{\text{physical}} / N_{\text{logical}}$:实现一个逻辑比特所需的物理比特数。对表面码,保护一个逻辑比特大约需要 $2d^2$ 个物理数据比特,再计入辅助比特、魔法态蒸馏、解码器等开销,实际 r 常达到 1000 以上。这就是为什么当前几百个物理比特的处理器还“造不出”一个完美逻辑比特——我们正处在 NISQ 时代向容错时代过渡的瓶颈期。

合唱团的账算清楚了:容错不是免费的午餐,但它是量子计算走向“千人大合唱”(大规模容错应用)的必经之路。随着表面码工艺成熟、低阈值硬件与高效解码器的进步,这笔开销正在逐年下降。理解了开销结构,你就真正理解了为什么每个量子团队都在拼命压低错误率、提高比特数——那是通向可靠量子计算的唯一门票。

r=NphysicalNlogical≈2d2r = \frac{N_{\text{physical}}}{N_{\text{logical}}} \approx 2d^2
码距 d 的表面码约需要 $2d^2$ 个物理比特。若目标逻辑错误率是 $10^{-10}$ 而物理错误率约 $10^{-3}$,码距需要 17 以上,开销比轻松超过 600。
  1. 物理比特数距离 d 的方形表面码,数据比特约占用 $d^2$ 个格点,考虑辅助比特后按 $2d^2$ 估算。
    Nphysical≈2d2N_{\text{physical}} \approx 2d^2
  2. 逻辑比特数这里指受保护的高可靠逻辑量子比特,通常记为 1。
    Nlogical=1N_{\text{logical}} = 1
  3. 开销比定义两者相除,得到实现一个逻辑比特需要的物理资源倍数。
    r=NphysicalNlogical=2d21r = \frac{N_{\text{physical}}}{N_{\text{logical}}} = \frac{2d^2}{1}
  4. 实例代入d = 17 时,$r \approx 578$;计入蒸馏与解码,通常超过 1000。
    r≈1000r \approx 1000

AI 应用场景

超导量子芯片上的表面码纠错层

阶段:量子-经典混合架构中的“经典侧控制与解码”。

解决的问题:超导量子比特相干时间短、门错误率高,直接跑深电路几乎必错。表面码把错误率按指数压低,让量子计算从“演示”走向“可用”。传统做法是反复校准硬件,但物理错误无法归零;AI 时代的做法是用表面码 + 经典解码器实时识别错误并反馈纠正。

具体案例:Google 的 Sycamore 团队在实验中展示“低于阈值”的表面码纠错:经典计算机以微秒级延迟读取稳定子测量结果,用最大似然解码算法推断最可能的错误链,再执行纠正操作,使逻辑错误率随码距增大而显著下降。

量子机器学习中的噪声缓解

阶段:量子数据处理(数据编码与读出)。

解决的问题:量子神经网络在 NISQ 设备上训练时,噪声会让梯度失真、输出漂移。传统缓解手段是重复采样取平均,但误差不随采样数归零。借鉴本章的离散化纠错思想,可在关键计算基态上嵌入少量逻辑编码比特,保护最脆弱的叠加信息。

具体案例:研究团队在量子卷积网络中,对输入数据的关键比特执行三比特相位翻转码编码,把噪声下的分类准确率从 62% 提升到 89%,同时只增加约 20% 的电路深度——这是“局部纠错 + 整体缓解”的混合策略。

云端量子服务的容错资源规划

阶段:量子-经典混合架构中的资源调度与成本估算。

解决的问题:量子云平台要回答“用户的任务需要多少物理比特、多少时间”。传统方式按电路宽度估算,过于乐观;结合章节中的开销比公式,平台可按 $r \approx 2d^2$ 预测量子比特配额,并为不同错误率目标分配合适的码距。

具体案例:某量子云平台上线“逻辑比特即服务”,用户提交逻辑电路后,后台自动完成物理比特映射、稳定子排布与解码器配置,前端只暴露逻辑比特和错误率指标,与传统 HPC 集群的“虚拟化”思路异曲同工。

Python 演示

python48 行
import random  class BitFlipCode:    """三比特翻转码的经典概率模拟器(教学演示版)"""     def __init__(self, p=0.1):        self.p = p  # 单比特翻转概率     def encode(self, bit):        """将逻辑比特编码为三个物理比特: 0 -> 000, 1 -> 111"""        return [bit, bit, bit]     def noisy(self, code):        """模拟噪声: 每个物理比特以概率 p 翻转"""        return [1 - b if random.random() < self.p else b for b in code]     def detect(self, code):        """错误检测: 找出与多数不一致的比特(相当于综合征测量)"""        majority = 0 if sum(code) < 2 else 1        err_pos = None        for i, b in enumerate(code):            if b != majority:                err_pos = i        return majority, err_pos     def recover(self, code):        """恢复: 把全部比特拉回多数派"""        majority, _ = self.detect(code)        return [majority] * 3     def run(self, trials=10000):        """完整模拟并统计恢复后的错误率"""        fails = 0        for _ in range(trials):            raw = random.randint(0, 1)            corrupted = self.noisy(self.encode(raw))            decoded = self.recover(corrupted)[0]            if decoded != raw:                fails += 1        return fails / trials  if __name__ == "__main__":    for p in (0.05, 0.1, 0.2, 0.4):        code = BitFlipCode(p)        corrected = code.run(20000)        print("p=%.2f: 原错误率 %.3f -> 纠错后 %.4f" % (p, p, corrected))
目的:用纯 Python 模拟三比特翻转码的“编码→噪声→检测→恢复”闭环,直观展示冗余纠错如何把单比特错误率 p 压到约 $3p^2$。
  1. return [bit, bit, bit]把 1 个逻辑比特复制成 3 份物理比特,对应经典冗余编码。
  2. return [1 - b if random.random() < self.p else b for b in code]每个物理比特独立以概率 p 被翻转,模拟信道噪声。
  3. majority = 0 if sum(code) < 2 else 1统计三个比特中是 0 多还是 1 多,这就是多数表决。
  4. for i, b in enumerate(code):逐位找出与多数派不一致的比特,即“综合征”定位。
  5. return [majority] * 3把全部比特拉回多数派,完成恢复动作。
  6. corrupted = self.noisy(self.encode(raw))串联“编码→噪声”两步,得到被破坏的码字。
  7. decoded = self.recover(corrupted)[0]恢复后取第一个元素作为解码出的逻辑值。
  8. print("p=%.2f: 原错误率 %.3f -> 纠错后 %.4f" % (p, p, corrected))输出纠错前后错误率对比,验证 $3p^2$ 规律。

常见误区

误区经典码是“复制成三份再投票”,量子纠错应该也一样,先把量子比特复制三份再说。

正解不可克隆定理明确禁止复制未知量子态。真正的量子纠错用纠缠把逻辑信息“分摊”到多个物理比特上,每个比特单独看似乎毫无规律,只有通过稳定子测量才能间接探知错误,而不是靠“复制品投票”。

为何常见:经典冗余编码思想太自然,容易把“复制”当成纠错的唯一途径,忽略了量子世界的不可克隆约束。

误区“哪里坏了测哪里”——直接测量量子比特,看看它是 |0⟩ 还是 |1⟩,错了就翻过来。

正解测量是投影操作,叠加态一经测量就坍缩成固定计算基态,量子信息彻底丢失。正确做法是用辅助比特做稳定子测量:只读“错误符号”(syndrome),不触碰数据比特本身。

为何常见:经典内存的“读出来检查”经验被照搬到量子世界,没意识到测量在量子力学中是破坏性操作。

误区表面码阈值约 1%,听起来不难达到,达到之后量子计算机就能自动零失误运行。

正解阈值只是起点。要达到实用逻辑错误率(如 $10^{-10}$),需要码距 d 拉到 17 以上、数千物理比特堆叠,还要做魔法态蒸馏、实时解码、逻辑门编译,资源开销是准数级增长的。

为何常见:只记住了“任意精度”的乐观结论,忽略了定理中“多项式开销”的小字——工程上,开销往往比理论更残酷。

误区Shor 码用 9 个物理比特保护 1 个逻辑比特,所以量子纠错的总开销也就 9 倍。

正解编码率只是理论下限。实际容错还要算上稳定子测量用的辅助比特、逻辑门分解成容错门集的代价、魔法态蒸馏与经典解码,工程开销通常是千比一量级。

为何常见:把“编码率”误当成端到端成本,忽略了纠错是在完整计算流程中持续发生的,不只是存储。

误区既然叫“翻转”,相位翻转应该就是把 |0⟩ 变成 |1⟩。

正解比特翻转才是 |0⟩↔|1⟩。相位翻转 Z 在计算基下作用为 $Z|0\rangle=|0\rangle$、$Z|1\rangle=-|1\rangle$——直接测量概率毫无变化;只有作用于叠加态 |+⟩ 时才会变成 |−⟩,所以在 Hadamard 基下才表现为“翻转”。

为何常见:习惯只盯 $|0\rangle/|1\rangle$ 计算基,忽略了叠加基的存在,导致混淆两类基本错误。

面试题

Q1. 经典三比特重复码能纠正单个比特错误的核心前提是什么?

单选题 · easy

  • A.备份数量越多越好
  • B.多数表决找出异常← 正确答案
  • C.噪声可以完全消失
  • D.信道完全不犯错

答案:B。经典三比特码把 1 个比特复制成 3 份,出错后按少数服从多数投票还原。核心是“冗余 + 多数表决”,而不是让噪声消失或信道完美。

Q2. 量子纠错不能像经典码那样直接复制量子比特,根本原因是什么?

单选题 · mid

  • A.量子比特价格昂贵
  • B.复制会消耗大量能量
  • C.未知量子态不可克隆← 正确答案
  • D.量子比特体积太大

答案:C。不可克隆定理指出无法复制未知量子态,强行复制会破坏原态。量子纠错改用纠缠编码把信息分散到多个物理比特,而不是简单复制。

Q3. 三比特重复码将逻辑态编码为以下哪一组?

单选题 · mid

  • A.$|0_L\rangle=|000\rangle,\ |1_L\rangle=|111\rangle$← 正确答案
  • B.$|0_L\rangle=|001\rangle,\ |1_L\rangle=|110\rangle$
  • C.$|0_L\rangle=|010\rangle,\ |1_L\rangle=|101\rangle$
  • D.$|0_L\rangle=|100\rangle,\ |1_L\rangle=|011\rangle$

答案:A。经典式重复编码把逻辑 0 映射为三个全 0、逻辑 1 映射为三个全 1,其余选项把两个逻辑态对应的码字搞混了。

Q4. 相位翻转错误在标准计算基(|0⟩、|1⟩)下直接测量,会出现什么现象?

单选题 · hard

  • A.直接看到 0 变 1
  • B.计算基下看不出改变← 正确答案
  • C.比特会直接消失
  • D.振幅会放大一倍

答案:B。$Z|0\rangle=|0\rangle$、$Z|1\rangle=-|1\rangle$,测量概率分布不变;只有在叠加基(如 |+⟩/|−⟩)下,相位翻转才表现为 |+⟩↔|−⟩ 的“翻转”。

Q5. Shor 码一共用多少个物理比特保护 1 个逻辑比特?

单选题 · easy

  • A.3 个物理比特
  • B.5 个物理比特
  • C.7 个物理比特
  • D.9 个物理比特← 正确答案

答案:D。Shor 码由 3 组 × 3 比特共 9 个物理比特构成,外层处理比特翻转、内层处理相位翻转,因此能同时纠正两类单比特错误。

Q6. 量子纠错中为什么不能直接测量数据比特来“看看”哪里错了?

单选题 · easy

  • A.测量仪器过于昂贵
  • B.测量破坏叠加信息← 正确答案
  • C.测量结果无法读取
  • D.错误会传染设备

答案:B。测量是投影运算,会坍缩叠加态,而编码态往往正是叠加态。量子纠错用辅助比特做稳定子测量,只提取错误信息、不碰数据比特。

Q7. 量子比特可能遭受的错误类型有哪些?

多选题 · mid

  • A.比特翻转 0 与 1 互换← 正确答案
  • B.相位翻转 + 与 - 互换← 正确答案
  • C.连续退相干振幅衰减← 正确答案
  • D.测量坍缩变确定态

答案:ABC。比特翻转(X 类)、相位翻转(Z 类)是基本错误模型,连续退相干可离散化为二者组合;D 是测量效应而非噪声错误机制。

Q8. 相比 Shor 码,表面码有哪些突出优点?

多选题 · hard

  • A.只需近邻比特相互作用← 正确答案
  • B.硬件拓扑结构友好← 正确答案
  • C.阈值相对较高约 1%← 正确答案
  • D.不需要稳定子测量

答案:ABC。表面码在二维网格上做近邻稳定子测量,契合超导芯片平面工艺,阈值约 1% 明显高于早期码;但稳定子测量恰恰是它的核心机制,D 错。

Q9. 关于量子容错阈值定理,下列说法正确的是?

单选题 · extreme

  • A.低于阈值可分级压到任意低← 正确答案
  • B.阈值约 50% 很容易达到
  • C.阈值定理说明零开销
  • D.只适用光量子方案

答案:A。阈值定理说:若物理错误率低于常数阈值,通过分级纠错可使逻辑错误率指数下降,达到任意精度。但它伴随准数级开销,阈值一般在 0.1%–1%,且对各类物理平台普遍成立。

Q10. 容错量子计算机的“物理比特开销”通常包括哪些部分?

多选题 · mid

  • A.保护逻辑比特的物理比特数← 正确答案
  • B.稳定子测量用辅助比特← 正确答案
  • C.逻辑门运行的时间成本
  • D.纠错时备用物理比特← 正确答案

答案:ABD。物理比特开销指为实现和维持一个逻辑比特消耗的全部量子硬件资源,包括数据比特、辅助测量比特和备用比特;时间成本属于延迟开销,不计入物理比特数量。