 千禧之交,量子计算机横空出世。任何名词,前面加上量子,就有两个特点:高端和看不懂。本文为了避免看不懂的情况,特意在量子纠错中间加了两个字“怎么”,缓冲一下。我假设读者已经有一些量子力学基础,比如知道叠加态是什么。如果您没看过量子力学,又觉得本文有趣的话,请一定告诉我。
经典纠错想了解量子纠错(quantum error correction),不妨先来看看经典纠错(classical error correction)。自从Shanon发明比特(bit)以后,经典编码或者经典纠错就存在了。储存和发送信息依赖物理媒介来完成,这个过程总是有可能出错的。为了保证信息的完整,我们需要一些冗余来告诉我们有没有出错,哪里出错了。我们现在经常讨论的5G,6G技术,其实也是纠错码的一种。不同的纠错码,代表着不同的设计冗余的方式。这里我用一个简单的例子,重复码(repetition code),来说明经典纠错是如何实现的。每当我们想发送一个比特,我们都重复三次。这样1就变成了111,0就变成了000。有一个逻辑比特的信息和两个比特的冗余。如果其中一个出错了,比如111变成了110,我们就说第三个比特出错了,1变成了0。我们纠正回111,并得到一逻辑比特的信息,也就是1.那读者可能会问,如果两个比特错了怎么办呢?比如000的前两个比特出错了,就会变成110,那样我们读取的时候就会误认为第三个比特出错,纠正成111,并得到错误的逻辑比特信息1而不是0. 这怎么办呢?答案就是凉拌,不去管它。这是有数学道理的。在上面的例子里,我们可以看出来重复码可以纠正任何单个的错误,但是不能纠正两个或以上的错误。如果每个物理比特的出错概率是p,那么同时出现两个错误的概率是3p^2,同时出现三个错误的概率是p^3。也就是说,解码错误的概率正比于p的二次方。重复码利用出错概率为p的物理比特创造了一个出错概率为p^2的逻辑比特。这可是指数型的降低,如果把逻辑比特作为物理比特再次使用重复码,这个出错概率很快就会降为0.经典v.s.量子重复码率很简单,也很低效,因为只有一个逻辑比特。随着经典编码的发展,现在的编码方式的表现要好得多了。通过这个简单的例子,我们看到了经典纠错的几个特性:- 比特是离散的,只有1和0两个取值,也只有一种错误,就是翻转。
如果大家了解过一些量子物理的话,就知道以上三点都是量子世界里不允许的。首先,在量子的世界里,态可以是叠加的。一只猫不一定非得是黑猫或者白猫,而可以同时是黑猫和白猫,各有一定的概率。量子叠加态就是说这两个状态以一定的概率同时存在。因为量子态包含了概率的问题,不同的概率就意味着是不同的态。也就是说系数和的任何微小变化都是一个错误,而不像经典世界里只有0变成1,1变成0。量子态是连续的。再说测量。处于量子叠加态的猫储存了信息,也就是这个概率。为了保护这个信息,我们要不先测量一下准不准?可是量子态一经过测量就会以相应的概率塌缩到一个本征态。我们一去观察这个猫,只会看到一种颜色的猫,而且这只猫会一直保持这个颜色,原来的概率信息丢失了。也就是说,一旦测量,我们就损坏了要保存的信息。可是不测量,我们从哪里得到信息来纠错呢?最后就是量子不可克隆原理了。比特和羊都可以克隆,量子态不行。量子态只可以从一个物理量子比特转移到另一个物理量子比特,但原来物理量子比特上的信息就会消失。不管如何变化,一个量子态都不能复制成两个量子态。别问为什么,量子的世界就是这么霸道!量子纠错1980年左右,费曼等提出了量子计算机的概念:既然自然界是量子的,为什么不用一个量子计算机来解决自然界的各种难题?理想是美好的,现实保持沉默了十几年,大家都不知道量子计算机能用来干什么。直到1994年,Peter Shor提出了质数分解算法。将RSA加密算法依赖的大数分解问题从原来的指数解法降低到只需要多项式的时间。RSA之所以安全就是打赌人们下辈子也解不出来这个算法,可是Shor说,我这辈子就可以解出来。Shor算法一出,其他各种算法也层出不穷,纷纷证明了量子计算机的优势和潜能。理论上的进步可喜可贺,可是这些算法都是理想算法,基于可以无限供应的完美的量子比特。实验室里是造不出来的,其实理论上也做不出来。噪声是量子控制的必然产物,那怎么克服上文提到的三个障碍来进行纠错呢?英雄再次登场,在接下来的1995年Shor提出来Shor's 9-qubit Code。Shor把一个逻辑量子比特的信息编码在九个物理量子比特的纠缠中。九个量子比特的希尔伯特空间的维度是,Shor从中选取以下两个态来作为逻辑量子比特的基态。 测量这些算符不会改变逻辑态的信息。比如测量Z_1Z_2,也就是测量前两个物理比特的Pauli Z,它只会告诉我们这两个物理比特是否是一致的。而不管是000还是111,前两个都是一致的,因此所有的逻辑态都会给出一样的结果。假设错误出现了呢?比如一个X error出现在第二个比特上。那逻辑态就会变成 这时如果我们测量Z_1Z_2,它就会告诉我们前两个比特是不一致的。进一步测量Z_2Z_3,我们发现第二个和第三个比特也是不一致的。根据少数服从多数的原则,我们推测第二个比特发生了翻转,也就是X_2 error,并予以纠正,恢复原来的逻辑态。初步了解了Shor's code的储存、测量、和纠错过程。现在我们复盘一下,它是如何克服之前提到的三个困难的。复盘在量子态里,任何微小的变化都意味着出错了。但是在上面的例子里,我们只纠正了翻转错误X。另外还有没提到的相位错误Z。只要能纠正X和Z错误,我们就能纠正所有的错误。因为,,和构成了一组完备的基,足以描述的任何演化。这可以认为是一个数字化量子计算机的过程:系数的连续演化变成了离散的态。(我想说明这只是数字化纠错的过程,量子态还是连续的。)Shor也实现了测量,为什么态不塌缩呢?严格来说,这是因为选取的逻辑态本身就是本征态。别的态会塌缩成本征态,可本征态不会再次塌缩。也可以用形象的话来说明,用测量算符举一个例子。通过测量,我们只能知道前两个比特是否一致,这对逻辑态和来说是没有区别的。也就是说,不管测量结果如何,不管前两个比特是否一致,我们都无法区分逻辑态是处于逻辑态还是逻辑态。因为我们没有得到任何关于逻辑态的信息,因此这个测量不会损坏信息。我们只是测量是否出错,并予以纠正。最后,Shor也没有克隆量子态。虽然使用了9个物理比特,这里也只有一个逻辑态,只是它储存在了九个物理比特的纠缠中。Shor's Code打开了量子纠错的大门,也给量子计算提供了希望和动力。随后各种纠错码如雨后春笋般出现,比如玻色子码,稳定子码等等。稳定子码又包括拓扑码和低密度奇偶验证码(LDPC code)。实验上也迅速发展,近期已经实现了Bacon Shor Code,是Shor Code的变种,可以同时纠正X和Z错误并储存一个逻辑态。文章篇幅有限,敬请期待下期“toric code:甜甜圈如何成为网红”
|