
量子计算这两年热度一直居高不下但大多数讨论都停在一个很虚的层面什么“速度是传统计算机的一亿亿倍”、什么“将颠覆所有行业”。真正愿意往下追问一句“那它凭什么快需要多少物理资源才能换到这个快”的人少之又少。而我恰恰觉得后面这个问题才是量子计算的本质。量子态、量子纠错、计算资源这四件事放在一起看起来像三个名词拼一个概念实际上是一条完整的因果链量子态决定了信息的承载方式这种方式带来了指数级的潜力也因为脆弱而引入了量子纠错纠错又把资源开销无限抬高。整条链最终压回一个非常朴素的工程问题——到底需要多少硬件资源才能跑一个有用的量子算法。这篇文章我想把这根链条拆开尽量用能落地的话讲清楚量子计算为什么“这么好、这么难、这么贵”并且给出一套可以自己手算的物理比特估算思路。适合刚开始接触量子计算的开发者、做技术决策的人以及被各种报道搞得一头雾水但又想真正搞懂的人。1. 量子态有多“贵”从叠加态和纠缠说起1.1 叠加态一份数据里的指数级容量经典计算的基本单元是比特一个比特在任意时刻只能是 0 或 1。量子计算的基本单元叫量子比特qubit它的状态是一个二维复向量空间的向量可以写成|ψ⟩ α|0⟩ β|1⟩其中 α、β 是复数且需要满足归一化条件|α|² |β|² 1。这个表达式的意思是量子比特既可以处在 |0⟩也可以处在 |1⟩还可以同时处在两者的某种“混合”上。这就是所谓的叠加态。人话版本如果经典比特是一个只能朝左或朝右转的开关那量子比特更像一个指向任意方向、长度固定为 1 的箭头。方向不同状态就不同不只是左右两档而是整个球面上的无数方向。那这个“无数方向”有什么用关键不在单个量子比特上而在多个量子比特组合时。单个量子比特是 2 个复数两个量子比特组合起来要 4 个复数三个要 8 个。n 个量子比特的系统态需要用 2^n 个复数振幅来描述。这是指数增长。20 个量子比特代表一百多万个振幅30 个量子比特代表十亿多个振幅。我记得很清楚自己在经典模拟器里跑到 30 个 qubit 时内存瞬间吃掉十几 GB机器直接卡成幻灯片。那感觉就是量子计算的“并行”不是传统意义上的开多个线程而是把信息密度打包进了状态空间的维度里。所以有些科普说“量子计算机同时尝试所有可能”这个描述不严谨但“指数级的状态空间”是真的。它意味着同样的数据量量子比特在原理上只需要多项式量级的资源就能表达而经典比特需要指数级。这是量子计算加速的数学根源也是后面所有资源问题的根源——一个状态空间越大的体系就越难被精确控制。1.2 纠缠把指数摊到多个比特上单有叠加还不够。如果所有量子比特都只是各干各的那系统整体状态不过是各个单比特状态的“直积”描述资源会线性增长不会出现指数级的状态空间。真正让量子计算产生质变的是纠缠。纠缠是两个或多个量子比特之间的一种非经典关联。两个纠缠的量子比特它们各自没有独立确定的状态只能作为一个整体来描述。测量其中一个另一个会瞬时关联性地坍缩到对应状态。爱因斯坦把这种现象称为“幽灵般的超距作用”物理学家争论了很多年但实验反复证实这是真实存在的。用一个不那么严谨但好懂的例子来打比方想象你请了两位演员同时排练两部戏A 演员的动作和 B 演员的动作因为“剧本”强绑定哪怕隔得很远你看了 A 的表演就能推知 B 的表演。但他们各自单独彩排时状态却是不确定的。这个“剧本绑定”就是纠缠。纠缠在计算上的价值是让 2^n 个振幅不是简单的重复堆积而是每增加一个量子比特整个系统的状态空间维度就翻一倍。你操控其中一个比特会连带影响所有与之纠缠的比特。这就是为什么量子算法能做到经典算法做不到的事情——它本质上是在利用一个 2^n 维的空间做矩阵变换而不是在一维的比特序列上做逻辑门操作。但纠缠也带来了问题。你对一个纠缠系统施加噪声会影响全局你想把某个比特的温度、振动、电磁干扰屏蔽掉几乎不可能只屏蔽其中一个而不碰其他。这就引出了量子计算里最让人头疼的矛盾状态空间越大越容不下串扰越需要隔离环境可是量子算法又恰恰需要比特之间充分纠缠。资源需求就是这么被逼出来的。1.3 测量的代价信息不是免费的还有一个经常被忽略但极其关键的“资源”维度是读取。经典计算中读取一个变量的值不做任何破坏随便读多少次都行。量子世界不是这样。测量一个量子比特的叠加态结果是 |0⟩ 或 |1⟩概率分别是 |α|² 和 |β|²而测量之后量子态就坍缩到测量结果对应的本征态也就是说测量改变了系统本身。这意味着两件事第一你不能“看一眼”量子态里的所有信息。一次测量只能得到“0 还是 1”这种经典信息叠加态的纯量幅度信息全部丢失。量子算法必须在测量之前把所有计算通过幺正变换也就是可逆的、不产生信息丢失的演化完成最后那一下测量只是读出结果。任何中途读取数据的尝试都会破坏整个计算。第二状态读数是要花“资源”的。这里指的不是普通硬盘而是极其灵敏的单量子探测器。在超导量子比特体系里读出通常用谐振腔与量子比特耦合通过微波信号相位变化来判断比特状态在离子阱体系里要靠激光诱导荧光来判断离子处于哪个能级。这些读出系统的标定、噪声隔离、时间校准每一环节都是工程资源的无底洞。我自己在调试一个小的模拟量子程序时最开始完全没有意识到测量会导致坍缩把测量放在中间步骤后面所有数据全部错掉。排错排了一个下午最后看到三行文档里的那句“measurement collapses the state”整个人是又好气又好笑。这个教训让我理解了一个很底层的事实量子计算的所有奇异性都建立在“不可偷看”的基础上。你只能在不读中间结果的前提下做出复杂的计算再一次性读出答案。资源的花费不是为了让计算更快而是为了保证这个“不偷看”能成立。2. 量子纠错为什么成了资源黑洞2.1 量子态为什么会“坏掉”经典比特如果被噪声干扰我们有成熟的办法处理复制一份放旁边坏了再拷贝回来就行。量子比特不行。首先量子比特的状态极其脆弱。一个叠加态 |ψ⟩ α|0⟩ β|1⟩ 的 α、β 是连续取值的复数哪怕受到了极小程度的干扰也会变成 α|0⟩ β|1⟩。没有任何东西是数字的“0/1”界限噪声会直接作用于连续的相位和幅度上。这个过程叫退相干。它的物理本质是量子比特和周围环境晶格振动、电磁场起伏、杂质自旋等发生了不可避免的相互作用量子比特的信息慢慢“泄漏”到环境里。一旦和环境纠缠原来我们自己系统中的相干性就消失了。从外部观察者的视角看物理上的量子比特还在跑着但叠加态已经变成了经典统计的混合态——程序“静默地死掉了”。更麻烦的是量子信息有一个和物理直觉完全相反的性质无克隆定理。这个定理说无法制造一个未知量子态的完全副本。你想像经典纠错那样“把状态复制三份再投票表决”在量子力学里直接行不通因为复制这个动作本身就违背了量子力学的基本线性演化规则。这就形成了一个两难状态容易错又没法复制。传统纠错思路在量子世界完全失效。量子纠错必须走一条完全不同的路。2.2 量子纠错的核心设计冗余与校验既然单个量子比特不能复制那怎么防护答案是把逻辑信息“摊开”到多个物理量子比特的纠缠态上。这里要区分两个概念物理量子比特physical qubit是硬件上真实存在的那一个个量子比特逻辑量子比特logical qubit是承载有用信息的抽象单位。量子纠错不复制单个物理比特的状态而是把一个逻辑比特的信息编码到多个物理比特组成的集体态里再通过反复的“校验测量”来判断错误是否发生。用人话解释这套机制想象你不想让一场重要发言被噪音干扰你不是让三个人重复同一句话本质是复制声明而是让三个人各自记住一句话的一部分这三部分相互关联但又不完全相同你只需要在关键节点问一些“你们之间关系是否还一致”的问题就能知道谁出错了并做局部修正。更严格一点的量子纠错逻辑是这样的用一个码空间code space来编码逻辑比特。比如把 |0⟩ 逻辑态编码为 |000⟩|1⟩ 逻辑态编码为 |111⟩这看起来像经典重复码但实际上不是简单复制而是把状态编码成纠缠态。每次执行完一批操作后通过稳定子测量stabilizer measurement检测错误模式。稳定子测量不破坏逻辑状态因为逻辑状态被设计为某些算符的本征态测量这些算符能得到一个“症状值”但不会坍缩逻辑信息。根据症状值推断出最可能的错误类型并施加修正操作。这段话对新手来说比较抽象我再说得直白一点稳定子测量相当于在电路里装了很多“监视哨”它们只检查某些代码字之间的关联是否仍然成立而不直接读取代码字的内容。任何单比特错误都会打破一部分关联于是监视哨会报警。监视哨输出的是一串错误症状通过解码就能定位到某个物理比特然后反向把它纠正回来。这套理论在 1995 年左右被 Shor、Steane、Calderbank 等一批人建立起来后来成为整个量子计算领域的基石。但要真正实现它账本上的硬件开销是惊人的。2.3 表面码为什么成为事实标准目前业界最主流、最有希望的量子纠错编码方案叫表面码Surface Code有时也称拓扑码。我个人的理解是它之所以胜出不是因为它的码率最高而是因为它的物理实现友好性最好。表面码的基本设计是在一个二维网格上布置两类量子比特——数据比特和辅助比特。数据比特承载被保护的量子信息辅助比特用来做稳定子测量。网格上每个格子对应两个稳定子测量一个检查“边界四条边上的数据比特的 Z 方向一致性”另一个检查“X 方向的一致性”。如果任何数据比特发生 X 错误或 Z 错误周围相邻的稳定子测量就会给出异常信号。表面码有什么优势第一容忍度高。近些年的研究表明表面码的容错阈值在单比特错误率百分之零点几到百分之一这个量级。目前超导量子比特的单门错误率已经能做到低于 0.1%处在阈值之内所以从硬件指标上看是可实现的。第二局域性好。表面码只需要近邻比特之间的耦合操作不需要长距离连接这对芯片布线来说是巨大的工程红利。你不需要在芯片上拉特别长的量子总线也就不需要面对随之而来的串扰和布线难度。第三结构简单可扩展。网格化的物理排布是超导芯片和半导体量子点工艺最容易实现的几何结构也让配套的调度软件更容易做自动化。但表面码的资源开销非常可观。下面第三节我们来算一笔真实的账。3. 算一笔账一个逻辑比特到底要多少物理比特3.1 表面码的距离与开销公式表面码的性能由“距离”distanced 决定。距离 d 反映的是它能容忍多少个物理比特同时出错而不发生逻辑错误。直观地看一个距离为 d 的表面码能纠正任意少于 (d-1)/2 个物理比特的错误。那么为了搭建一个距离为 d 的表面码逻辑比特需要多少物理量子比特一个常用的估算公式是物理量子比特数 ≈ 2d²。这个公式怎么来的表面码的方格网里有 d² 个数据比特网格点还有差不多 d² 个辅助比特网格点加起来大约 2d²。虽然不同实现细节会有小幅变化但这个量级是对的。比如 d 3 时大约 18 个物理比特这个规模只能做概念验证。d 5 时约 50 个物理比特。d 7 时约 98 个物理比特。看起来还行但真正的关键是“距离要增加多少才够”。3.2 逻辑错误率与距离的权衡噪声的抑制效果是随距离指数增长的。假设单物理比特错误率为 p纠错码距离为 d那么逻辑错误率 P_L 大致与 (p/p_th)^((d1)/2) 成比例这里的 p_th 是容错阈值。也就是说物理错误率每降一点或者距离每加一级逻辑错误率的下降都是非常剧烈的——但代价是物理比特按 d² 的量级增加。那么问题来了实际一个量子算法逻辑比特的错误率要压低到什么水平举个例子破解 RSA-2048 需要的 Shor 算法的电路规模非常庞大。一种常见的估计是要实现破解所需的逻辑错误率物理比特的总体规模大约需要 2000 万个。这是一个让很多人直接劝退的数字。而更保守的估计比如考虑并行化和更高效的编码仍然需要几百万到上千万个物理量子比特。如果我们换一个不那么极端的任务比如用于量子化学模拟的一个可用的逻辑量子比特假设我们需要逻辑错误率在 10^-10 这个量级。如果物理比特错误率 p 0.1%也就是 0.001那算下来距离 d 大约需要 15~20对应物理比特数大约 450~800 个。所以我们经常听到“一个逻辑比特需要上千个物理比特”这个说法并不是危言耸听。把这个数字放大到实际问题一个有用的量子算法通常需要至少几百个逻辑量子比特。按 1000 个物理比特换一个逻辑比特来算跑一个有意义的量子化学计算就需要几十万到上百万个物理量子比特。这就是“百万量子比特”共识的来源之一。下面我把几个常见规模的对比整理成一个表方便大家快速感受资源跳跃的幅度等级场景需要逻辑比特数粗略物理比特需求演示验证单逻辑比特容错演示1~21,000~2,000NISQ 应用含噪声中等规模算法10~50无完整纠错逻辑比特即物理比特50~1,000小规模容错计算量子化学模型分子100~30010万~30万Shor 算法破解 RSA-2048数千数百万到千万级注意这里 NISQ含噪声中等规模量子阶段其实还没有用上完整的纠错编码直接用物理比特当逻辑比特用所以 50~1000 个物理比特就能跑一些演示实验但结果不可靠误差无法收敛。而一旦进入完全容错阶段代价就骤然上升。这个对比其实也解释了为什么现在很多量子软件工程师都在“抢跑”算法开发——等容错硬件真的出来算法层的准备要在前面。3.3 为什么说这是“数据比特”和“辅助比特”的结构性开销表面码的开销还有另一层没有体现在 2d² 这个公式里的部分辅助比特的测量不是一次性的而是持续不断的。在整个算法执行过程中稳定子测量要周期性地、反复地执行。每做一个逻辑门要做若干轮稳定子测量来保证错误不会悄悄累积。这意味着每个辅助比特实际上一直在工作而且必须在极短的时间内完成初始化、耦合测量、读取、重置这个循环。测一次就需要几微秒到几十微秒而纠错循环的周期又必须远小于量子比特的相干时间也就是退相干发生的特征时间。这带来一个可怕的连锁反应你的物理量子比特数量按 d² 增长而每一个物理比特都要重复地被测量。测量又需要电子学控制线路每一根控制线都要从室温穿透到毫开尔文温度的超低温环境。所以真实系统中每个物理比特背后还跟着一个庞大的控制与读出设备网络。这个“隐藏开销”很多时候比芯片本身还要贵。我见过一些新入行的朋友复盘量子项目只算了芯片上有多少 qubit忽略了控制电子学、低温布线和校准的人力成本最后预算超支三倍以上。这就是只看计算资源不看物理资源造成的典型误判。4. 被低估的资源维度解码器、经典模拟墙和时间4.1 解码器藏在低温恒温器里的超级计算机量子纠错不是自动完成的。稳定子测量会输出一串错误症状接下来需要一个“解码器”根据症状推测最可能的错误模式再决定纠正动作。这个解码过程涉及图论中的最小权重完美匹配算法minimum-weight perfect matching计算复杂度虽然不是指数级但也绝不算便宜。更要命的是延迟约束。量子比特的相干时间是有限的通常只有几十到几百微秒超导体系而纠错周期必须在这个时间内完成。也就是说从稳定子测量到解码计算再到反馈修正整个闭环的延迟必须在微秒量级超过这个时间量子态就保不住了。这就产生了一个有趣的场景解码器不能放到控制室的普通电脑上慢慢算必须做到实时、低延迟。目前业界的一个主流思路是把解码算法固化到 FPGA 或专门设计的 ASIC 芯片上和量子处理器紧耦合地工作。效率最高、最先进的解码器本质上是半个超级计算机但它干的事却是别人看不太懂的“后勤工作”。所以你在估算量子计算资源时只计算量子比特数量是远远不够的。解码器的计算能力、延迟指标、接口带宽每一项都构成约束。4.2 经典模拟的算力墙一段可以自己跑的估算有时候为了调算法我们不得不在经典计算机上模拟量子系统。这就是一个很现实的“量子资源”间接体验。模拟 n 个量子比特就要存 2^n 个复数振幅。每个复数如果按单精度浮点保存用 8 个字节实部虚部各 4 字节来算总内存需求就是 8 × 2^n 字节。我写了一段极简的估算代码大家可以本地跑一下感受这个增长的恐怖程度import math for n in range(20, 41, 5): amplitude_count 2 ** n # 每个复数用单精度8字节存储 memory_bytes amplitude_count * 8 memory_gb memory_bytes / (1024 ** 3) print(fqubit数: {n:2d} 振幅数: {amplitude_count:12d} 所需内存约: {memory_gb:10.2f} GB)在实际机器上跑一跑你会发现 30 qubit 时内存就已经是 8 GB35 qubit 是 256 GB40 qubit 直接 8 TB。这只是存储状态还没算运行幺正变换需要的计算时间。这也是为什么经典的量子模拟器在 30~45 qubit 左右会撞到一堵非常硬的墙。状态空间的指数增长不是靠堆服务器能解决的它需要新的物理实现方式绕过。这个模拟墙其实反过来证明了一个道理量子计算真正的资源瓶颈是我们试图描述一个原本就指数级巨大的数学结构。你绕开不了它只能靠物理系统本身去等效地“算”它。4.3 时间本身就是稀缺资源很多人会忽略的第三项资源是时间。拿超导量子比特来说相干时间T1 和 T2通常在几十到几百微秒。这是一个极其苛刻的时间窗。你在这几百微秒里要完成量子门操作、纠缠制备、稳定子测量、解码和反馈每一个环节都必须精确到纳秒级。这不是“快点跑”的问题而是物理规律给的硬性 deadline。于是工程上出现了一个现象随着物理比特数量增加控制系统的复杂度会暴涨。每个比特需要一个或多个微波脉冲序列发生器、一个读出探测通道、一套低延迟反馈系统。所有通道都必须保持精确的时序同步任何一路信号的抖动都可能造成整个计算失效。所以一个百万 qubit 的量子计算机不只是一块大芯片而是一个包含极低温制冷、微波控制、高速解码、实时反馈的整套系统整体功耗、体积和造价都会达到数据中心级别。换句话说量子计算节省的是“计算复杂度资源”但消耗的是“工程实现资源”和“物理时间资源”。这个交换在绝大多数场景下是值得的但在某些场景下未必划算这也是为什么我们要冷静看待“量子霸权”这个词。5. 前沿软硬兼施的减负路线与个人看法5.1 降低资源压力的几个技术方向面对资源黑洞学术界和工业界都在想各种办法“减负”。第一个方向是找更好的量子纠错编码。表面码虽然稳健但开销不是最优的。近年来量子 LDPC 码低密度奇偶校验码受到追捧理论上可以把单逻辑比特的物理开销从 d² 降到接近 d也就是从平方级降到一个接近线性的量级。2021 年之后有几篇非常好的理论文章证明了这么好性能的码在理论上是存在的但目前实现难度大因为其要求的连接关系比表面码复杂得多。这属于“理论先跑、工程待追”的状态。第二个方向是物理层面的降错。如果单量子比特的错误率从 0.1% 降到 0.01%同样的逻辑错误率要求下需要的距离 d 会大幅下降物理比特总数可能缩减一个数量级。这正是超导量子比特、离子阱、光镊等各条技术路线拼命卷错误率的原因。硬件和纠错码某种程度上是同一枚硬币的两面你不能只优化其中一个。第三个方向是算法层面的优化。既然逻辑量子比特这么贵那就尽量少用他们。比如用变分量子特征求解器VQE这类混合算法虽然本质上还需要纠错但它可以把需要的量子比特数量和电路深度压到一个更低的水平。更有意思的是许多原本被认为需要完整量子计算的子程序经过重新设计后可以用更少的量子资源完成这相当于“省钱算法”。第四个方向是架构层面的创新把解码、控制、读出的电子学进一步集成化比如“冷电子学”也就是把 CMOS 电路放进低温环境中缩短与量子芯片之间的物理距离减小互连延迟。这个方向虽然在技术上是做“配角”但实际带来的系统级资源节约可能比人们想象中更大。5.2 一点真实的行业观察与建议说了这么多最后分享一些我个人的观察。第一个观察是别迷信“量子比特数量”这个指标。量子比特数只是“物理比特数”跟真正能用的“逻辑比特数”差了好几个量级。现在很多新闻说“某某公司推出了 1000 qubit 的量子处理器”听起来很猛但如果在容错编码之前这 1000 个比特并不等于 1000 个逻辑比特实际可用逻辑比特数甚至可能是个位数。判断一台量子计算机的真实水平更应该看门错误率、退相干时间、连接度、读出保真度这几个指标。第二个观察是量子计算领域的资源估算其实有非常大的不确定性。不同研究组的错误率假设差一个量级最终的物理比特需求就会差一个甚至两个数量级。所以当你看到“需要 2000 万 qubit”和“需要 10 万 qubit”这两种说法同时存在时不用觉得其中必有一个是错误的很可能只是因为双方对硬件噪声假设不同。第三个观察是这个领域现在真正缺的不是量子比特而是能在资源约束下设计算法的工程师。我见过太多人把量子算法写在“完美世界”里假设无穷多的逻辑比特、零噪声、无限门精度。真正落地的时候所有漂亮的算法都被资源约束打得七零八落。反过来看一个能在 100 个逻辑比特约束下跑出有用结果的人其价值远高于一个能在 10000 个理想量子比特上设计华丽算法的人。最后想说的是量子态、量子纠错、计算资源这三个词本质上是一体的。量子态定义了信息表达的天花板量子纠错是为触碰这个天花板而必须支付的过路费计算资源则是过路费的现实价格。理解它们之间的关系比记住任何“多快好省”的标题都要重要。