量子计算是如何工作的

量子计算听起来很酷。我们都读到过为了实现这一目标的巨额投资,以及它在许多行业取得突破的前景。但所有这些媒体通常都不清楚它是什么,它是如何运作的。这是有原因的:量子计算与传统的数字计算有很大的不同,它需要以一种非直觉的方式思考问题。哦,还有数学。这样的例子有很多。

这篇文章不会让你成为专家,但它会帮助你理解什么是量子计算,为什么它如此重要,为什么它如此令人兴奋。如果你已经有了量子力学和研究生院数学的背景,你可能不需要阅读这篇文章。你可以直接跳到一本介绍量子计算的书(提示,“Gentle”是一个相对的术语)。但是,如果您和我们大多数人一样,没有那样的背景知识,那么让我们尽最大努力来揭开计算机中最神秘的话题之一的神秘面纱。

在几个简短的段落中,我们将在本文中更详细地讨论一些基础知识:量子计算机使用量子位而不是传统的位(二进制数字)。量子位元与传统的量子位元不同,因为在它们被读出(即被测量)之前,它们可以以一种不确定的状态存在,在这种状态下,我们无法判断它们将被测量为0还是1。这是因为一种叫做叠加的特殊性质。

叠加使量子位元变得有趣,但它们真正的超能力是纠缠。纠缠的量子位元可以立即相互作用。为了制造实用的量子位,量子计算机必须冷却到接近绝对零度。即使在过冷的情况下,量子位元的纠缠态(相干性)也维持不了很长时间。

这使得编程变得更加棘手。量子计算机的编程使用了各种各样的逻辑门序列,但程序需要运行得足够快,以便量子位元在被测量之前不会失去相干性。对于任何一个上过逻辑课程或使用触发器进行数字电路设计的人来说,量子逻辑门似乎有些熟悉,尽管量子计算机本身本质上是模拟的。然而,叠加和纠缠的结合使这个过程更加混乱。

我们在典型的数字计算机中使用的普通比特不是0就是1。你可以随时读取它们,除非硬件有缺陷,否则它们不会改变。量子位不是这样的。它们分别有0和1的概率,但在你测量它们之前,它们可能处于不定状态。该状态,以及其他一些允许额外计算复杂性的状态信息,可以被描述为位于球体上的任意点(半径为1),这反映了被测量为0或1的概率(即北极和南极)。

量子位的状态是沿三个轴的值的组合。这叫做叠加。一些文本将这个属性描述为“同时处于所有可能的状态”,而另一些文本则认为这有点误导,我们最好坚持使用概率解释。无论哪种方式,量子计算机都可以在量子比特处于叠加状态时进行数学运算——通过逻辑门以各种方式改变概率——最后通过测量读出结果。但是,在所有情况下,一旦一个量子位被读取,它不是1就是0,并且丢失它的其他状态信息。

量子位通常从0开始,尽管它们经常使用哈达玛门进入一个不确定的状态,这导致一个量子位一半时间读为0,另一半时间读为1。其他的门可以通过不同的数量和方向来翻转量子位的状态——既相对于0轴和1轴,也相对于表示相位的第三轴,并且提供了表示信息的额外可能性。具体的操作和门取决于您使用的量子计算机和工具包。

独立的量子位组本身不足以实现量子计算所承诺的巨大突破。当量子物理学中缠绕的概念被实现时,神奇的事情就开始发生了。一位业内专家把没有纠缠的量子位比作“非常昂贵的经典计算机”。纠缠态的量子位在被测量时,无论相距多远,都会立即相互影响,这是基于爱因斯坦委婉地称之为“鬼魅般的远距离作用”的理论。“就经典计算而言,这有点像有一个逻辑门将内存中的每一位连接到另一位。

您可以开始看到它与传统计算机相比有多么强大,传统计算机需要在对其进行操作之前分别对内存的每个元素进行读写。因此,从纠缠中可以获得多个巨大的潜在收益。首先是可执行的编程复杂性的大幅增加,至少对于某些类型的问题是如此。其中一个令人兴奋的是复杂分子和材料的建模,这是很难用经典计算机模拟的。另一个可能是远程安全通信方面的创新——如果在远距离上保持量子态成为可能的话。使用纠缠的编程通常从C-NOT门开始,如果它的伙伴被读成1,C-NOT门会翻转被纠缠粒子的状态。这有点像传统的异或门,只是它只在进行测量时才起作用。

叠加和纠缠是令人印象深刻的物理现象,但是利用它们进行计算需要一个非常不同的思维方式和编程模型。你不能简单地把你的C代码扔到一台量子计算机上,然后指望它运行,当然也不能指望它运行得更快。幸运的是,数学家和物理学家远远领先于计算机的建造者,他们已经开发出了巧妙的算法,在量子计算机出现之前的几十年就利用了这些算法。

一些最初创建的量子算法,老实说,我发现的一些有用的算法,你可以理解没有研究生数学学位,是安全的密码密钥分发。这些算法使用纠缠的特性,允许密钥创建者向接收者发送许多对量子位的每一对中的一个。完整的解释是相当长的,但是算法依赖于这样一个事实:如果任何人在途中拦截并读取其中一个纠缠位元,发送者的同伴量子位元就会受到影响。通过来回传递一些统计信息,发送方和接收方可以确定密钥是安全传输的,还是在传输过程中被破解的。

你可能读到过,量子计算机有一天可能会打破当前的密码系统。他们将能够做到这一点,因为有一些非常聪明的算法设计运行在量子计算机上,可以解决一个困难的数学问题,这反过来可以用来因式分解非常大的数字。其中最著名的是肖尔的因式分解算法。分解大型数字的难度对于所有公钥-私钥系统的安全性至关重要,而公钥-私钥系统是目前最常用的。目前的量子计算机几乎没有足够的量子位元来尝试这项任务,但许多专家预测在未来3-8年内会有。这导致了一些潜在的危险情况,比如只有政府和超级富豪才能使用量子计算机提供的超安全加密。

量子计算机的发展需要很长时间,原因有很多。对于初学者,您需要找到一种方法来隔离和控制实现量子位的物理对象。这还需要将其冷却到基本为零(如IBM的Quantum One的温度为0.015开尔文)。即使在如此低的温度下,量子位元也只能在很短的时间内稳定(保持相干性)。这极大地限制了程序员在需要读取结果之前可以执行多少操作的灵活性。

不仅需要约束程序,而且还需要多次运行它们,因为当前的量子位实现有很高的错误率。此外,在硬件中实现纠缠也不容易。在许多设计中,只有部分量子位元被缠结,因此编译器需要足够聪明,以便根据需要交换位元,以帮助模拟一个所有位元都可能被缠结的系统。

好消息是,如果一开始有点困惑的话,普通的量子计算程序实际上是非常容易理解的。有大量的教程可以帮助您编写您的第一个量子程序,以及让您在模拟器上运行它,甚至可能在真正的量子计算机上。

最好的入门工具之一是IBM的QISKit,这是IBM Q Research提供的一个免费的quantum工具包,其中包括一个可视化编写器、一个模拟器,以及在模拟器上运行代码后访问实际的IBM quantum计算机。Rigetti Quantum Computing也发布了一个简单的介绍应用程序,该应用程序依赖于他们的工具包,可以在他们的云计算机器上运行。

不幸的是,琐碎的应用程序就是这样:琐碎。因此,仅仅跟随每个示例中的代码并不能真正帮助您掌握更复杂的量子算法的复杂性。这是一个更加艰巨的任务。

感谢William Poole和Sue Gemmell的深思熟虑。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时候联系我们修改或删除,多谢