詹姆斯·沃顿(James Wootton)是一名量子计算研究人员,刚刚离开瑞士巴塞尔大学,加入了IBM苏黎世研究实验室量子计算团队。开发量子计算机开发游戏,是探索与测试量子计算机功能的一种重要互动方式,詹姆斯·沃顿(James Wootton)写道。
要购置一台计算机通常寓示着你需要长时间死死地盯着一串串的参数。
当你试着权衡处理器速度与内存,或者硬盘空间和屏幕尺寸,其实你会发现自己在设想用这台计算机做什么事情,而计算机又能在多大程度上满足这些需求。量子计算机目前也面临着这个问题。每过几个月新的原型计算机就会发布。而每次量子比特(qubit)的数量都稳占头条,但是要弄明白这些量子比特发挥多大作用,它们到底是用来做什么的,就没那么容易量化了。通常情况下,这意味着你还得再回过头长时间盯着那些参数。
但这并不是了解一台量子计算机的唯一办法——也可以通过试用来认识它。我们可以运行程序挑战量子计算机的功能极限,以相关的方式去了解它们的性能。这样一来我们就有了体验,而不是仅仅掌握了一串数字。
1961年,麻省理工(MIT)的科学家们收到了一台新的计算机模型:PDP-1模型机。在模型机安装之前,大家就已经开始摩拳擦掌,研究如何使用它,要用它做什么事了。
尤其是史帝夫﹒罗素(Steve Russell)、马丁﹒格拉兹(Martin Graetz)和韦恩﹒威特奈(Wayne Wiitanen),三人立志开发一个程序,以达到三个目的:将模型机的性能发挥到极限,每次运行表现都能不同,并要能以游戏的形式来运行。他们开发的游戏名叫《太空大战!》,这是第一款,不只是一款寻常棋盘游戏的奢华版的计算机游戏。
两个玩家游戏开始时各自操纵一艘太空船,他们离自己的星球都极近。第一个挑战就是要对抗星球的引力,一旦成功进入了较为稳定的轨道,目标就是追捕和摧毁对手。
这款游戏不仅让玩家体验了如何使用PDP-1,还让他们更深入了解了轨道力学知识。玩家很快就明白了引力并不能轻易逃脱,必须要与它合作。制胜之道在于找到你想要的轨道以及抵达这条轨道的方法。这是一种首创性的理念,此后为大家所常见——游戏让人们有机会利用日常生活体验之外的物理学知识,寓教于乐,边玩边学。
《太空大战!》的这些特性正是我们了解和认识量子计算机时所需要的特性。我们需要类似程序的范例,让新用户通过试用代码来学习。这样的程序可以充分利用计算机性能,展现计算机的种种优势和劣势,还能够使用户直接体验物理学中高深的领域,学习物理学原理,并且利用物理学解决游戏问题。
量子战舰这样的理念成为驱使我着手开发量子计算机游戏的部分动力。
经过几次尝试性的试验后,第一款符合要求的游戏诞生了,这款游戏叫《部分非门战舰》(Battleships with partial NOT gates)。我的战舰跟传统版本的战舰游戏一样,也在网格上战斗,网格上的每个点可能就是一艘战舰藏匿的位置(图1)。网格根据游戏设备进行定制。
在构建网格的时候,唯一可以使用的设备是一台IBM五量子比特原型量子处理器,所以我设计的战舰游戏所用的网格有五个点,每个点对应一个量子比特。要让战舰在这台真机上运行起来,需要用IBM开源Qiskit软件包来编写量子程序。
这款游戏需要两个玩家,每个玩家必须从他的五个量子比特里选择三个来扮演战舰的角色。对于每个选好的量子战舰,我们用量子比特状态0来代表完好的战舰,用1来代表被摧毁的战舰。然后另一个玩家必须通过把每个0转变成1来尝试击沉这些战舰。在标准计算里,这项操作被称为非门。这是支持所有数字计算的逻辑门中最简单的一种。在我们的游戏中,它只是起到了一次成功攻击的作用。
现在我们加进来一些量子。众所周知,量子比特可以存在于0或1以外的状态,也可以存在于无限个量子叠加态的其中一个状态,这些叠加态中有一些更接近0,而另一些更接近1。但是如果我们去实际测量这些叠加态量子比特中一个量子比特的状态,我们就迫使它在这两个二元选项之间随机选择。叠加态的偏向决定了每一个量子比特的最终状态。
因为量子计算机可以访问量子叠加态,所以量子计算机可以执行通用逻辑门的部分动作。例如,我们可以让量子计算机执行一半的非门。让一个在0态的量子比特执行半非门,会让它进入一个介于0和1之间的叠加态。如果我们执行多次同样的操作,每次都测量量子比特的状态,我们会发现0和1出现的概率相同。对应在游戏中的结果,就是战舰处于半损毁状态。
相反,如果我们在做测量前执行两次半非门,会发生迥异的事情。第一个半非门会选取量子态0并将其置于0和1之间的一个叠加态。然后第二个半非门会在这个叠加态上继续进程。结果就会产生一个1态的量子比特和一艘损毁的舰船。
这就是量子叠加态和单量子比特旋转在游戏中的表现形式:对入门者而言并非哲学难题或晦涩的概念,而是表现为半损毁的舰船和半失效的武器。我们利用量子程序的新奇元素在游戏中完成普通的任务。当我们揭开了它的神秘面纱,再去思考用它做什么就变得容易多了。
这就是我们开发游戏《部分非门战舰》的目的。《部分非门战舰》正如《太空大战!》一样,旨在抛砖引玉,为其他人提供一个编程的例子。让人们看到这个游戏后也可以说:“我也能开发这样的游戏”,因为你确实做得到,而且其实你还能做得更好。
《部分非门战舰》的运行只用到了五个量子比特中的三个。而对于这些量子比特,我们只应用了一种量子运算。显然我们并没有将这台计算机的性能发挥到极限。因此,要找到一款能接替《太空大战!》的游戏,我们必须另择他法。
量子计算机的所有威力就来自于它探索量子比特完整“状态空间”的能力。对于单一量子比特来说,意味着能够实现0态、1态以及所有可能的叠加态。对于两个量子比特来说,可用空间变得更加复杂。这一系统有四个基础态——00、01、10和11——在这些基础态之上我们可以创造更多种叠加态。随着加入更多量子比特,这个系统变得愈发复杂。对于n个量子比特来说,就有2n个基础态可添加到叠加态中——可能性呈指数级增长。
大多数可能发生的多量子比特状态将表现出某种程度的纠缠——这是量子力学的一个标志性特征。量子纠缠允许信息在量子比特间进行非本地存储,爱因斯坦把它产生的作用称为“幽灵超距作用”。以可控的方式创造和操纵纠缠,其难度众所周知。在过去的几十年中,创造和研究几个量子比特的特定纠缠态轻轻松松就能为你赢得一个博士学位。但是构建一台量子计算机的难度就令人望而生畏了。
这台设备要能够稳定地将任意数量的量子比特创造出我们想要的任意纠缠态。要测试计算机是否达到标准,方法之一就是开发和运行随机量子程序。随机量子程序,顾名思义,就是把量子计算机所有能做的运算随机地运用到一个程序里。这个操作通常是在一堆初始态为0态的量子比特上进行的:既没有叠加也没有纠缠。随着程序的运行,叠加态出现,纠缠也开始形成。
如果程序运行的时间足够长,对于量子比特的无限个可能状态,无论状态有多复杂或多纠缠,最终都能得到其中一个状态的一个完全随机的例子。然后你就只需要测量你的量子比特,做一些统计,证明用你运行的程序达到了预期的状态。这也是谷歌期望运行的部分测试,而这项测试就可以为原理的证明提供证据,证明量子计算机能做到常规计算机几乎不可能做到的事情。
我们把这个理念引入到游戏里。
假设我们的对手开发了一个随机量子小程序,程序要求随机选取成对量子比特以随机的方式进行纠缠,然后运转这个程序,而我们要分析一下结果。我们的目标是弄清对手做了什么,然后在程序里加入几行额外的代码来阻击它。游戏的基本概念有点像俄罗斯方块,你作为玩家,必须和混乱的力量进行对抗。游戏里任意出现的随机事件你都要接招,然后竭尽所能去拆招。如果你身手不错,你就有能力长时间维持秩序。
如果你身手不行,基本上你自身就会变成另外一个随机性的来源,游戏将很快难以为继。
游戏玩家能力的不足,加上对手编写的随机量子程序,需要量子计算机持续不断地制造和操纵复杂的纠缠态。这就为计算机提供了一场真实的测试,测试甚至也可以被用于实验一部分,证明量子计算的能力。我们给这个游戏命名为《卓越量子》。
从短期来看,《卓越量子》的游戏经验不免会受制于人,这个效果并不那么受欢迎。量子比特会与它们的环境相互作用,这不可避免,而我们进行的运算也从不完美。当这些错误随着量子程序的长时间运行累积起来,我们得到的结果将会大幅偏离我们需要和预期的结果。最终,每个量子比特的状态将无异于抛硬币的概率,与任何其他量子比特都无关,与所运行的程序也无关。任何复杂的叠加态早已互不相干。
然而也不是一事无成,起码还有一线希望,《卓越量子》还可以让我们切身感受一下计算机内部的噪声情况。当我们观察到游戏能坚持多少回合才最终崩溃时(试想想玩俄罗斯方块的时候也是一样,如果操作不当,会导致封堵和失误随着游戏的进行变得越来越多,闪烁不止的屏幕更是让情况雪上加霜),也会对量子程序能正常运行多久有一个概念。
《卓越量子》也可让我们从另一个角度去比较不同的计算机。在量子计算机里,纠缠是通过量子比特对的交互产生的。但并不是所有量子比特对都可以直接被交互。每台计算机有一个连通图,图中列出的所有量子比特对都能够运行一个特定的二量子比特运算。一台计算机的连通性越好,它在开发量子程序时的灵活性和适配性就越高,也能越快速地创建复杂的叠加态。
在《卓越量子》里,连通图变成了玩游戏的棋盘。
计算机的连通越好,对手和玩家双方可用的招数就越多。这些使量子处理器更有价值的特性也使它运行的《卓越量子》游戏更具吸引力。图2展示了一个IBM开放可用的16位量子比特计算机《卓越量子》棋盘,它有自己的梯状连通图。在每个图像中,彩色的圆圈指代量子比特。圆圈中的数字显示每个量子比特的纠缠程度,这个数字是由测量结果计算得来的。对手让随机选择的量子比特对发生纠缠。
玩家的工作,就是利用每个量子比特对中的两个量子比特的数字应该相等的事实,找出哪些量子比特对发生了纠缠。
在一个假想的完美无噪的量子计算机里,这项工作并不难。这可以从图2a中看出来。此图是由16量子比特计算机的无误差模拟得出的。每对的两个量子比特有刚好相等的数字,因此很容易把它们找出来。此图中的量子比特对有A、C、E、G、P、R、T和V。
当我们在真机上运行这个游戏的时候,情况就更棘手了。
一次运行的结果如图2b所示。噪声使我们测量的纠缠态并不完全准确,因此每对的两个量子比特的数字可能不同。这就可能造成模糊性,需要费些力气去解决。例如,右下角的63是否应该和相邻的59配对?或者是应该和58配对?尽管59在数值上更接近63,但是当查看临近的这些数字时,我们就能发现其实量子比特对V才是正确的。这里的量子比特对有C、G、H、I、L、M、R和V。
《太空大战!》的发展促进了黑客文化(最开始是褒义)的兴起。游戏代码是自由共享的,这就意味着其他人都能够学习和改编这款游戏。新的功能特征添加到游戏里,游戏的变体出现了,这个游戏还被沿用到了(现在仍然如此)很多不同的系统里。
量子编程这一初生领域也正朝着同样欣欣向荣的方向在发展着。如果你想用真正的量子计算机编程谋生,你可以使用IBM的Qiskit、Rigetti的Forest或苏黎世联邦理工学院的ProjectQ。所有这些开源项目都鼓励人们参与其中,同样也鼓励人们使用软件有所建树。无论对于游戏,还是最终得以发表论文的科学研究,很多源代码都可以线上获取,它们的文档化也已经很完善——可供初学者学习、改编和使用。
几年之前,只有工作人员才能在具备条件的实验室中进行试验性的量子计算,同一领域的理论专家甚至也很少能接触到量子计算。现在,多亏IBM和Rigetti线上的设备,所有人都可以接触和使用真正的量子硬件。你都可以穿着睡衣坐着进行试验。你也可以试验自己的一个新想法,根本无需编写一份冗长的资金申请书,更无需说服风险资本家,让他们相信你的新想法可以帮他们挣到大笔金钱。
你甚至可以自己开发游戏。