哪几类问题才算难
计算机做的大多数事情,它都做得很好。整理你的照片、播放视频、跑一张电子表格——经典机器把这些处理得漂漂亮亮,而量子计算机在这些任务上反而会更糟。所以在谈量子之前,不妨先留意一点:只有*一小撮、很具体*的一类问题,才是经典计算机真正啃不动、而且在这里值得关注的难题。
有两个例子反复出现。第一个是大数分解:给你一个 600 位的数,它是两个大质数的乘积,要找出这两个质数,经典计算机花的时间可能比宇宙的年龄还长。今天互联网安全(RSA)的很大一部分,靠的正是这个难度。第二个是模拟量子系统——分子、材料、化学反应。自然界在微观尺度上遵循量子规则,而要追踪一个并不算大的分子的行为,所需的经典记账量增长得飞快,连最大的超级计算机都会卡死。
量子计算机是什么(又不是什么)
经典比特要么是 0,要么是 1。而一个 量子比特 可以处于两者的 叠加态——但请仔细读这句话,因为炒作正是从这里开始的。叠加并不意味着量子比特偷偷地同时是 0 和 1,也不意味着它悄悄地把每一种可能都试了一遍。一个量子比特的状态由两个被称为*振幅*的数来描述,一个挂在 0 上,一个挂在 1 上,而这些振幅可以是正数、负数,或者复数。
|psi> = a|0> + b|1>, with |a|^2 + |b|^2 = 1
最后这一点,才是诚实的玄机所在。无论你把振幅安排得多么巧妙,当你测量时,你得到的是一个单一的经典答案——一串 0 和 1——叠加态随之消失。你没法把所有可能性都读出来。所以量子计算机并不是一台握着一百万个答案、再把最好的那个递给你的机器。它是一台能把振幅安排好的机器,好让你测量的那一刻,你想要的那个答案,正是最可能蹦出来的那个。
加速到底从哪儿来
真正的引擎是干涉。因为振幅可以是负数(或复数),通往错误答案的那些路径可以相互抵消,而通往正确答案的那些路径则会累加起来。一个量子算法,本质上是一段精心编排的舞步:你先搭起一个叠加态,再用各种操作轻推振幅,让错误的结果发生相消干涉,然后你测量——指望幸存下来的那个振幅,正好指向答案。
这也正是为什么诚实的加速有*不同的量级*,以及为什么单凭「量子」这两个字几乎说明不了任何事情。Grover 搜索 带来的是平方级加速:在一个无结构的 N 项空间里搜索,它需要大约 √N 步,而不是 N 步。这很实在、很有用——但如果一次经典搜索要花一万亿步,量子大约要花一百万步,而不是一步。那种抢眼的指数级加速则要稀罕得多,而且需要有*结构*可供利用:Shor 分解算法 之所以管用,是因为分解暗中藏着一个重复的模式(一个周期),量子计算机能把它检测出来,从而把一个宇宙年龄量级的问题变成一个可以应付的问题。
一段简短而诚实的历史
这个想法比大多数人以为的要古老。1981 年,物理学家理查德·费曼指出,在经典计算机上模拟量子系统看起来希望渺茫——并提出:如果你想模拟本质上是量子的自然界,也许你需要一台它本身就是量子的计算机。这一下子重新定义了目标:要的不是一台更快的计算器,而是一台会说自然母语的机器。
1994 年,彼得·肖尔把一种潜力变成了一种压力。他证明了:一台足够大的量子计算机能够高效地分解大数——这直接威胁到 RSA,以及保护着大半个互联网的公钥密码学。一夜之间,这不再只是物理学上的一个好奇心;它关乎现实世界的利害,于是大笔的资金和精力随之而来。
这条学习线会教什么(又不会教什么)
在接下来的几篇指南里,这条学习线会从最基础处一步步搭起你的直觉:量子比特到底是什么,叠加和测量实际上是怎么表现的,简单的操作(门)如何重塑振幅,以及干涉是如何被驾驭进算法里的。我们会反复回到同一个诚实的问题上——*优势究竟从哪儿来,又有多大?*——这样你就能读懂任何一条量子新闻标题,并且自己来判断它。
这条学习线不会做的,是塞给你炒作或者硬核数学。你不需要线性代数或物理基础就能上手;我们以图示和大白话开路,并且总会告诉你:某样东西到底还只是一个研究上的承诺,还是一个已经能用的成品。到最后,你不会真的去操作一台量子计算机——但你会明白它能做什么、不能做什么,而这一点,比听起来要稀罕、也更有价值。