量子计算机的BUG之量子计算的脆弱性
量子计算在理论上相对于经典计算在特定的问题上有指数级的计算优势,但将它应用于实际却离我们还很遥远。从物理上实现量子计算的最大困难在于量子信息的脆弱性。
通常,我们会将可操控的、可测量的微观二能级系统作为量子计算机的最基础元件——量子比特,比如离子中的两个电子能级和超导电路的两个震荡模式。然而,操纵和测量都需要将这个微观系统与某个宏观系统耦合,这样就会不可避免的让量子信息慢慢的被宏观世界中的噪声所干扰。因此,虽然现在我们可以造出搭载几十个量子比特的芯片,但在对它进行了几百次诸如与非门的操作后,它原本的信息就已经丢失的差不多了,我们也就无法得知最后的计算结果。
解决这个问题通常有两种方法。一种是从物理层面优化量子比特所处的环境,让它所受的干扰尽可能的小,同时减少操作时引入的错误,让门操作的保真度尽可能地提高。但这种方法往往提升有限,无法保证是否能够达到实际算法的需求;而现在,能够实现的最低的错误率距离真正可以应用还相差了10个数量级左右。因此,另一个方法,量子纠错,看上去是通往实用量子计算的必经之路。
量子纠错对错误有个假设:量子系统中发生的错误是局域的。这意味着如果系统中只有一个量子比特发生错误的概率为p,那么两个比特同时发生错误的概率会正比于P2。基于这个假设,我们可以把量子信息编码到一个更大的系统中,让它不受局域的小错误的影响。这在经典计算中也有类似的对应。举一个最简单的例子,我们可以用三个比特编码一个逻辑比特,把逻辑0编码为000,把逻辑1编码为111,这样如果其中一个物理比特发生了错误,比如000变成了001,而111变成了110,我们仍然可以用多数表决的方式将001识别为逻辑0,110识别为逻辑1。现在,只有两个物理比特同时发生错误时,逻辑比特才会出错,而这个概率是个二阶小量,并且,我们可以通过继续增加比特数的方式来指数倍的降低错误率。量子纠错也是类似的原理。理论上,只要对物理比特的门操作错误率低于某个阈值,通过继续增加比特数的方式,就能让逻辑比特的错误率任意小,这样就能真正的满足任何一个量子算法的需求。
量子纠错码也分为很多种。目前超导量子计算领域内理论最成熟的是表面码。它在物理上比较容易实现,每个比特只需要和近邻的四个比特耦合,因此将比特排列在一个表面上就能够实现,非常契合现在成熟的半导体工艺。其次,它要求的物理比特错误率的阈值也是最宽松的,如今超导领域最好的门操作保真度已经达到了这个阈值。理论上说,现在只需要运行表面码的纠错就能够实现量子计算,但现实还没有那么简单。如果想要实现著名的Shor算法,以现在的保真度计算,我们需要将几千个物理比特编码为一个逻辑比特,而运行整个算法分解一个22000次方的大数,则需要约两亿个物理比特。这远远超出了现在的能力水平。又由于将此编码应用于实验会牵涉到很多的细节问题,至今甚至连最小的表面码(只需17个物理比特)的实验还未有人完成。