← 返回博客

量子计算科普系列 · 第 20 篇

从 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)。它把物理比特铺在一张二维格子上:数据比特占格点,测量比特放边上或角上,靠邻居间的稳定子测量织成一张"守护网"。

它的好处极实在:

  • 局部性:每个测量只牵扯附近几个比特,不用长距离连线——这正好对上超导芯片的平面布线;
  • 阈值高:对硬件噪声的容忍度相对宽松,是当前容错路线图的支柱。

代价是"很费比特":要压住一个逻辑错误,往往得用成百上千个物理比特去护一个逻辑比特。

flowchart LR P["物理比特 易错"] --> S["稳定子测量: 只读出错误症状"] S --> SYM["症状: 哪出错, 但不暴露数据"] SYM --> CORR["经典解码: 反推修正操作"] CORR --> L["逻辑比特 受保护"]

六、阈值定理:噪声够低,就能压住

最核心的结论叫阈值定理(也常叫阈值原理):

只要单个物理门的出错率低于某个门槛 p_th(不同码约万分之一到千分之一量级),并且我们能按需增加比特数,那么逻辑错误的率就可以随比特数指数级压低——想多低有多低。

直觉:错率低于门槛时,每加一层编码,就把残余错误再砍一刀;砍得足够多,长线路就能可靠跑完。这给了"容错量子计算"理论上的通行证。

但泼盆冷水(呼应第 10 篇):门槛虽在,达成它要的"千个物理比特护一个逻辑比特"的规模,今天还在爬坡。第 12 篇《硬件路线大乱斗:超导 / 离子阱 / 光量子 / 拓扑》里各家机器,拼的就是谁先稳稳跨过这道门槛。

七、小结与预告

这一篇,把第 11 篇的"拿很多护一个"拆成了骨架:

  • 量子不能直接三备份(不可克隆 + 一测就塌),只能编码进关联、测关联不测数据
  • 3 比特位翻转码 → 相位翻转码 → Shor[[9,1,3]]Steane[[7,1,3]]表面码,保护越来越省、越来越贴合硬件;
  • 阈值定理:单门错率低于 p_th,逻辑错率随比特数指数压低,容错由此可行;
  • 代价是规模:一个可靠逻辑比特,今天要成百上千物理比特。

既然纠错需要海量比特和精准门,那这些比特到底用什么物理实现?第 12 篇《硬件路线大乱斗:超导 / 离子阱 / 光量子 / 拓扑》总览过四条路线——而下一篇,我们回到更底层的"测量",把第 4 篇没证明的"不可克隆"补上。

下次见。