从 3 比特码到表面码:纠错的数学骨架
前情提要:第 11 篇《量子纠错:给易碎的量子打补丁》里,我们用"拿很多护一个"建立了直觉。可到底怎么"编"?怎么知道错在哪儿、又不破坏数据?这一篇,补上那套数学骨架。

一、钩子:冗余能直接用吗
经典世界,防错很简单:一份文件存三份,两份一样就信它。可量子世界有两道坎(回顾第 4 篇测量、第 16 篇几何):
1. 不能复制——不可克隆定理说,你没法先偷偷印一份未知态留底; 2. 一测就塌——你想"看看存得对不对",反而把态毁了。
所以"直接三备份再投票"行不通。量子纠错得用更巧的办法:把信息编码进多个比特的关联里,只测"关联"、不测数据本身。
二、3 比特位翻转码:最朴素的冗余
先对付最简单的错——位翻转(0 变 1 或反之,像经典的比特翻转)。
把 1 个逻辑比特编码成 3 个物理比特的关联:|0⟩_L = |000⟩,|1⟩_L = |111⟩。如果中间那个比特翻了,变成 |010⟩,系统就处在"本该全同、却有一个不同"的状态。
关键技巧:稳定子测量。不去看每个比特"是 0 还是 1"(那会塌缩数据),而是看"相邻两个比特是否相同"——这个"是否相同"就是关联,是个守恒量(稳定子)。测它,能知道"第几个比特翻了",却读不出数据本身。

三、相位翻转码 + Shor 码:连相位也防
位翻转码只防"翻转",防不住另一种错:相位翻转(把 |+⟩ 变成 |−⟩,即相对相位被反转)。经典里没有对应物,量子独有。
办法是"再来一层":先用哈达马门把相位错变成位错,再用位翻转码救,救完变回来。Shor 码(1995)就是把这两层叠起来,用 9 个物理比特编码 1 个逻辑比特,写成 Shor[[9,1,3]]——方括号里三个数分别是"物理比特数、逻辑比特数、能纠的错数"。
四、Steane 码:更省的方案
9 个换 1 个太奢侈。1996 年 Steane 用七个物理比特就做到了同样保护,叫 Steane[[7,1,3]]。它借用了经典纠错码的结构,是 CSS 码(Calderbank-Shor-Steane 族)的一员。此后人们一直在找"更省"的码——这是硬件成本的直接较量。
五、表面码:二维格子上的守护
今天最受宠的,是表面码(surface code)。它把物理比特铺在一张二维格子上:数据比特占格点,测量比特放边上或角上,靠邻居间的稳定子测量织成一张"守护网"。
它的好处极实在:
- 局部性:每个测量只牵扯附近几个比特,不用长距离连线——这正好对上超导芯片的平面布线;
- 阈值高:对硬件噪声的容忍度相对宽松,是当前容错路线图的支柱。
代价是"很费比特":要压住一个逻辑错误,往往得用成百上千个物理比特去护一个逻辑比特。
六、阈值定理:噪声够低,就能压住
最核心的结论叫阈值定理(也常叫阈值原理):
只要单个物理门的出错率低于某个门槛 p_th(不同码约万分之一到千分之一量级),并且我们能按需增加比特数,那么逻辑错误的率就可以随比特数指数级压低——想多低有多低。
直觉:错率低于门槛时,每加一层编码,就把残余错误再砍一刀;砍得足够多,长线路就能可靠跑完。这给了"容错量子计算"理论上的通行证。
但泼盆冷水(呼应第 10 篇):门槛虽在,达成它要的"千个物理比特护一个逻辑比特"的规模,今天还在爬坡。第 12 篇《硬件路线大乱斗:超导 / 离子阱 / 光量子 / 拓扑》里各家机器,拼的就是谁先稳稳跨过这道门槛。
七、小结与预告
这一篇,把第 11 篇的"拿很多护一个"拆成了骨架:
- 量子不能直接三备份(不可克隆 + 一测就塌),只能编码进关联、测关联不测数据;
- 从 3 比特位翻转码 → 相位翻转码 → Shor[[9,1,3]] → Steane[[7,1,3]] → 表面码,保护越来越省、越来越贴合硬件;
- 阈值定理:单门错率低于 p_th,逻辑错率随比特数指数压低,容错由此可行;
- 代价是规模:一个可靠逻辑比特,今天要成百上千物理比特。
既然纠错需要海量比特和精准门,那这些比特到底用什么物理实现?第 12 篇《硬件路线大乱斗:超导 / 离子阱 / 光量子 / 拓扑》总览过四条路线——而下一篇,我们回到更底层的"测量",把第 4 篇没证明的"不可克隆"补上。
下次见。