# 量子力学21：量子计算难在哪？

![](https://piccdn3.umiwi.com/img/202008/09/202008092229216603590940.jpeg)

你现在是否同意，量子通信并不能改变世界 —— 它甚至都不能改变“通信”，它最多最多只能用来做一个备用的加密手段。那么“量子计算”，能改变世界吗？

现在说还是太早了，我不知道量子计算能不能改变世界，但是我觉得量子计算的确可以改变“计算”。不过我们这一讲仍然不全是正能量。我看有些报道已经把量子计算机给说成了是“下一代”计算机，好像要掀起一场革命，完全取代现有的计算机一样，这是根本不懂行的说法。不管怎么发展，在可以想见的未来，管理你银行账号的，将不会是量子计算机。

量子计算机并不是下一代计算机，而是“另一种”计算机。它的使命不是取代传统计算机，而是去完成一些特殊的任务。如果有人说“机器人对战”将会取代现在的拳击比赛，我认为这不管对不对，至少是符合逻辑的；但要是说机器人对战能取代“体育”，那就是既不懂机器人对战，也不懂体育。

有时候你只要抓住一个事物的特点，就能对它的宿命做出一定的判断。技术是在不断进步，但是有些根本的特点永远不变。量子计算的特点，既是它超凡的优点，又给它带来了难以克服的困难。

*

**量子计算，是利用“量子叠加态”做计算。**

传统计算机的最小信息单位叫“比特（bit）”，一个比特上的信息*或者*是 0，*或者*是 1。不管是早期计算机的电子管开关也好，还是现代计算机的晶体管电压高低也好，都是用物理方法描写 0 和 1 这两个状态。把 0 和 1 的开关操作连接在一起做成逻辑门，再把逻辑门连接成 CPU，这样一层一层搭起来，这就是计算机 [1]。

量子计算的最小信息单位，则叫做“量子比特（qubit）”，它可以是 0，可以是 1，更可以*既是* 0 *又是* 1：它可以处在 0 和 1 的量子叠加态。现在你对叠加态已经很熟悉了，比如一个量子比特的态函数是 

![](https://piccdn3.umiwi.com/img/202008/09/202008091913410159473101.png)

那么它就有 30% 的可能性被观测成 0，70% 的可能性被观测成 1。传统的比特只能代表 0 或者 1，而量子比特则可以既代表 0 又代表 1。这是一个重大好处。

比如我们考虑三个比特，它们的状态可以是 000、001、010、011、100、101、110、111 一共八种。每三个传统比特可以代表 0 到 7 这八个数之中的一个，比如说 011 = 3。你要想把八个数都写下来，你需要 3×8 = 24 个比特，对吧？

但是三个量子比特，却可以代表从 0 到 7 这八个数中的*每一个*。使用态函数

![](https://piccdn3.umiwi.com/img/202008/09/202008091914152690233777.png)

它有一定的概率被观测到其中任何一个状态 —— 也就是 0 到 7 中的任何一个数字。而你只需要三个量子比特。

这就是量子计算的最根本优势。3 个量子比特可以代表 8 个数，N 个量子比特可以代表 2^N  个数。这是不可想象的力量！只要用上几百个量子比特，你就能代表比宇宙中所有原子还多的数。

传统计算是把这些数一个一个地算，而量子计算则是把这些数一起算。比如你有 32768 （32768 = 2^15） 个东西要做同一种计算，你用 32768 个数字代表它们。传统的计算机，你需要至少 15 个比特代表其中一个数，你理论上要对 15 个比特做 32768 次同样的操作。而如果你有 15 个量子比特，你就只需要对它们操作一次！

那你说量子叠加态不都是概率吗？一次操作的结果怎么能保证代表性呢？这就是为什么我说量子计算只适合特定的问题。

*

哪怕你只有一个量子比特，你也可以做一件传统计算机根本做不了的事情：生成真正的随机数。传统计算机都是使用数学算法，算出来的都不是真的随机数，而是所谓“伪随机数”，生成的太多了还是有可能被人抓到规律。量子力学里的随机是真随机，具有绝对的不可预测性。所以量子计算机最直接的用处就是……模拟量子力学过程。最早提出量子计算机设想的人是费曼，而费曼的建议就是用它去模拟量子力学过程。

但是模拟量子力学过程可不容易赚到钱。你得能做人们很想做、传统计算机又很难做的事情才行。1994 年，麻省理工学院的数学家彼得·秀尔（Peter Shor）发明了一个用量子计算机分解质因数的算法，叫“秀尔算法（Shor's algorithm）”，它比传统计算机最快的算法要快得多 [2]。传统算法是使用一个聪明的办法让可能的质因数一层层地筛选出来，而秀尔算法则是同时尝试所有可能的质因数 —— 错误的答案在这个量子力学体系中会发生相消干涉，自动给你留下正确的答案！

1996 年，计算机科学家洛夫·格罗弗（Lov Grover）又提出了“格罗弗算法”，能以很高的概率，从一大堆可能的输入值中快速找到能得到特定输出值的那个解。传统计算机面对这个问题只能把那些输入值一个一个地试，而量子计算机却可以一起试。

人们从此开始严肃对待量子计算机，因为这些算法意味着量子计算机可以用比传统计算机快得多的方式破解现行的加密系统，比如现在最流行的 RSA 公共密钥体系。当然，正如我们上一讲所说，RSA 只是加密方法的*一种*，传统加密并不真的害怕量子计算机……但是人们需要的仅仅是一个借口。量子计算机这么好的东西肯定有用，你需要探索精神。

以我之见，量子计算机最擅长的是给你出一个概率结果，最适合的则是面对一大堆可能性 —— 传统计算机必须一个一个做重复运算的时候 —— 量子计算机可以同时对所有可能性做运算。科研中有大量这样的事情，比如说物理学家可以用量子计算机模拟复杂的物质结构和气体运动，化学家可以用它模拟大分子的行为和化学反应，而这可以用在比如说生物制药上。事实上现在化学家已经成为第一拨用量子计算机干实事儿的人 [3]。在企业界，空中客车公司已经在用它寻找飞机起降的最优路径，大众公司在用它优化城市交通路线，Google 会把它用在人工智能上。

而这些计算模拟只能给你一个“大致的”结果。我们已经习惯了传统计算机的精确性，但是量子计算机通常只给概率。每一次运算完毕，当你读取运算结果的时候，系统的总波函数会坍缩到一个特定的值，所以做一次是不够的。用量子计算机做模拟就好像用电子做双缝干涉实验一样，你必须把运算做上成百上千次，从所有的结果中找一个统计规律。当然，考虑到量子计算的巨大优势，多算这么多次也还是很便宜。

*

为了得到一台量子计算机，你必须能稳定地制备若干个量子比特，让他们互相之间保持相干性，然后把它们连接成量子逻辑门，然后把逻辑门封装成处理器 —— 相当于传统计算机的 CPU。科学家很厉害，Google 公司已经把量子处理器给做出来了。

![Google 的 Foxtail 量子处理器。图片来自 technology-info.net](https://piccdn3.umiwi.com/img/202008/09/202008091915161068058942.jpg)

截止到 2019 年的最新水平，Google 的量子处理器有 53 个量子比特。它们是用超导金属实现的，两个能级代表 0 和 1，用芯片连接在一起。为了保持超导特性和量子相干性，这个芯片要放在一个低温恒温器（叫 cryostat）里，保持一个接近绝对零度的温度。整套设备的体积，能占据一个小房间。

![整个大小是这样的。图片来自 Euronews.](https://piccdn3.umiwi.com/img/202008/09/202008091915579235259016.jpg)

但这可是整整 53 个量子比特啊！Google 用它们做成了一个里程碑式的成果，叫做“quantum supremacy” —— 有的中国媒体把它翻译成“量子霸权”，好像 Google 在量子计算领域可以制霸全世界一样，其实不是那个意思。这个成果准确来说应该叫“量子优越性”，意思现在终于在有这么一个问题上，量子计算机做的比传统计算机好。

不过那个问题其实是 Google 专门为量子计算机定制的：想象我们有一组特别特别多的随机数，把这些随机数的组合进行一百万次某种操作之后，结果将会满足一个特定的概率分布，请问那个概率分布是什么？传统计算机做这件事必须一个一个算，哪怕用最先进的超级计算机也得算上一千年；而 Google 这台量子计算机因为可以把所有的随机数一起算，它只需要 200 秒 [4]。这个问题对真实生活没啥用，但是它的确证明了量子计算机的优越性。

这仅仅是开始。传统计算机的发展有个摩尔定律，说计算机算力随着时间是一倍一倍地往上翻。美国量子人工智能实验室（Quantum Artificial Intelligence Lab）的主任哈特穆特·尼文（Hartmut Neven）提出了一个“尼文定律” [5]，说量子计算机算力的增长要比传统计算机快得多，是双指数增长：1，2^(2^1)，2^(2^2)，2^(2^3)，2^(2^4)……这样，那也就是说可能你昨天还感觉不到它的存在，明天它就已经改变世界了。

但是先别太乐观，量子计算的有一个重大缺陷，让一些人感到很悲观，那就是纠错。

*

量子计算因为有个退相干的问题，出错实在太容易了。像 Google 这个量子优越性的演示，最后结果中只有 1% 是有用的信号，剩下 99% 都是噪声，这样的信噪比对传统计算机是不可想象的。

只要是计算，就有一个纠错问题。传统计算机的纠错方法是制造冗余，比如这段信息只需要三个比特，那我用九个，左右两边各做一个备份，读取信息的时候少数服从多数。可是量子计算里不能这么做 —— 因为量子比特不可复制！这里面有个“量子不可克隆定理（no-cloning theorem）”，说你要复制一个量子态，就必须破坏这个量子态。

科学家还是找到了能在不观测量子态的同时又能判断它是否出错的方法。对每一个真正做计算的“逻辑量子比特”，都要用若干个辅助的量子比特去跟它重重纠缠，通过巧妙的设计，你可以通过观测一个辅助量子比特来判断那个逻辑量子比特是否出错了，出错了就用微波把它翻过来 [6]。

这个说着简单，但是在应用上有惊人的困难。你要真想把用秀尔算法破解 RSA 体系这件事儿给实用化，考虑到逻辑门的搭配，大约需要 1000 个逻辑量子比特 —— 而为了保证出错率足够低，你对每一个逻辑量子比特，必须给配备 1000 个辅助量子比特。这就意味着你这台量子计算机得有一百万个量子比特。

**一百万对传统计算机来说是个小数，但是对量子计算机可就太难了。如果纠错方法没有突破，真正实用的量子计算将会遥遥无期。所以有人说的好：“纠错不是量子计算的下一步，而是下 25 步。”**

跟玻尔爱因斯坦那一代人相比，我们已经幸运地看到了量子力学后来的进展 —— 而我们还需要再幸运一点，才能看见带有“量子”这两个字的产品真正改变世界。

## 划重点

量子计算的特点，既是它超凡的优点，又给它带来了难以克服的困难。
量子计算机最擅长的是可以同时对所有可能性做运算，但纠错方法是个还没有突破的难题。


![](https://piccdn3.umiwi.com/img/202008/09/202008091917200888177193.jpg)

