这是一篇译文,原文地址:https://www.quantamagazine.org/why-is-quantum-computing-so-hard-to-explain-20210608/
欢迎关注我的公众号:ReadingPython
你可能听说过,量子计算机是一种魔法般的超级装备,通过在平行宇宙中穷尽所有可能,很快就会帮我们治愈癌症,解决全球变暖问题。
15 年来,不论是在自己的博客上还是在其它场合,我都在抨击这种天真想法,试图告诉大家我所知的更精微,但也更精彩的真相。这是我作为一个量子计算研究者的公共义务,乃至于道德责任。
不幸的是,我的工作几乎是徒劳的:这些年来,随着大公司与政府部门在这个领域的巨量投资,业界已经能制造出 50 个量子位的可编程设备,(按某种标准说)好像就能帮助他们挣回这些钱来了。于是,就像加密货币、机器学习以及其它时髦领域一样,热钱涌入,关于量子计算机的尴尬宣传也逐年升温。
当然,我也理解。哪怕没有外界的纷扰,想在抛开数学的情况下简洁明白地说明什么是量子计算也是很困难的。因为对量子电动力学的贡献,领域先驱理查德·费曼拿到了诺贝尔奖,要是几句话就能说清楚,恐怕也不值得发个诺贝尔奖了。
但大家还是想以尽量通俗的方式说明什么是量子计算。自从 1994 年彼得·肖(Peter Shor)发现量子计算机能破解互联网上的大多数加密算法之后,对这个领域的探索就不再只由科学好奇驱动了。事实上,相对于科学好奇,商业与技术色彩要更为浓厚。
从商业或技术角度,他们可能会真诚地说,“量子计算的背后是艰深的量子力学,大家只需要理解:物理学家们很快就能制造出超级快的,能给所有事情带来一场革命的计算机了。”问题在于,量子计算机并不能给所有事情带来一场革命。
没错,在一些特定问题上,量子计算机可能在几分钟内解决(我们认为)传统计算机算到世界末日也解决不了的问题。但也有许多重要问题,大多数专家认为,量子计算机相对传统计算机并无优势。
虽然 Google 和一些相关方声称自己的量子计算机在性能上已经超过传统计算机,但这只是以一个特定的、晦涩难懂的标准来说的(我也参与了这个标准的制定)。要制造出一台性能超过传统计算机,足够大、足够可靠的量子计算机,并应用于密码破解或化学模拟,还有很长一段路要走。
为什么一台可编程计算机只能在部分问题上比其它计算机快呢?我们知道它在哪些问题上比较快吗?以及,前面说的“足够大、足够可靠”是什么意思?要回答这些问题,我们需要了解一些更深的东西。
我们从量子力学说起(还有更深的东西吗?)。量子叠加的概念很难用日常语言描述,因此,毫不意外地,许多作者采用了一种简易的描述方式:叠加态就是“同时”,也就是说,一个量子比特,或量子位,可以“同时作为 0 和 1”,而一个传统比特位只能是确定的 0 或者 1。他们进一步解释说,利用量子位的叠加态,可以同时,或者说并行尝试所有可能答案,从而实现量子计算机的高性能。
我认为,这是量子计算科普中最基本的误会,所有其它误会都由此而来。抱着这个误会,我们可能会以为,量子计算机可以通过穷尽所有方案快速解决旅行商问题——而几乎所有专家都认为,这是做不到的。
关键在于,对一台可用的计算机来说,你总要在某个时刻读取输出。如果计算机输出的是所有可能答案的等量叠加,根据量子力学的基本原理,在一个特定时刻,你就只能读取其中一个随机答案。但如果你要的只是一个随机答案,干嘛还劳烦计算机去计算呢?
其实,量子叠加的真正意思是“复线性组合”,这里的“复”不是“复杂”的“复”,而是“复数”的“复”,而“线性组合”的意思是把多种不同状态加总在一起。每个量子位都有一个复数表示的振幅,指向它为 0 的概率,同时也有一个振幅指向它为 1 的概率。这些振幅与输出结果被观测到的概率紧密相关,某个结果的振幅越偏离 0,我们观测到该结果的概率越高。准确地说,这个概率等于偏离距离的平方。
但振幅与概率终究是两回事,它们遵循不同的规则。例如,如果振幅的某些因子是正的,某些因子是负的,它们就会相互抵消,使振幅为 0,相对应的结果就不会被观测到。而相同的因子也会相互强化,提高我们观测到对应结果的概率。
量子计算机的算法设计,就是设计一种模式,使错误结果的相关因子相互抵消,而正确结果的相关因子相互强化。当且仅当我们能设计出这种模式的时候,我们才能在观测的时候有更大概率看到正确结果。
麻烦的是,在设计算法时,我们没法提前知道正确答案,同时又要让新算法算得比传统计算机更快。
27 年前,彼得·肖发现了整数的指数计算问题的量子计算模式,由此破解了互联网上的许多加密技术。现在,我们也知道了一些其它问题的量子计算模式。但这些都是通过探索这些问题中的特殊数学结构实现的,绝不只是所谓的同时尝试所有可能答案的结果。
另外,要讨论量子计算,你还得知道一些计算机科学的基本概念。经常有人问我,量子计算机比传统计算机快多少?百万倍?千万倍?提问者没有意识到,量子计算的优势只有在规模化,或者说,输入数据增长的情况下才有意义。
如果在传统算法下,解决一个问题的步骤数 n 呈指数增长,而在量子计算中,步骤数为 n 的平方。此时,对于较小的 n,使用量子计算反而会拖慢计算速度,增加计算成本。只有 n 增长到一定数量之后,采用量子计算才有优势,并随着 n 的增长而不断扩大其优势。
然而,我们怎么知道传统算法本身是不是还有改进空间——是不是有一个与量子计算的性能相似的算法呢?这个问题通常不被大众所关心,却是量子算法研究中的核心问题。我们碰到的困难往往并不在于证明量子计算机很快,而在于证明传统计算机不可能如此之快。
正如著名的 P 与 NP 问题(粗略地说,一个有多个判定项的问题是否能快速解出)所展示的,证明问题很难本身是尤其困难的。这并不是什么乏味冗长的学术讨论:在过去几十年中,由于相似性能的传统算法被发现,一些量子计算的性能优势已经消失了。
注意,目前为止,我还没提到制造量子计算机所面临的实际困难。简单地说,这个困难就是退相干(decoherence),意思是避免量子计算机与周围环境——如附近的电场、热源及其它会记录量子位信息的事物的交互。这种交互会导致量子位被过早“观测”,从而使其坍塌为普通的确定为 0 或 1 的比特位。
解决这个问题的唯一已知方案是量子纠错(quantum error correction):1990 年代中期提出的一种方案,将量子计算中的每个量子位编码为十几个乃至上千个额外量子位的集体状态。不过这种方案才刚在实验室中实现,付诸应用还需要很长一段时间。
因此,当你在新闻上看到最新的 50-60 个量子位的计算机的时候,需要知道,这些量子位是未经纠错的。在纠错方案跟上之前,我们不太可能达到几百个量子位的规模。
我想,只有在理解这些概念之后,一个人才能读懂——或者讲述——量子计算的最新进展,才知道如何区分现实与宣传,才清楚该关心哪些问题。理解这是概念还是可能的——毕竟,这也不是什么火星科技,只是量子计算而已!
ReadingPython:编程技术相关,优质内容翻译与阅读分享为主