首页 / 专利库 / 集成电路 / 集成电路卡 / 微控制器 / 存储器 / 一种量子程序转有向无环图的方法、装置、存储介质及电子装置

一种量子程序转有向无环图的方法、装置、存储介质及电子装置

阅读:87发布:2023-06-11

专利汇可以提供一种量子程序转有向无环图的方法、装置、存储介质及电子装置专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种量子程序转有向无环图的方法,所述方法包括:获取量子程序中的 节点 ;根据所述节点操作的 量子比特 ,确定所述节点之间的关联关系;根据所述节点及节点之间的关联关系,生成与所述量子程序对应的有向无环图;其中,所述有向无环图中的 顶点 表征节点,所述有向无环图中的边表征节点之间的关联关系;其中,所述边的方向表征该边相连的顶点对应的节点被执行的时序关系。本发明借助量子程序通过转化为有向无环图,基于此转化关系,因而可以通过适用于有向无环图的 算法 在量子程序中查询 指定 结构的量子线路。,下面是一种量子程序转有向无环图的方法、装置、存储介质及电子装置专利的具体信息内容。

1.一种量子程序转有向无环图的方法,其特征在于,所述方法包括:
获取量子程序中的节点
根据所述节点操作的量子比特,确定所述节点之间的关联关系;
根据所述节点及节点之间的关联关系,生成与所述量子程序对应的有向无环图;其中,所述有向无环图中的顶点表征节点,所述有向无环图中的边表征节点之间的关联关系;其中,所述边的方向表征该边相连的顶点对应的节点被执行的时序关系。
2.根据权利要求1所述的量子程序转有向无环图的方法,其特征在于,所述获取量子程序中的节点,包括:
遍历量子程序的节点,得到所述量子程序中各量子操作节点的节点信息。
3.根据权利要求2所述的量子程序转有向无环图的方法,其特征在于,所述根据所述节点操作的量子比特,确定所述节点之间的关联关系,包括:
针对每一所述量子操作节点,从该节点操作的量子比特依序执行的所有量子操作节点中,确定该节点的下一节点,得到该节点与下一节点之间的相邻关系。
4.根据权利要求3所述的量子程序转有向无环图的方法,其特征在于,所述根据所述节点及节点之间的关联关系,生成与所述量子程序对应的有向无环图,包括:
构建与所述量子操作节点对应的顶点;
构建具有所述相邻关系的节点对应的顶点之间的边,其中,所述边的方向由具有所述相邻关系的节点中的前一节点对应的顶点指向下一节点对应的顶点。
5.根据权利要求2所述的量子程序转有向无环图的方法,其特征在于,所述遍历量子程序中的节点,包括:
若所述量子程序包含处于转置共轭状态的量子线路,则在遍历到量子线路节点时,逆序遍历所述量子线路节点中的量子操作节点,并将所述量子操作节点设为转置共轭状态。
6.一种量子程序转有向无环图的装置,其特征在于,所述装置包括:
获取模,用于获取量子程序的节点;
确定模块,用于根据所述节点操作的量子比特,确定所述节点之间的关联关系;
生成模块,用于根据所述节点及节点之间的关联关系,生成与所述量子程序对应的有向无环图;其中,所述有向无环图中的顶点表征节点,所述有向无环图中的边表征节点之间的关联关系;其中,所述边的方向表征该边相连的顶点对应的节点被执行的时序关系。
7.根据权利要求6所述的一种量子程序转有向无环图的装置,其特征在于,所述获取模块,包括:
遍历单元,用于遍历量子程序的节点,得到所述量子程序中各量子操作节点的节点信息。
8.根据权利要求6所述的一种量子程序转有向无环图的装置,其特征在于,所述确定模块,包括:
确定单元,用于针对每一所述量子操作节点,从该节点操作的量子比特依序执行的所有量子操作节点中,确定该节点的下一节点,得到该节点与下一节点之间的相邻关系。
9.根据权利要求6所述的一种量子程序转有向无环图的装置,其特征在于,所述生成模块,包括:
第一构建单元,用于构建与所述量子操作节点对应的顶点;
第二构建单元,用于构建具有所述相邻关系的节点对应的顶点之间的边,其中,所述边的方向由具有所述相邻关系的节点中的前一节点对应的顶点指向下一节点对应的顶点。
10.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至5任一项中所述的方法。
11.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求1至5任一项中所述的方法。

说明书全文

一种量子程序转有向无环图的方法、装置、存储介质及电子

装置

技术领域

背景技术

[0002] 量子逻辑电路又称量子线路,它是量子计算领域中常用的量子计算模型,表示在抽象的概念下,对量子比特进行操作的线路,它是各种量子逻辑组成的集合。在量子计算中,量子计算的模拟主要是通过量子程序所包含的量子逻辑门的操作矩阵对量子态向量进行处理,得到经过量子逻辑门处理后的末态。以量子线路模型描述的量子算法,是一种操控量子计算机,使其对输入状态进行处理,并且输出特定的测量值的方法。量子计算机在运行量子算法时因其具有相对普通计算机更高效的处理数学问题的能,故成为一种正在研究中的关键技术。
[0003] 现有技术中,由于量子程序是通过链式的结构呈现的,因此对量子程序所包含的特定量子线路进行查找和/或识别时,存在直接查找或识别的困难。因此有必要实现一种通过将量子程序转化为对应的有向无环图,并基于此对应的转化关系,从而在量子程序中查询指定结构的量子线路。

发明内容

[0004] 本发明的目的是提供一种量子程序转有向无环图的方法,以解决现有技术中的不足,它能够将量子程序转化为对应的有向无环图,并基于此对应关系,从而在量子程序中查询指定结构的量子线路。
[0005] 本发明采用的技术方案如下:
[0006] 一种量子程序转有向无环图的方法,所述方法包括:
[0007] 获取量子程序中的节点
[0008] 根据所述节点操作的量子比特,确定所述节点之间的关联关系;
[0009] 根据所述节点及节点之间的关联关系,生成与所述量子程序对应的有向无环图;其中,所述有向无环图中的顶点表征节点,所述有向无环图中的边表征节点之间的关联关系;其中,所述边的方向表征该边相连的顶点对应的节点被执行的时序关系。
[0010] 如上所述的量子程序转有向无环图的方法,优选的,所述获取量子程序中的节点,包括:
[0011] 遍历量子程序的节点,得到所述量子程序中各量子操作节点的节点信息。
[0012] 如上所述的量子程序转有向无环图的方法,优选的,所述根据所述节点操作的量子比特,确定所述节点之间的关联关系,包括:
[0013] 针对每一所述量子操作节点,从该节点操作的量子比特依序执行的所有量子操作节点中,确定该节点的下一节点,得到该节点与下一节点之间的相邻关系。
[0014] 如上所述的量子程序转有向无环图的方法,优选的,所述根据所述节点及节点之间的关联关系,生成与所述量子程序对应的有向无环图,包括:
[0015] 构建与所述量子操作节点对应的顶点;
[0016] 构建具有所述相邻关系的节点对应的顶点之间的边,其中,所述边的方向由具有所述相邻关系的节点中的前一节点对应的顶点指向下一节点对应的顶点。
[0017] 如上所述的量子程序转有向无环图的方法,优选的,所述遍历量子程序中的节点,包括:
[0018] 若所述量子程序包含处于转置共轭状态的量子线路,则在遍历到量子线路节点时,逆序遍历所述量子线路节点中的量子操作节点,并将所述量子操作节点设为转置共轭状态。
[0019] 一种量子程序转有向无环图的装置,所述装置包括:
[0020] 获取模,用于获取量子程序的节点;
[0021] 确定模块,用于根据所述节点操作的量子比特,确定所述节点之间的关联关系;
[0022] 生成模块,用于根据所述节点及节点之间的关联关系,生成与所述量子程序对应的有向无环图;其中,所述有向无环图中的顶点表征节点,所述有向无环图中的边表征节点之间的关联关系;其中,所述边的方向表征该边相连的顶点对应的节点被执行的时序关系。
[0023] 如上所述的量子程序转有向无环图的装置,优选的,所述获取模块,包括:
[0024] 遍历单元,用于遍历量子程序的节点,得到所述量子程序中各量子操作节点的节点信息。
[0025] 如上所述的量子程序转有向无环图的装置,优选的,所述确定模块,包括:
[0026] 确定单元,用于针对每一所述量子操作节点,从该节点操作的量子比特依序执行的所有量子操作节点中,确定该节点的下一节点,得到该节点与下一节点之间的相邻关系。
[0027] 如上所述的量子程序转有向无环图的装置,优选的,所述生成模块,包括:
[0028] 第一构建单元,用于构建与所述量子操作节点对应的顶点;
[0029] 第二构建单元,用于构建具有所述相邻关系的节点对应的顶点之间的边,其中,所述边的方向由具有所述相邻关系的节点中的前一节点对应的顶点指向下一节点对应的顶点。
[0030] 一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项中所述的方法。
[0031] 一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项中所述的方法。
[0032] 与现有技术相比,本发明首先获取量子程序中的节点,根据所述节点操作的量子比特,确定所述节点之间的关联关系,根据所述节点及节点之间的关联关系,生成与所述量子程序对应的有向无环图;其中,所述有向无环图中的顶点表征节点,所述有向无环图中的边表征节点之间的关联关系;其中,所述边的方向表征该边相连的顶点对应的节点被执行的时序关系。本发明借助量子程序可以转化为有向无环图,基于此对应转化关系,因而可以通过适用于有向无环图的算法在量子程序中查询指定结构的量子线路。附图说明
[0033] 图1是本发明实施例提供的一种量子程序转有向无环图方法的流程示意图;
[0034] 图2是本发明实施例提供的一种量子线路的示意图;
[0035] 图3是本发明实施例提供的一种量子线路对应的带顶点信息的示意图;
[0036] 图4是本发明实施例提供的一种量子线路对应的有向无环图的示意图;
[0037] 图5是本发明实施例提供的另一种量子线路的示意图;
[0038] 图6是本发明实施例提供的另一种量子线路对应的带顶点信息的示意图;
[0039] 图7是本发明实施例提供的另一种量子线路对应的有向无环图的示意图;
[0040] 图8是本发明实施例提供的一种量子程序转有向无环图方法装置的结构示意图。

具体实施方式

[0041] 下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
[0042] 需要说明的是,本发明的说明书权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
[0043] 本发明的实施例提供了一种实现量子程序转有向无环图的方法,应用于电子设备如移动终端,如手机、平板电脑,优选应用于计算机,如普通电脑、量子计算机等。下面对其进行详细说明。
[0044] 需要说明的是,真正的量子计算机是混合结构的,它包含两大部分:一部分是经典计算机,负责执行经典计算与控制;另一部分是量子设备,负责执行量子计算。实际上,真正的量子程序是由量子语言如Qrunes语言编写的一串能够在量子计算机上运行的指令序列,实现了对量子逻辑门操作的支持,并最终实现对量子计算的模拟。具体的说,量子程序就是一系列按照一定时序操作量子逻辑门的指令序列。
[0045] 在实际应用中,为了对量子计算进行模拟以验证量子应用等等,可以通过运行在普通计算机的量子虚拟机实现。本发明实施例所指量子程序,即是在量子操作平台上运行的由经典语言编写的表征量子比特及其演化的程序,其中与量子计算相关的量子比特、量子逻辑门等等均有相应的经典代码表示。
[0046] 量子线路,也称量子逻辑电路,是最常用的通用量子计算模型,表示在抽象概念下对于量子比特进行操作的线路,其组成包括量子比特、线路(时间线),以及各种量子逻辑门,最后常需要通过量子测量操作将结果读取出来。
[0047] 不同于传统电路是用金属线所连接以传递电压信号电流信号,在量子线路中,线路可看成是由时间所连接,亦即量子比特的状态随着时间自然演化,在这过程中按照哈密顿运算符的指示,一直到遇上逻辑门而被操作。
[0048] 一个量子程序整体上对应有一条总的量子线路,本发明所述量子程序即指该条总的量子线路,其中,该总的量子线路中的量子比特总数与量子程序的量子比特总数相同。可以理解为:一个量子程序主要由量子线路、针对量子线路中量子比特的测量操作、保存测量结果的寄存器及控制流节点(跳转指令)组成,一条量子线路可以包含几十上百个甚至千上万个量子逻辑门操作。量子程序的执行过程,就是对所有的量子逻辑门按照一定时序执行的过程。需要说明的是,时序即单个量子逻辑门被执行的时间顺序。
[0049] 需要说明的是,经典计算中,最基本的单元是比特,而最基本的控制模式是逻辑门,可以通过逻辑门的组合来达到控制电路的目的。类似地,处理量子比特的方式就是量子逻辑门。使用量子逻辑门,能够使量子态发生演化,量子逻辑门是构成量子线路的基础,就像传统逻辑门跟一般数位线路之间的关系。量子逻辑门包括单比特量子逻辑门,如Hadamard门(H门)、Pauli-X门、Pauli-Y门、Pauli-Z门、RX门、RY门、RZ门;多比特量子逻辑门,如CNOT门、CR门、iSWAP门、Toffoli门。量子逻辑门一般使用酉矩阵表示,而酉矩阵不仅是矩阵形式,也是一种操作和变换。
[0050] 有向无环图(DAG图)是有向图的一种,字面意思的理解就是图中没有环,是一个无回路的有向图,如果有一个非有向无环图,从A点出发向B经过C可以回到A点,则形成一个环。若将从C点到A点的方向改为从A点到C点则变成有向无环图,其常被用来表示事件间的驱动依赖关系,任务之间的调度。
[0051] 参见图1,图1为本发明实施例提供的一种量子程序转有向无环图方法的流程示意图,具体包括如下步骤:
[0052] S101:获取量子程序中的节点;
[0053] 具体的,量子程序可以理解为一个操作序列,其中可以包含量子线路、量子逻辑门、测量操作(Measure)等。
[0054] 所谓量子程序中的节点,是指在整个程序的相对位置的一特定结构的数据,可以是量子逻辑门、测量操作(Measure)、子量子程序、量子线路等。
[0055] 具体的,可以通过遍历量子程序的节点,得到量子程序中各量子操作节点的节点信息;其中,量子操作节点的类型为量子逻辑门节点和测量操作(Measure)节点。
[0056] 在实际应用中,若所述量子程序包含处于转置共轭状态的量子线路,则在遍历到量子线路节点时,逆序遍历所述量子线路节点中的量子操作节点,并将所述量子操作节点设为转置共轭状态。
[0057] 示例性的,量子程序为H(q[0])<
[0058] S102:根据所述节点操作的量子比特,确定所述节点之间的关联关系;
[0059] 具体的,针对每一所述量子操作节点,从该节点操作的量子比特依序执行的所有量子操作节点中,确定该节点的下一节点,得到该节点与下一节点之间的相邻关系。
[0060] 参见图2,图2为本发明实施例提供的一种量子线路示意图,可以理解的是,一个量子程序整体上对应有一条总的量子线路,本发明实施例所述量子程序即指该条总的量子线路。
[0061] 具体的,遍历量子程序的节点,首先获取量子线路量子比特数和各量子逻辑门的唯一标识符,例如,0号比特操作的第一个量子逻辑门H门节点的唯一标识符为“1”;最后一个量子比特3号比特操作的第一个量子逻辑门H门节点的唯一标识符为“4”,其中,量子逻辑门的唯一标识符按照量子逻辑门的执行时序进行标记。则遍历量子程序的节点分别为:节点1H(q[0])、节点2H(q[1])、节点3H(q[2])、节点4H(q[3])、节点5RX(q[0])、节点6CNOT(q[1],q[2])、节点7RX(q[3])、节点8RX(q[1])、节点9H(q[2])、节点10CNOT(q[2],q[3])。
[0062] 示例性的,如图2所示的主量子线路示意图,其量子程序为H(q[0])<
[0063] 在遍历量子线路的节点过程中,记录当前遍历到的节点操作的量子比特序号和唯一标识符,以更新遍历过程中每个比特对应的最后一个节点。并且,创建第一容器,用于记录每个比特对应的最后一个节点及当前遍历到的节点的信息;创建第二容器,用于记录最后一个节点与当前遍历到的节点之间的相邻关系。其中,量子比特对应的最后一个节点是指当前遍历到的量子逻辑门节点的前驱节点。
[0064] 首先,按照节点操作的量子比特依序遍历量子程序的节点。从量子线路的第一层开始,遍历到H(q[0]),则记录当前遍历的H门操作的量子比特序号0及其唯一标识符“1”,即:(0,1)。初始第一容器中没有元素,即H门没有前驱节点,即当前量子比特对应的最后一个节点为空。在第一容器记录0号比特对应的最后一个节点及当前遍历到节点的唯一标识符信息,为空和1,则记为[1]。由于最后一个节点为空,与下一个节点也就是当前遍历到的节点不存在相邻关系,则第二容器不进行记录。然后,依序遍历到第一层内的H(q[1])、H(q[2])、H(q[3]),处理流程同理。
[0065] 当遍历至量子线路第二层的起始,即遍历至节点RX(q[0])时,RX门操作的量子比特序号为0,唯一标识符为5,则记录(0,5),此时RX(q[0])的前驱节点为H(q[0]),则更新0号量子比特对应的最后一个节点,即由空更新为H(q[0]),其唯一标识符为“1”。在第一容器记录当前0号比特对应的最后一个节点H(q[0])及当前遍历到的节点RX(q[0])的唯一标识符信息,记为[1,5]。同时,在第二容器记录当前0号比特对应的最后一个节点H(q[0])与当前遍历到的节点RX(q[0])之间的相邻关系,以唯一标识符的形式记录,即记为{1,5},表示节点1和节点5相邻。
[0066] 遍历到节点CNOT(q[1],q[2])时,CNOT门操作的量子比特序号为1和2,唯一标识符为6,则记录(1,6)和(2,6),该节点6的前驱节点为H(q[1])和H(q[2]),则更新1号比特的最后一个节点为H(q[1])、更新2号比特的最后一个节点为H(q[2])其余节点的处理流程同理,在此不做赘述。
[0067] 具体的,按照上述方法,继续依序遍历如图2所示的量子程序的节点,记录量子线路第一层0、1、2、3号比特当前遍历节点的量子逻辑门节点的唯一标识符,并同时在第一容器和第二容器内记录节点唯一标识符,得到如表1所示的量子线路第一层的遍历结果,其中,每一层内的节点分别操作的量子比特互不相同:
[0068] 表1:图2所示量子线路第一层的遍历结果表
[0069]
[0070] 具体的,按照上述方法,继续依序遍历如图2所示的量子程序的节点,记录量子线路第二层0、1、2、3号比特当前遍历节点的量子逻辑门节点的唯一标识符,并同时在第一容器和第二容器内记录节点唯一标识符,得到如表2所示的量子线路第二层的遍历结果:
[0071] 表2:图2所示量子线路第二层的遍历结果表
[0072]
[0073] 具体的,按照上述方法,继续依序遍历如图2所示的量子程序的节点,记录量子线路第三层0、1、2、3号比特当前遍历节点的量子逻辑门节点的唯一标识符,并同时在第一容器和第二容器内记录节点唯一标识符,得到如表3所示的量子线路第三层的遍历结果:
[0074] 表3:图2所示量子线路第三层的遍历结果表
[0075]
[0076] 具体的,按照上述方法,继续依序遍历如图2所示的量子程序的节点,记录量子线路第四层0、1、2、3号比特当前遍历节点的量子逻辑门节点的唯一标识符,并同时在第一容器和第二容器内记录节点唯一标识符,得到如表4所示的量子线路第四层的遍历结果:
[0077] 表4:图2所示量子线路第四层的遍历结果表
[0078]
[0079] S103:根据所述节点及节点之间的关联关系,生成与所述量子程序对应的有向无环图;其中,所述有向无环图中的顶点表征节点,所述有向无环图中的边表征节点之间的关联关系;其中,所述边的方向表征该边相连的顶点对应的节点被执行的时序关系。
[0080] S1031:构建与所述量子操作节点对应的顶点;
[0081] 具体的,第一容器中用于记录每个比特对应的最后一个节点及当前遍历到的节点的信息的集合,用于构建对应的量子逻辑门节点对应的顶点。例如:
[0082] 第一容器中的集合[1],即构建对应的顶点1(H(q[0]));
[0083] 第一容器中的集合[2],即构建对应的顶点2(H(q[1]));
[0084] 第一容器中的集合[3],即构建对应的顶点3(H(q[2]));
[0085] 第一容器中的集合[4],即构建对应的顶点4(H(q[3]));
[0086] 第一容器中的集合[1,5],即构建对应的顶点1(H(q[0]))和顶点5(RX(q[0]));
[0087] 第一容器中的集合[2,6],即构建对应的顶点2(H(q[1]))和顶点6(CNOT(q[1],q[2]));
[0088] 第一容器中的集合[3,6],即构建对应的顶点3(H(q[2]))和顶点6(CNOT(q[1],q[2]));
[0089] 第一容器中的集合[4,7],即构建对应的顶点4(H(q[3]))和顶点7(RX(q[3]));
[0090] 第一容器中的集合[6,8],即构建对应的顶点6(CNOT(q[1],q[2]))和顶点8(RX(q[1]));
[0091] 第一容器中的集合[6,9],即构建对应的顶点6(CNOT(q[1],q[2]))和顶点9(H(q[2]));
[0092] 第一容器中的集合[7,10],即构建对应的顶点7(RX(q[3]))和顶点10(CNOT(q[2],q[3]));
[0093] 第一容器中的集合[9,10],即构建对应的顶点9(H(q[2]))和顶点10(CNOT(q[2],q[3]));
[0094] 得到如图3所示的量子线路对应的带顶点信息的示意图。
[0095] S1032:构建具有所述相邻关系的节点对应的顶点之间的边,其中,所述边的方向由具有所述相邻关系的节点中的前一节点对应的顶点指向下一节点对应的顶点。
[0096] 具体的,第二容器中用于记录最后一个节点与当前遍历到的节点之间的相邻关系,用于构建具有所述相邻关系的节点对应的顶点之间的边,其中,所述边的方向由具有所述相邻关系的节点中的前一节点对应的顶点指向下一节点对应的顶点。例如:
[0097] 第二容器中的集合{1,5}表示顶点1(H(q[0]))和顶点5(RX(q[0]))之间有边相连,且边的方向由顶点1(H(q[0]))指向顶点5(RX(q[0]));
[0098] 第二容器中的集合{2,6}表示顶点2(H(q[1]))和顶点6(CNOT(q[1],q[2]))之间有边相连,且边的方向由顶点2(H(q[1]))指向顶点6(CNOT(q[1],q[2]));
[0099] 第二容器中的集合{3,6}表示顶点3(H(q[2]))和顶点6(CNOT(q[1],q[2]))之间有边相连,且边的方向由顶点3(H(q[2]))指向顶点6(CNOT(q[1],q[2]));
[0100] 第二容器中的集合{4,7}表示顶点4(H(q[3]))和顶点7(RX(q[3]))之间有边相连,且边的方向由顶点4(H(q[3]))指向顶点7(RX(q[3]));
[0101] 第二容器中的集合{6,8}表示顶点6(CNOT(q[1],q[2]))和顶点8(RX(q[1]))之间有边相连,且边的方向由顶点6(CNOT(q[1],q[2]))指向顶点8(RX(q[1]));
[0102] 第二容器中的集合{6,9}表示顶点6(CNOT(q[1],q[2]))和顶点9(H(q[2]))之间有边相连,且边的方向由顶点6(CNOT(q[1],q[2]))指向顶点9(H(q[2]));
[0103] 第二容器中的集合{7,10}表示顶点7(RX(q[3]))和顶点10(CNOT(q[2],q[3]))之间有边相连,且边的方向由顶点7(RX(q[3]))指向顶点10(CNOT(q[2],q[3]));
[0104] 第二容器中的集合{9,10}表示顶点9(H(q[2]))和顶点10(CNOT(q[2],q[3]))之间有边相连,且边的方向由顶点9(H(q[2]))指向顶点10(CNOT(q[2],q[3]));
[0105] 综合各个顶点的指向关系,得到如图4所示的量子线路对应的有向无环图的示意图。
[0106] 示例性的,参见图5,图5为本发明实施例提供的另一种量子线路的示意图;可以理解的是,一个量子程序整体上对应有一条总的量子线路,本发明实施例所述量子程序即指该条总的量子线路。
[0107] 具体的,遍历量子程序的节点,首先获取量子线路量子比特数和各量子逻辑门的唯一标识符,例如,0号比特操作的第一个量子逻辑门H门节点的唯一标识符为“0”;最后一个量子比特4号比特操作的第一个量子逻辑门H门节点的唯一标识符为“3”,其中,量子逻辑门的唯一标识符按照量子逻辑门的执行时序进行标记。则遍历量子程序的节点分别为:节点0H(q[0])、节点1H(q[1])、节点2CNOT(q[3],q[2])、节点3H(q[4])、节点4RX(q[0])、节点5H(q[2])、节点6CNOT(q[3],q[4])、节点7CNOT(q[0],q[1])、节点8CNOT(q[3],q[2])、节点
9RX(q[4])、节点10H(q[1])、节点11H(q[2])、节点12CNOT(q[4],q[3])。
[0108] 在遍历量子线路的节点过程中,记录当前遍历到的节点操作的量子比特序号和唯一标识符,以更新遍历过程中每个比特对应的最后一个节点。并且,创建第一容器,用于记录每个比特对应的最后一个节点及当前遍历到的节点的信息;创建第二容器,用于记录最后一个节点与当前遍历到的节点之间的相邻关系。其中,量子比特对应的最后一个节点是指当前遍历到的量子逻辑门节点的前驱节点。
[0109] 首先,按照节点操作的量子比特依序遍历量子程序的节点。从量子线路的第一层开始,遍历到H(q[0]),则记录当前遍历的H门操作的量子比特序号0及其唯一标识符“0”,即:(0,0)。初始第一容器中没有元素,即H门没有前驱节点,即当前量子比特对应的最后一个节点为空。在第一容器记录0号比特对应的最后一个节点及当前遍历到节点的唯一标识符信息,为空和0,则记为[0]。由于最后一个节点为空,与下一个节点也就是当前遍历到的节点不存在相邻关系,则第二容器不进行记录。然后,依序遍历到第一层内的H(q[1])、CNOT(q[3],q[2])、H(q[4]),处理流程同理。
[0110] 当遍历至量子线路第二层的起始,即遍历至节点RX(q[0])时,RX门操作的量子比特序号为0,唯一标识符为4,则记录(0,4),此时RX(q[0])的前驱节点为H(q[0]),则更新0号量子比特对应的最后一个节点,即由空更新为H(q[0]),其唯一标识符为“0”。在第一容器记录当前0号比特对应的最后一个节点H(q[0])及当前遍历到的节点RX(q[0])的唯一标识符信息,记为[0,4]。同时,在第二容器记录当前0号比特对应的最后一个节点H(q[0])与当前遍历到的节点RX(q[0])之间的相邻关系,以唯一标识符的形式记录,即记为{0,4},表示节点0和节点4相邻。
[0111] 遍历到节点CNOT(q[3],q[4])时,CNOT门操作的量子比特序号为3和4,唯一标识符为6,则记录(3,6)和(4,6),该节点6的前驱节点为CNOT(q[3],q[2])和H(q[4]),则更新3号比特的最后一个节点为CNOT(q[3],q[2])、更新4号比特的最后一个节点为H(q[4]),其余节点的处理流程同理,在此不做赘述。
[0112] 具体的,按照上述方法,继续依序遍历如图5所示的量子程序的节点,记录量子线路第一层0、1、2、3、4号比特当前遍历节点的量子逻辑门节点的唯一标识符,并同时在第一容器和第二容器内记录节点唯一标识符,得到如表5所示的量子线路第一层的遍历结果,其中,每一层内的节点分别操作的量子比特互不相同:
[0113] 表5:图5所示量子线路第一层的遍历结果表
[0114]
[0115] 具体的,按照上述方法,继续依序遍历如图5所示的量子程序的节点,记录量子线路第二层0、1、2、3、4号比特当前遍历节点的量子逻辑门节点的唯一标识符,并同时在第一容器和第二容器内记录节点唯一标识符,得到如表6所示的量子线路第二层的遍历结果,其中,每一层内的节点分别操作的量子比特互不相同:
[0116] 表6:图5所示量子线路第二层的遍历结果表
[0117]
[0118] 具体的,按照上述方法,继续依序遍历如图5所示的量子程序的节点,记录量子线路第三层0、1、2、3、4号比特当前遍历节点的量子逻辑门节点的唯一标识符,并同时在第一容器和第二容器内记录节点唯一标识符,得到如表7所示的量子线路第三层的遍历结果,其中,每一层内的节点分别操作的量子比特互不相同:
[0119] 表7:图5所示量子线路第三层的遍历结果表
[0120]
[0121] 具体的,按照上述方法,继续依序遍历如图5所示的量子程序的节点,记录量子线路第四层0、1、2、3、4号比特当前遍历节点的量子逻辑门节点的唯一标识符,并同时在第一容器和第二容器内记录节点唯一标识符,得到如表8所示的量子线路第四层的遍历结果,其中,每一层内的节点分别操作的量子比特互不相同:
[0122] 表8:图5所示量子线路第四层的遍历结果表
[0123]
[0124] S103:根据所述节点及节点之间的关联关系,生成与所述量子程序对应的有向无环图;其中,所述有向无环图中的顶点表征节点,所述有向无环图中的边表征节点之间的关联关系;其中,所述边的方向表征该边相连的顶点对应的节点被执行的时序关系。
[0125] 具体的,
[0126] S1031:构建与所述量子操作节点对应的顶点;
[0127] 具体的,第一容器中用于记录每个比特对应的最后一个节点及当前遍历到的节点的信息的集合,用于构建对应的量子逻辑门节点对应的顶点。例如:
[0128] 第一容器中的集合[0],即构建对应的顶点0(H(q[0]));
[0129] 第一容器中的集合[1],即构建对应的顶点1(H(q[1]));
[0130] 第一容器中的集合[2],即构建对应的顶点2(CNOT(q[3],q[2]));
[0131] 第一容器中的集合[3],即构建对应的顶点3(H(q[4]));
[0132] 第一容器中的集合[0,4],即构建对应的顶点0(H(q[0]))和顶点4(RX(q[0]));
[0133] 第一容器中的集合[2,5],即构建对应的顶点2(CNOT(q[3],q[2]))和顶点5(H(q[2]));
[0134] 第一容器中的集合[2,6],即构建对应的顶点2(CNOT(q[3],q[2]))和顶点6(CNOT(q[3],q[4]));
[0135] 第一容器中的集合[3,6],即构建对应的顶点3(H(q[4]))和顶点6(CNOT(q[3],q[4]));
[0136] 第一容器中的集合[4,7],即构建对应的顶点4(RX(q[0]))和顶点7(CNOT(q[0],q[1]));
[0137] 第一容器中的集合[1,7],即构建对应的顶点1(H(q[1]))和顶点7(CNOT(q[0],q[1]));
[0138] 第一容器中的集合[5,8],即构建对应的顶点5(H(q[2]))和顶点8(CNOT(q[3],q[2]));
[0139] 第一容器中的集合[6,8],即构建对应的顶点6(CNOT(q[3],q[4]))和顶点8(CNOT(q[3],q[2]));
[0140] 第一容器中的集合[6,9],即构建对应的顶点6(CNOT(q[3],q[4]))和顶点9(RX(q[4]));
[0141] 第一容器中的集合[7,10],即构建对应的顶点7(CNOT(q[0],q[1]))和顶点10(H(q[1]));
[0142] 第一容器中的集合[8,11],即构建对应的顶点8(CNOT(q[3],q[2]))和顶点11(H(q[2]));
[0143] 第一容器中的集合[8,12],即构建对应的顶点8(CNOT(q[3],q[2]))和顶点12(CNOT(q[4],q[3]));
[0144] 第一容器中的集合[9,12],即构建对应的顶点9(RX(q[4]))和顶点12(CNOT(q[4],q[3]));
[0145] 得到如图6所示的量子线路对应的带顶点信息的示意图。
[0146] S1032:构建具有所述相邻关系的节点对应的顶点之间的边,其中,所述边的方向由具有所述相邻关系的节点中的前一节点对应的顶点指向下一节点对应的顶点。
[0147] 具体的,第二容器中用于记录最后一个节点与当前遍历到的节点之间的相邻关系,用于构建具有所述相邻关系的节点对应的顶点之间的边,其中,所述边的方向由具有所述相邻关系的节点中的前一节点对应的顶点指向下一节点对应的顶点。例如:
[0148] 第二容器中的集合{0,4}表示顶点0(H(q[0]))和顶点4(RX(q[0]))之间有边相连,且边的方向由顶点0(H(q[0]))指向顶点4(RX(q[0]));
[0149] 第二容器中的集合{2,5}表示顶点2(CNOT(q[3],q[2]))和顶点5(H(q[2]))之间有边相连,且边的方向由顶点2(CNOT(q[3],q[2]))指向顶点5(H(q[2]));
[0150] 第二容器中的集合{2,6}表示顶点2(CNOT(q[3],q[2]))和顶点6(RX(q[3]))之间有边相连,且边的方向由顶点2(CNOT(q[3],q[2]))指向顶点6(RX(q[3]));
[0151] 第二容器中的集合{3,6}表示顶点3(H(q[4]))和顶点6(RX(q[3]))之间有边相连,且边的方向由顶点3(H(q[3]))指向顶点6(CNOT(q[3],q[4]));
[0152] 第二容器中的集合{4,7}表示顶点4(RX(q[0]))和顶点7(CNOT(q[0],q[1]))之间有边相连,且边的方向由顶点4(RX(q[0]))指向顶点7(CNOT(q[0],q[1]));
[0153] 第二容器中的集合{1,7}表示顶点1(H(q[1]))和顶点7(CNOT(q[0],q[1]))之间有边相连,且边的方向由顶点1(H(q[1]))指向顶点7(CNOT(q[0],q[1]));
[0154] 第二容器中的集合{5,8}表示顶点5(H(q[2]))和顶点8(CNOT(q[3],q[2]))之间有边相连,且边的方向由顶点5(H(q[2]))指向顶点8(CNOT(q[3],q[2]));
[0155] 第二容器中的集合{6,8}表示顶点6(CNOT(q[3],q[4]))和顶点8(CNOT(q[3],q[2]))之间有边相连,且边的方向由顶点6(CNOT(q[3],q[4]))指向顶点8(CNOT(q[3],q[2]));
[0156] 第二容器中的集合{6,9}表示顶点6(CNOT(q[3],q[4]))和顶点9(RX(q[4]))之间有边相连,且边的方向由顶点6(CNOT(q[3],q[4]))指向顶点9(RX(q[4]));
[0157] 第二容器中的集合{7,10}表示顶点7(CNOT(q[0],q[1]))和顶点10(H(q[1]))之间有边相连,且边的方向由顶点7(CNOT(q[0],q[1]))指向顶点10(H(q[1]));
[0158] 第二容器中的集合{8,11}表示顶点8(CNOT(q[3],q[2]))和顶点11(H(q[2]))之间有边相连,且边的方向由顶点8(CNOT(q[3],q[2]))指向顶点11(H(q[2]));
[0159] 第二容器中的集合{8,12}表示顶点8(CNOT(q[3],q[2]))和顶点12(RX(q[3]))之间有边相连,且边的方向由顶点8(CNOT(q[3],q[2]))指向顶点12(CNOT(q[4],q[3]));
[0160] 第二容器中的集合{9,12}表示顶点9(RX(q[4]))和顶点12(CNOT(q[4],q[3]))之间有边相连,且边的方向由顶点9(RX(q[4]))指向顶点12(CNOT(q[4],q[3]));
[0161] 综合各个顶点的指向关系,得到如图7所示的量子线路对应的有向无环图的示意图。
[0162] 参见图8,图8是本发明实施例提供的一种量子程序转有向无环图方法装置的结构示意图,与图1所示的流程相对应,可以包括:
[0163] 获取模块801,用于获取量子程序的节点;
[0164] 确定模块802,用于根据所述节点操作的量子比特,确定所述节点之间的关联关系;
[0165] 生成模块803,用于根据所述节点及节点之间的关联关系,生成与所述量子程序对应的有向无环图;其中,所述有向无环图中的顶点表征节点,所述有向无环图中的边表征节点之间的关联关系;其中,所述边的方向表征该边相连的顶点对应的节点被执行的时序关系。
[0166] 具体的,获取模块,包括:
[0167] 遍历单元,用于遍历量子程序的节点,得到所述量子程序中各量子操作节点的节点信息。
[0168] 具体的,确定模块,包括:
[0169] 确定单元,用于针对每一所述量子操作节点,从该节点操作的量子比特依序执行的所有量子操作节点中,确定该节点的下一节点,得到该节点与下一节点之间的相邻关系。
[0170] 生成模块,包括:
[0171] 第一构建单元,用于构建与所述量子操作节点对应的顶点;
[0172] 第二构建单元,用于构建具有所述相邻关系的节点对应的顶点之间的边,其中,所述边的方向由具有所述相邻关系的节点中的前一节点对应的顶点指向下一节点对应的顶点。
[0173] 因此,本申请实现一种通过将量子程序转化为对应的有向无环图的方法,并基于此方法,从而在量子程序中可以查询出指定结构的量子线路。
[0174] 本发明实施例还提供一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
[0175] 具体的,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
[0176] S101:获取量子程序中的节点;
[0177] S102:根据所述节点操作的量子比特,确定所述节点之间的关联关系;
[0178] S103:根据所述节点及节点之间的关联关系,生成与所述量子程序对应的有向无环图;其中,所述有向无环图中的顶点表征节点,所述有向无环图中的边表征节点之间的关联关系;其中,所述边的方向表征该边相连的顶点对应的节点被执行的时序关系。
[0179] 具体的,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
[0180] 因此,本申请实现一种通过将量子程序转化为对应的有向无环图的方法,并基于此方法,从而在量子程序中可以查询出指定结构的量子线路。
[0181] 本发明实施例还提供一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
[0182] 具体的,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
[0183] 具体的,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
[0184] S101:获取量子程序中的节点;
[0185] S102:根据所述节点操作的量子比特,确定所述节点之间的关联关系;
[0186] S103:根据所述节点及节点之间的关联关系,生成与所述量子程序对应的有向无环图;其中,所述有向无环图中的顶点表征节点,所述有向无环图中的边表征节点之间的关联关系;其中,所述边的方向表征该边相连的顶点对应的节点被执行的时序关系。
[0187] 因此,本申请实现一种通过将量子程序转化为对应的有向无环图的方法,并基于此方法,从而在量子程序中可以查询出指定结构的量子线路。
[0188] 以上依据图式所示的实施例详细说明了本发明的构造、特征及作用效果,以上所述仅为本发明的较佳实施例,但本发明不以图面所示限定实施范围,凡是依照本发明的构想所作的改变,或修改为等同变化的等效实施例,仍未超出说明书与图示所涵盖的精神时,均应在本发明的保护范围内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈