本文档翻译D-ware公司的《Quantum Computing Primer》,其中存在的不足或错误欢迎大家指出。原文出处:https://www.dwavesys.com/tutorials/background-reading-series/quantum-computing-primer#h1-0
本教程旨在介绍在量子计算中使用的概念和术语,提供量子计算机的一个概况,以及你为什么想要进行量子计算编程。
内容
本材料使用非常高级的概念进行撰写,这样做可以让技术型读者和非技术型读者都可以使用。具有一些物理学、数学和编程背景不是必须的,但是这些有助于理解该文档出现的概念,
你可以学到什么
通过阅读本教程中的材料,你将学到:
首先考虑传统计算,这对理解量子计算是有用的。我们对现代数字计算机和它们执行多种不同应用程序的能力已经习以为常。我们的台式机,笔记本电脑和智能手机可以运行电子表格,视频直播,让我们与世界另一端的人聊天,让我们沉浸在很真实的3D环境中。但是,所有的数字计算机的核心都有共同之处。它们都执行简单的算术运算。它们做到这些的能力来源于它们极快的速度。计算机每秒执行数十亿次运算。这些操作执行得很快,它们允许我们运行非常复杂的高级应用程序。传统的数字计算可以用图1所示的图表来总结。
尽管传统计算机擅长很多的任务,但是在一些领域的计算仍然非常困难。这些领域的例子有:图像识别,自然语言(用自己的语言,而不是编程语言,让计算机理解我们的意思),以及计算机必须从经验中学习才做的更好的特定任务。尽管在过去的几十年里,这个领域已经进行了大量的研究和努力,但我们在这方面的进展还是很缓慢的,我们所做的原型通常需要非常大的超级计算机来运行,消耗了大量的空间和能量。
我们可以问这样一个问题:这世上是否有根本不同的方法设计计算机系统?如果我们可以从头开始,做一些完全不同的事情,使得更好地完成对于传统计算机很难的任务。那么我们将如何着手建立一种新型计算机呢?
传统的方法把组0和1的位串转变为另一组,量子计算的方法则截然不同。在量子计算里,一切都是变化的。我们所理解信息比特的物理层和操作它们的设备都是完全不同的。我们制造这种设备的方式是不同的,需要新的材料、新的设计规则和新的处理器架构。最后,我们对这些系统进行编程的方式也是完全不同的。本文档将探讨这些问题中的源头,就是如何用一种新的信息——量子位——取代传统的比特(0或1),这样可以改变我们对计算的思考方式。
在学习量子计算前,理解为什么我们能够使用传统计算机解决某些问题也是很重要的。让我们考虑一个称之为电灯开关游戏的数学问题,它可以很好说明关键所在。
电灯开关游戏涉及试图在一堆开关中寻找最好的设置。这里的一张图举例介绍这个问题:
让我们想象一下,每一个灯的开关有一个数字跟它紧密相关,是给你备选的(你不要去改变这个)。我们叫这个数字是“偏差值”。你要做的是:对每一个灯的开关打开或者关闭进行选择。在我们的游戏中,打开表示1,关闭表示-1。我们紧接着把所有开关的偏差值乘以对应的打开/关闭的值。这将会产生一个结果。这个游戏的本意是设置所有开关打开关闭状态以求得最小值。在数学上,我们把每隔开关的偏差值定义为hi,开关设定称为Si。
因此,根据我们设置哪个开关为+ 1(打开),设置哪个开关为-1(关闭),我们将得到一个不同的分数。你可以试试这个游戏。希望你会觉得很容易,因为有一条简单的制胜法则:
我们发现如果我们设置所有带正偏差值的开关为关闭,将负偏差值的开关打开,然后再加总,我们将得到最小的一个值。容易吧?我可以给你尽可能多的带不同偏差值的开关,而你只用看把这些开关按这个规则打开关闭即可。
好,我们让这个问题更难一些。请想像一下有很多成“对”开关有一个附加规则,这里考虑的涉及“一对”开关而不是一个开关。我们增加一个新的偏差值(称为J),我们把它与两个相连的开关的设置值相乘,对于所有的开关,我们把每对开关的结果值相加。还是一样,我们需要做的是,如何选择开关状态打开或关闭以适应这个新规则。
但现在这个是非常、非常难以决定到底是哪个个开关应该打开或者关闭了,因为它邻近的开关会影响它。甚至简化到如前图只有两个开关的情况,您仍不能使用之前的规则,也就是根据偏差值设置它们为与偏差值符号相反的值(您试试)。在所有开关都有邻居的复杂网络面前,让你找出正确的组合以得到最小值,这一下子就变得很困难了。
每一对开关你若尝试所有组合,有四种可能性:[开,开],[开,关],[关,开],[关,关]。但随着您增加越来越多的开关数量,这种可能性的数量将随着开关数量呈指数增长:
您应该开始明白为什么这个游戏没那么好玩了。实际上这个问题甚至对于大多数强大的超级计算机来说都很困难。要把这么多可能的配置存进内存,并把它们送进传统处理器去计算我们的猜测是否正确,那将花费非常长的时间。假设500个开关,在宇宙中都没有足够的时间去检查所有的配置。
量子力学在此问题能够助我们一臂之力。量子计算机的基本能力来自于这样一种想法,就是你能把信息的量子比特放进一个叠加态,你可以想象成这样的一种情况,量子比特还没有决定它们所要称为的呐喊着那个状态。有人喜欢把这种叠加态视为“同时拥有两种状态”。或者你也可以把量子比特的状态看作未决定是选+1还是-1。这意味着如果使用量子计算机,我们的电灯开关在同一时刻能够打开和关闭。
现在来看一下和之前同样数目的开关群,但现在送入量子计算机的内存(注意那个偏差值还没有加上去)。
因为所有的电灯开关的打开和关闭是同时,所以我们知道正确答案(正确地打开/关闭每一个开关)就在某个地方出现,它只是现在还躲着我们。但也没问题,因为量子机制将把它给我们找出来。D-Wave量子计算机允许您用一种这样的“量子表述”,然后提取出获得最小值的打开和关闭的配置。下面就是它的工作原理:
你启动了前面所描述的量子叠加态下的系统,然后您慢慢地调节量子计算机去关闭量子叠加效应。同时,您慢慢调高所有的偏差值(h和J的要先调)。当执行了这个操作,所有开关会慢慢跳出它们的叠加态,选择一个传统的状态,即打开或者关闭。最后,每个开关都必须会选择一个状态,打开或者关闭。当最后您把它们加总的时候,计算机内部采用的量子机制帮助开关设置到正确的状态以获得最小值。尽管N个开关可能产生2N个可能性配置,它也能在结束的时候发现最小值,赢得电灯开关游戏。所以,我们可以知道量子计算机允许我们精简表达式,如下所示: