我的朋友立刻明白了这些道理,他总结道:九章是一台原理验证机。他的下一个问题是:有人说九章不能编程,所以它不是个计算机,对此应该怎么看?
我的回答是:真正的关键在于,许多人对量子计算机的编程有误解。他们以为量子计算机是在所有问题上都能超越经典计算机,就像486比386快,所以他们觉得量子计算机一定要能编程。但这完全是错的。
486跟386运行的是同样的底层逻辑,486更快只是因为它的主频更高、晶体管更小、内存更大等等。但量子计算机跟经典计算机的底层逻辑完全不同,它们的基本操作单元就不同。
经典计算机的基本操作单元是“比特”,即一个体系有且只有两个状态。好比一个开关,它只有开和关两个状态。量子计算机的基本操作单元是“量子比特”(qubit),它好比一个旋钮。旋钮跟开关的区别是什么?它不是只有两个状态,而是有无穷多个状态。
用数学语言来表述,如果一个量子比特能处于|0>和|1>两个状态,那么它也能处于这两个状态的任何叠加态,即a|0> + b|1>。这里的a和b是两个数,|>叫做“狄拉克符号”(Dirac notation),在其中填上任何的数字或字母就可以表示一个量子力学的状态。
经典计算机的基本操作,是对比特进行的。例如把0变成1、把1变成0,这叫做“非门”(NOT gate)。
经典门
量子计算机的基本操作,是对量子比特进行的。例如把a|0> + b|1>变成b|0> + a|1>,这叫做“泡利-X门”(Pauli-X gate)。
量子Hadamard门
所以你看,量子计算机跟经典计算机的编程完全不是同样的意义。经典计算机的算法都是人用手算可以实现的,只是算得慢点。而量子计算机的算法是人用手算无法实现的,因为基本操作就不同。
量子计算机超越经典计算机的关键,在于量子算法。对于某些问题,我们设计出了快速的量子算法,例如因数分解,这时它们就可以远远超越经典计算机。而对于另一些问题,我们没有快速的量子算法,例如最基本的加减乘除,这时量子计算机就没有任何优势。
所以,量子计算机的用处就是解决某些经典计算机难以处理的问题,而不是解决所有的问题。许多人以为量子计算机将来会取代经典计算机,这是误解。无论量子计算机进步到什么程度,它都不会完全取代经典计算机。正确的前景是,量子计算机跟经典计算机联合使用。
因此,量子计算机只要在一个问题上超越了经典计算机,它就是有价值的。这正是九章和悬铃木的成就。在当前阶段,编程并不是主要目标。
事实上,光量子计算机首先在原理上是可以实现编程的。然后,现在的九章可以部分的编程,这可以通过调整实验中光的强度、干涉仪的透射率、反射率等参数来实现。潘建伟指出,九章的下一步,就是要成为一个可完全编程的计算机。
上海纽约大学计算机教授张峥表示,大众理解的“编程”是码农写程序,而九章和悬铃木的编程指的是硬件的“重构”(reconfiguration)。前者是用程序指令调动计算机的硬件资源,包括计算和存储,而后者有点像用乐高积木根据任务搭一个硬件。这两者的编程在目前并不在一个层面上。
潘建伟和张峥介绍量子计算机的编程《科学不避争论:众学者激辩量子计算九大问题》
我的朋友完全明白了这些道理,然后用自己的语言总结了一番,可见确实是理解了。我很高兴为这位朋友解答了问题。如果大家都有这样的思考能力和学习能力,我们的社会将会进步得多么快啊!
(本文原载于微信公众号“风云之声”,观察者网已获授权转载。)