量子计算可能是计算领域的下一件大事情。每次关于量子计算的新闻都能引起程序员们对于世界是否会被颠覆的讨论。幸好上帝似乎把这个门槛弄得很高,世界才能继续按照今天的规则运转。既然可能死在这上面,最好搞清除是怎么回事。可是我对量子力学的理解力也就限于《原子中的幽灵》那种科普水平了。加上五年里断断续续看到的文章,此文的一多半纯属猜测。
五年前我对量子计算模模糊糊的理解是利用量子的状态叠加特性,实现天然的并行计算,以至于能在多项式时间计算某些 NP 问题。但是,既然量子状态叠加会在被观察的一瞬间塌陷,所谓天然的并行计算带来的绝对好处也只能存在于结果产生之前。在从输入到结果的整个宏观态过程中,必然有一些缺陷来抵消天然并行计算的绝对好处 —— 这个缺陷是什么,这是五年来我对量子计算的疑惑。最近几个月根据新看的资料慢慢猜测,这个缺陷可能就是量子计算的结果并不能保证每次都正确,正确的概率是一个比较接近于一的数值。至于计算结果的不确定性是怎么和状态塌陷过程联系起来的就超出了我的理解能力。但是一般来说,用一种缺陷换取一种好处,已经是普通人能理解的宇宙准则了。基本上大多数人考虑一件事情如何影响自己的生活也只需要这种程度。
虽然量子计算的结果是不确定的,但庆幸的是验证一个给定的结果是否正确一般非常容易。比如,解一个二次方程,和验证一个数是不是一个二次方程的解,显然后者更容易。(但是也有极少数人相信两者一样容易。大多数人相信后者更容易,但迄今无人能证明。这就是著名的 P != NP 问题。)所以重复运行几次量子计算求解加经典计算的验证就能正确解决某些 NP 问题,虽然过程要重复几次并且需要额外的验证步骤,但是这些低阶的开销不会妨碍计算过程的时间复杂度仍然保持在多项式级别。
因此基本上,量子计算类似 GPGPU 计算这样的机制,能解决特定问题,但是不能解决通用计算的所有问题。就像编译器不可能用 GPU 加速,大概应用程序 UI 的代码也不会量子化。量子计算必须依靠经典计算的辅助(就像 GPGPU 需要依靠 CPU 的辅助)。等到量子加速芯片放到 MacBook Pro 里的那一天,世界不会被颠覆,只是系统中会多一套叫做 OpenQL (Q 是 quantum 的 Q)的开发框架。
发表评论