面向所有人的量子计算 - 第四部分:IBM Quantum Experience





5.00/5 (3投票s)
介绍如何使用IBM的Quantum Experience平台,该平台允许用户设计量子电路,模拟计算结果,或在真实的量子计算机上运行电路。
第三部分:量子电路和OpenQASM |
目录
引言
本系列之前的文章都为这部分内容铺垫。在这篇文章中,我们将模拟第三部分中编写的OpenQASM程序,然后通过IBM Quantum Experience平台在实际的量子处理器上运行它们。
入门
在我们开始使用该服务之前,我们需要在IBM Quantum Experience平台上创建一个帐户。为此,请访问其注册表单并填写所有必填信息。
注册完成后,我建议做的第一件事是查看其用户指南。它们提供初学者指南、高级指南以及开发者指南。阅读初学者指南,然后是高级指南,将为您提供大量信息,不仅关于如何使用IBM Quantum Experience平台,还关于量子计算的一般知识。
通读这两份指南还有一个额外的福利。您将获得额外的积分。在该平台上模拟量子程序是免费的,但是要在实际处理器上运行程序需要积分。我想这是IBM防止人们滥用服务的一种方式。如果您在任何时候用完了积分,可以发邮件给他们请求额外的积分。只要您不滥用服务,几乎可以肯定他们会同意您的请求。
完成阅读指南后,使用页面顶部的登录链接,用您刚刚创建的帐户登录平台。成功登录后,默认情况下您将被带到社区页面。这是他们的论坛,您可以在其中提问、讨论量子算法的解决方案等。要开始创建量子电路,请单击“IBM Q experience”徽标下方的(左上角附近的)Composer链接。
量子编辑器
单击Composer链接后,您将被带到一个新页面,并看到一个New Experiment(新建实验)对话框。由于我们将使用本系列第三部分中开发的示例程序,因此在Experiment Name(实验名称)文本框中输入Coin Flip(抛硬币)。之后,单击ibmqx2按钮。Custom Topology(自定义拓扑)按钮允许您模拟量子电路,添加多个量子和经典寄存器,并指定它们有多少量子比特/比特。但是,由于我们最终希望在真实的量子处理器上运行程序,因此目前请选择ibmqx2。当您对平台更加熟悉后,我鼓励您尝试使用此功能。
量子编辑器由两大部分组成。左侧是乐谱
从第三部分对量子电路的概述来看,这应该让您感到熟悉。每一行都是一个单独的量子比特,它们都初始化为 \(\vert 0 \rangle\) 状态。最底部的行标记为c,是经典寄存器。
第二大部分是工具箱
工具箱包含您可以放置在乐谱上的各种门,它允许您选择是要模拟乐谱还是在真实处理器上运行它,还可以让您查看当前乐谱上门的OpenQASM代码。您还可以通过单击My Units(我的积分)链接来查看剩余积分。
一个有用的功能是,如果您单击“Gates”(门)旁边的问号
这将弹出一个对话框,其中包含有关每个可用门的说明。每个说明还包含两个按钮:QASM和Matrix(矩阵)。单击QASM按钮将显示门的OpenQASM代码,单击Matrix按钮将显示门的矩阵。
抛硬币程序
要创建抛硬币程序,首先单击并按住带有“H”的蓝色方块,然后将鼠标拖向乐谱。您会注意到量子比特线上出现了点。这些点代表可以放置门的位置
将鼠标拖到第一个量子比特(即q[0])的第一个点上,然后释放鼠标按钮。带有“H”的蓝色方块现在将出现在乐谱上。这个方块代表Hadamard门。
现在对测量操作做同样的事情。这是工具箱中“Operations”(操作)标题下的那个看起来像刻度盘的方块
将此项拖到与放置Hadamard门相同的量子比特线上的下一个点。完成此操作后,您的乐谱应如下所示:
您会注意到一个箭头从测量图标指向经典位寄存器。这表示我们正在测量量子比特的值,并将结果放入经典寄存器,以便我们能够读取该值。
现在让我们模拟电路,看看结果如何。要查看当前参数,请单击“Simulate”(模拟)按钮旁边的按钮(它有一个“v”形图标)
您可以看到当前的设置:种子是随机的,次数设置为100。种子我们现在不需要担心。次数是指电路将运行的次数。请记住,所有量子过程都是随机的,因此运行两次电路几乎肯定会产生不同的结果。这就是为什么电路要运行很多次——以便我们能得到平均值。目前我们可以将此值保留原样。但是,如果您想增加或减少此值,可以单击Edit parameters(编辑参数)链接。
要模拟电路,请单击Simulate。在模拟运行时,编辑器将变灰并显示以下内容:
模拟完成后,将显示一个对话框,包含以下部分。
- 第一部分是结果的量子球。这与我们在第一部分讨论过的Bloch球相同。您可以单击并拖动球体以从各个角度查看它:
- 下一部分是计算基结果
由于我们有一个作用于单个量子比特的门,因此只有两个可能的结果。量子比特要么最终处于 \(\vert 0 \rangle\) 状态,要么处于 \(\vert 1 \rangle\) 状态。所有其他量子比特将保持其初始化的状态(\(\vert 0 \rangle\))。当测量将结果放入经典寄存器时,可能出现的二进制值是00000或00001。Hadamard门将量子比特置于 \(\vert 0 \rangle\) 和 \(\vert 1 \rangle\) 的叠加态,我们希望在多次运行中,这两个状态出现的次数相同,而这正是这些结果所示。q[0]量子比特有一半时间处于 \(\vert 0 \rangle\) 状态,一半时间处于 \(\vert 1 \rangle\) 状态。Download CSV(下载CSV)按钮的作用如其名称所示。它下载一个包含结果的CSV文件。
- 最后一部分是乐谱的副本以及电路的OpenQASM代码。这段代码应该让您感到熟悉,因为它就是本系列第三部分中显示的代码:
随机数程序
现在我们将进行随机数程序。首先单击并按住乐谱上当前的测量图标。您会看到一个Delete(删除)对象出现。将测量对象拖到上面以将其从乐谱中删除
现在将额外的Hadamard门和测量对象拖到乐谱上,使乐谱看起来像下面的图片,然后再次单击Simulate(模拟)按钮
模拟完成后,您会注意到量子/Bloch球和计算基结果将显示其他值。我运行的计算基结果是:
您可以看到几乎所有值都以相同的频率出现,但有些略多,有些略少。随着运行次数的增加,这些值将更加接近。同样,由于这是随机过程,您的值可能会略有不同,即使我们在同一个平台上运行相同的量子电路。
在这种有许多结果的情况下,所有可能结果的输出不会显示在结果对话框中。未显示的值将被汇总到Other Values(其他值)下
但是,如果您下载CSV文件,它将包含所有可能结果的输出。
在处理器上运行
如本部分开头所述,在实际处理器上运行电路需要积分。在单击Run(运行)按钮之前,我建议单击它旁边的按钮(带有“v”形图标),然后单击Edit parameters(编辑参数)。这将打开一个对话框窗口,显示根据您选择的运行次数(shots)所需的积分数量。
如上图所示,运行一次抛硬币程序(即一次运行)需要三个积分,但运行1024次(即1024次运行)也只需要三个积分。由于我们希望看到结果是否与模拟相似,在这种情况下,我将选择1024次运行。
如果正在处理器上运行的量子电路与最近在处理器上运行过的(无论是您还是其他用户运行的)完全相同,您可以选择从缓存中获取结果。在这种情况下,您无需使用任何积分,仍然可以看到在真实量子处理器上运行的程序的结果。
有时有多个缓存结果,在这种情况下,您可以选择您想查看的缓存结果
从缓存结果中可以看到,两个结果几乎以相同的频率出现,但它们之间存在细微差别。
结论
本文系列到此结束。这是一次相当长的旅程,从了解经典计算机和量子计算机的区别,到发现量子门如何作用于量子比特,再到能够使用真实的量子处理器。
我希望您喜欢这个文章系列,就像我写作时一样。我目前正在计划为这个系列添加更多文章,包括使用IBM Quantum Experience API,以便您能够从自己的程序中获取模拟或实际运行的结果。IBM还开发了一个新的16量子比特处理器,目前处于测试阶段。一旦它可用,我可能会用它带来的任何新功能来更新这个系列。
如果您觉得有什么遗漏,或者希望看到添加和/或扩展的内容,请随时发表评论。我可能不会回复所有评论,但我绝对会阅读所有评论,并考虑读者的任何反馈。
再次感谢您允许我向您介绍这个新的计算时代。未来几年应该会非常激动人心,您应该很高兴知道,作为一名程序员,您现在可以处于这个领域的*.前沿。*
历史
2017年6月26日:第一个版本
第三部分:量子电路和OpenQASM |