1.本公开涉及量子计算技术领域,尤其涉及量子通信技术领域,具体涉及一种量子电路运行方法、装置及电子设备。
背景技术:2.量子网络是通过量子技术赋能经典网络的一种方式,通过对量子资源以及量子通信技术的使用,来提升经典网络的信息处理能力,加强信息传输的安全性,提供全新的互联网服务。
3.区别于通常的量子算法,量子网络协议的操作中除了不同节点对其本地寄存器中的经典信息和量子信息进行操作外,还存在节点之间的经典信息与量子信息的交互。可以将量子网络协议等效编译为量子电路,编译得到的量子电路通常为广义量子电路,即该量子电路除了包括量子测量操作和量子门操作之外,还可以包括将量子比特的量子态重置至零态的重置操作和中间测量。
4.目前,在量子网络协议等效编译为包括重置操作和中间测量的广义量子电路的情况下,可以直接在量子计算机上运行该类广义量子电路,以实现该量子网络协议的逻辑仿真。
技术实现要素:5.本公开提供了一种量子电路运行方法、装置及电子设备。
6.根据本公开的第一方面,提供了一种量子电路运行方法,包括:
7.获取第一指令列表,所述第一指令列表中的操作指令用于指示与量子网络协议等效的第一量子电路的量子操作,所述第一指令列表包括:第一类型的第一操作指令,所述第一类型指示将量子比特的量子态重置至零态的量子操作;
8.基于所述第一指令列表,获取第一量子位,所述第一量子位为所述第一量子电路的量子位中标号最大的量子位;
9.基于所述第一指令列表和所述第一量子位,对所述第一量子电路进行标准化处理,得到第二指令列表,所述第二指令列表用于指示与所述第一量子电路等效的第二量子电路的量子操作,所述第二指令列表包括第二操作指令,所述第二操作指令是将第三操作指令的第二量子位更新为第三量子位得到,所述第三操作指令为所述第一指令列表中位于所述第一操作指令之后的操作指令,所述第三量子位的标号大于所述第一量子位的标号,所述第二量子位为所述第一操作指令中的量子位,所述第二指令列表包括第二类型的操作指令和第三类型的操作指令,所述第二类型的操作指令位于第三类型的操作指令之后,所述第二类型指示量子操作为量子测量操作,所述第三类型指示量子操作为量子比特的门操作;
10.基于所述第二指令列表运行所述第二量子电路,得到所述量子网络协议的仿真结果。
11.根据本公开的第二方面,提供了一种量子电路运行装置,包括:
12.第一获取模块,用于获取第一指令列表,所述第一指令列表中的操作指令用于指示与量子网络协议等效的第一量子电路的量子操作,所述第一指令列表包括:第一类型的第一操作指令,所述第一类型指示将量子比特的量子态重置至零态的量子操作;
13.第二获取模块,用于基于所述第一指令列表,获取第一量子位,所述第一量子位为所述第一量子电路的量子位中标号最大的量子位;
14.标准化处理模块,用于基于所述第一指令列表和所述第一量子位,对所述第一量子电路进行标准化处理,得到第二指令列表,所述第二指令列表用于指示与所述第一量子电路等效的第二量子电路的量子操作,所述第二指令列表包括第二操作指令,所述第二操作指令是将第三操作指令的第二量子位更新为第三量子位得到,所述第三操作指令为所述第一指令列表中位于所述第一操作指令之后的操作指令,所述第三量子位的标号大于所述第一量子位的标号,所述第二量子位为所述第一操作指令中的量子位,所述第二指令列表包括第二类型的操作指令和第三类型的操作指令,所述第二类型的操作指令位于第三类型的操作指令之后,所述第二类型指示量子操作为量子测量操作,所述第三类型指示量子操作为量子比特的门操作;
15.运行模块,用于基于所述第二指令列表运行所述第二量子电路,得到所述量子网络协议的仿真结果。
16.根据本公开的第三方面,提供了一种电子设备,包括:
17.至少一个处理器;以及
18.与至少一个处理器通信连接的存储器;其中,
19.存储器存储有可被至少一个处理器执行的指令,该指令被至少一个处理器执行,以使至少一个处理器能够执行第一方面中的任一项方法。
20.根据本公开的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,该计算机指令用于使计算机执行第一方面中的任一项方法。
21.根据本公开的第五方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序在被处理器执行时实现第一方面中的任一项方法。
22.根据本公开的技术解决了广义量子电路在量子计算机上的运行比较困难的问题,可以匹配可运行量子电路的量子计算机的当前硬件条件,从而可以降低广义量子电路的运行难度。
23.应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
24.附图用于更好地理解本方案,不构成对本公开的限定。其中:
25.图1是根据本公开第一实施例的量子电路运行方法的流程示意图;
26.图2是一示例的标准量子电路图的结构示意图;
27.图3是一示例的广义量子电路的结构示意图;
28.图4是重置操作经过处理后的广义量子电路的结构示意图;
29.图5是经过推迟测量处理后的标准量子电路的结构示意图;
30.图6是一实例的标准量子电路图的结构示意图;
31.图7是一实例的广义量子电路的结构示意图;
32.图8是根据本公开第二实施例的量子电路运行装置的结构示意图;
33.图9是用来实施本公开的实施例的示例电子设备的示意性框图。
具体实施方式
34.以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
35.第一实施例
36.如图1所示,本公开提供一种量子电路运行方法,包括如下步骤:
37.步骤s101:获取第一指令列表,所述第一指令列表中的操作指令用于指示与量子网络协议等效的第一量子电路的量子操作,所述第一指令列表包括:第一类型的第一操作指令,所述第一类型指示将量子比特的量子态重置至零态的量子操作。
38.本实施例中,量子电路运行方法涉及量子计算技术领域,尤其涉及量子通信技术领域,其可以广泛应用于量子网络协议的设计场景下。本公开实施例的量子电路运行方法,可以由本公开实施例的量子电路运行装置执行。本公开实施例的量子电路运行装置可以配置在电子设备中,以执行本公开实施例的量子电路运行方法。该电子设备可以为量子计算机。
39.量子网络协议可以为进行量子通信的各方为完成通信遵循的事先约定的一组规则。区别于通常的量子算法,量子网络协议的操作中除了不同节点对其本地寄存器中的经典信息和量子信息进行操作外,还存在节点之间的经典信息与量子信息的交互。
40.这种交互方式一方面给量子网络带来了前所未有的计算性能(例如,分布式量子算法指数提升量子计算机算力)和安全性(例如,盲量子计算保护用户计算隐私);另一方面,也为其量子网络协议设计及其模拟带来了难点。
41.目前,当前量子计算机的具体实现并不能直接满足量子网络协议中某些理论上的操作需求,比如将部分量子比特进行测量并通过测量结果调控其余量子比特,在量子测量完成后将某些量子比特重置以供后续计算继续使用等,这些量子网络协议中常用的操作均较难在当前量子计算机上实现。因此,如何在一台量子计算机上模拟量子网络协议中的常用操作,进而运行整个量子网络协议,是一个业界广泛关注的难题。
42.目前,可以将量子网络协议等效编译成量子电路,并在量子计算机上运行该量子电路,以实现量子网络协议的逻辑仿真,进一步有助于完成量子网络协议的真机部署。
43.在量子网络协议的等效编译过程中,量子网络协议可以包括将部分量子比特进行测量并通过测量结果调控其余量子比特的操作,相应的,等效编译得到的量子电路可以包括由经典信息控制的量子门操作即经典控制量子操作。
44.而除了包括测量操作和量子比特门操作(如单量子比特门操作和双量子比特门操作),还包括其他量子操作(如中间测量和经典控制量子操作)的量子电路可以称之为广义量子电路。也就是说,可以将量子网络协议的相关指令等效编译为含有中间测量以及经典
控制量子操作的广义量子电路,经典控制量子操作,使得量子电路对于量子网络协议的模拟仿真程度更高。
45.针对这类广义量子电路(其包括中间测量和经典控制量子操作),可以利用推迟测量原理,将广义量子电路转化为标准量子电路,并交付量子计算机运行。
46.然而,在一些场景中,为了降低所等效编译成的量子电路的宽度,可以在量子测量完成后将某些量子比特重置以供后续计算继续使用,相应的,等效编译得到的广义量子电路可以包括重置操作,该重置操作用于将量子比特的量子态重置为零态。
47.这种量子网络协议的等效编译方式,引入了量子比特的重置操作,而重置操作的引入,使得部分量子比特在测量并重置后可以继续投入后续计算使用,从而能够大幅度减少广义量子电路所需的量子比特数,使得用较少的量子比特连续完成多轮量子网络协议运行成为可能。
48.但是,这种量子网络协议的等效编译方式(即引入了重置操作的等效编译方式),对硬件条件提出了更高的要求,而当前量子计算机正处于发展初期,很多操作在技术上并不成熟,且不同硬件平台可以实现的具体操作也有所差异,因此,由于技术条件的限制,重置操作和经典控制量子操作只能在少数量子计算机上实现,同时当前技术操作的成熟度也较低,使得对于该方案编译出的广义量子电路的运行并不具有普遍性。
49.基于此,本实施例提出了一种可以将广义量子电路(其包括中间测量、重置操作和经典控制量子操作)等效编译为标准量子电路(其仅包含测量操作和量子比特门操作)的方案,这样可以使得量子网络协议在当前硬件条件下的真机模拟运行成为可能,同时也可以使得量子网络协议的真机部署方案的应用场景更为灵活。
50.以下对标准量子电路和广义量子电路的相关内容进行详细说明。
51.量子电路模型是一种常用的量子计算模型。通过对初始量子态进行量子门操作完成量子态的演化,并通过量子测量提取计算结果。而量子电路图则表示了量子电路模型计算的全部过程。
52.图2是一示例的标准量子电路图的结构示意图,如图2所示,可以用一根水平线表示一个量子比特系统,从上至下依次对量子比特位进行标号,其中,量子位的标号往往从零开始,量子位的总个数定义为量子电路的宽度。
53.通常约定量子电路图从左往右读取,最左端为初始的量子态,其中,通常每个量子比特初始化为零态,之后对初始态依次作用不同的量子门操作以完成量子态的演化。在量子电路图的最右端,可以对每个量子比特系统进行量子测量,得到测量结果。
54.如果一个量子电路中的所有测量操作都位于量子电路的最末端,且量子电路中不包含重置操作和经典控制量子操作,则此类量子电路称为标准量子电路。
55.量子电路图中除了初始量子态以外的其余部分,通常可以按照量子门的作用顺序用一个有序的指令列表进行表示,指令列表中每个元素代表一个操作指令,该操作指令可以为量子门操作指令或者量子测量操作指令。
56.每一个单比特量子门(如h,x,y,z,s,t,rx,ry,rz等)表示为一个包含四个元素的操作指令[name,which_qubit,parameters,condition],其中name为量子门的名称,which_qubit为量子门作用的量子位,parameters为量子门的参数(如没有参数则默认为none),condition表示该量子门操作受哪一个量子位测量结果的控制(标准量子电路中该参数默
认为none)。例如,[rx,2,pi,none]表示对量子位2上的量子比特作用一个rx旋转门,旋转角度为pi。
[0057]
每一个双比特量子门(如控制非门cnot,控制z门cz)表示为一个包含四个元素的指令[name,which_qubit,parameters,condition]。其中,name为量子门的名称,which_qubit为控制位和受控位构成的列表,parameters为量子门的参数(如没有参数则默认为none),标准量子电路中condition参数默认为none。例如,[swap,[1,2],none,none]表示在量子位1和2之间作用swap门;[cnot,[1,3],none,none]表示对量子位1和量子位3作用控制非门,其中量子位1为控制位,量子位3为受控位。
[0058]
每一个计算基下的测量表示为一个包含四个元素的指令[measure,which_qubit,none,none]。例如,[measure,2,none,none]表示对量子位2进行计算基下的测量。
[0059]
图3是一示例的广义量子电路的结构示意图,如图3所示,广义量子电路中可以包括经典控制量子门301和重置操作302,经典控制量子门可以指的是基于经典信息所控制的量子门,经典控制量子门的操作指令可以表示为[name,which_qubit,parameters,condition]。其中,name为量子门的名称,which_qubit为量子门作用的量子位,parameters为量子门的参数(如没有参数则默认为none),condition表示该量子门受哪一个量子位的测量结果的控制。
[0060]
例如,图3中经典控制量子门301为经典受控量子x门,可以表示为[x,2,none,1],即作用在量子位2上的泡利pauli x门,受控条件为量子位1上量子比特的测量结果,测量结果为0时则不作用量子门,测量结果为1时则作用量子门。
[0061]
重置操作的操作指令可以表示为一个包含四个元素的指令[reset,which_qubit,none,none],其中,which_qubit为需要重置的量子比特的量子位,经过重置操作后,该量子比特可供后续计算继续使用。
[0062]
按照如上的操作指令表示规则,图3中的广义量子电路可以表示为有序指令列表:circuit=[[h,0,none,none],[h,1,none,none],[h,2,none,none],[cnot,[0,1],none,none],[swap,[1,2],none,none],[h,0,none,none],[h,1,none,none],[h,2,none,none],[measure,1,none,none],[x,2,none,1],[reset,1,none,none],[cnot,[0,1],none,none],[measure,0,none,none],[measure,1,none,none],[measure,2,none,none]]。
[0063]
在步骤s101中,第一指令列表可以为量子网络协议等效的第一量子电路中量子操作的有序指令列表,第一指令列表中可以包括第一类型的第一操作指令,第一类型的操作指令为将量子比特的量子态重置至零态的量子操作(即重置操作),也即第一量子电路可以为广义量子电路。
[0064]
可以基于量子网络协议的操作信息,对量子网络协议进行等效编译,得到第一指令列表。
[0065]
步骤s102:基于所述第一指令列表,获取第一量子位,所述第一量子位为所述第一量子电路的量子位中标号最大的量子位。
[0066]
该步骤中,可以遍历第一指令列表中操作指令所作用的量子位,获取操作指令所作用的量子位中标号最大的量子位,从而得到第一量子位。
[0067]
步骤s103:基于所述第一指令列表和所述第一量子位,对所述第一量子电路进行标准化处理,得到第二指令列表,所述第二指令列表用于指示与所述第一量子电路等效的
第二量子电路的量子操作,所述第二指令列表包括第二操作指令,所述第二操作指令是将第三操作指令的第二量子位更新为第三量子位得到,所述第三操作指令为所述第一指令列表中位于所述第一操作指令之后的操作指令,所述第三量子位的标号大于所述第一量子位的标号,所述第二量子位为所述第一操作指令中的量子位,所述第二指令列表包括第二类型的操作指令和第三类型的操作指令,所述第二类型的操作指令位于第三类型的操作指令之后,所述第二类型指示量子操作为量子测量操作,所述第三类型指示量子操作为量子比特的门操作。
[0068]
该步骤中,标准化处理指的是将广义量子电路等效编译为标准量子电路,得到与第一量子电路等效的第二量子电路(即标准量子电路)的第二指令列表。也即需要对第一指令列表中不属于标准量子电路的操作指令进行处理,并将各测量操作迁移到量子比特门操作之后。
[0069]
对于第一量子电路中重置操作的等效编译,由于量子比特在经过重置操作后会归于零态,如同一个全新的量子比特一样,因此,对于广义量子电路中的重置操作,可以为其分配一个新的量子比特,并将重置后的所有该量子比特上的操作转移到新分配的量子比特上进行,同时将重置操作从第一指令列表中删除。
[0070]
其中,第一操作指令中的量子位(即第一操作指令对应量子操作所作用的量子位)为第二量子位,若第一指令列表中位于第一操作指令之后的操作指令中包括第二量子位,则该操作指令可以确定为第三操作指令,相应可以将第三操作指令中的第二量子位更新为第三量子位,得到第二操作指令,第三量子位可以为新分配的量子比特的量子位,该量子比特的量子位大于第一量子位。
[0071]
在一可选实施方式中,第三量子位可以为由第一量子位加1得到的量子位,若第一指令列表中第一操作指令的数量包括多个,则需要为每个重置操作均分配一个新的量子比特,相应的,针对每个重置操作中的第二量子位所更新的第三量子位需要唯一,且各不相同。例如,图3所示广义量子电路,在重置操作经过上述处理后的量子电路如图4所示。
[0072]
若第一指令列表中包括经典控制量子操作的操作指令,则可以通过推迟测量原理,将其等效转化为量子比特门操作,该量子比特门操作为量子控制操作,同时将测量操作迁移至量子电路的末端。其中,推迟测量原理为:任何在量子电路中间阶段的测量总可以被移至电路的末端;如果该测量结果被用于该电路的某一阶段的话,则经典条件操作可以被量子条件操作所代替。
[0073]
例如,如图4所示的广义量子电路,在经过推迟测量处理后的标准量子电路如图5所示。即经过标准化处理后,所得到的第二指令列表中第二类型的操作指令(即对应量子测量操作)均位于第三类型的操作指令(对应量子比特门操作)之后。
[0074]
步骤s104:基于所述第二指令列表运行所述第二量子电路,得到所述量子网络协议的仿真结果。
[0075]
该步骤中,第二指令列表对应的量子电路为仅包含量子比特门操作和测量操作的标准量子电路,可以交付支持这些相应操作的量子计算机运行,以获得量子网络协议的仿真结果。
[0076]
如此,可以使得量子网络协议在当前硬件条件下的真机模拟运行成为可能,也可以使得量子网络协议的真机部署方案的应用场景更为灵活。
[0077]
可选的,所述步骤s103具体包括:
[0078]
对所述第一指令列表进行针对所述第一操作指令的遍历,在遍历到所述第一操作指令的情况下,基于所述第一量子位和所述第一操作指令在遍历所述第一指令列表过程中出现的次数,确定所述第三量子位;
[0079]
将所述第一指令列表中所述第三操作指令的第二量子位更新为所述第三量子位;
[0080]
删除所述第一指令列表中的所述第一操作指令,得到第三指令列表;
[0081]
基于所述第三指令列表,对所述第三指令列表对应的量子电路进行标准化处理,得到所述第二指令列表。
[0082]
本实施方式中,可以通过对指令列表的两次遍历,来实现基于第一指令列表和第一量子位,对第一量子电路进行标准化处理。其中,第一次遍历处理其中的重置操作,第二次遍历处理是通过推迟测量原理,确保不出现中间测量,即所有量子测量操作均迁移至量子比特门操作之后,同时将经典控制量子操作转化为对应的量子控制操作。
[0083]
具体的,可以对第一指令列表进行针对第一操作指令即重置操作的操作指令的遍历,在遍历到第一操作指令的情况下,可以基于第一量子位和第一操作指令在遍历所述第一指令列表过程中出现的次数,确定第三量子位。
[0084]
比如,遍历过程中,若第一次出现重置操作的操作指令,则所确定的第三量子位的标号等于第一量子位的标号加1,若第二次出现重置操作的操作指令,则所确定的第三量子位的标号等于第一量子位的标号加2,依次类推。
[0085]
其中,每次出现重置操作的操作指令时,均需要进行第三操作指令的第二量子位的更新操作,循环进行,直至第一指令列表中重置操作的操作指令均处理完成。
[0086]
比如,第一次出现重置操作的操作指令时,可以将第一指令列表中位于该重置操作的操作指令之后的第三操作指令(其可以包括其他重置操作的操作指令)的第二量子位更新为第一量子位的标号加1得到的第三量子位,可以得到一个新的指令列表。处理完该重置操作的操作指令后,继续进行指令列表的遍历,遍历过程中,第二次出现重置操作的操作指令时,可以将指令列表中位于该重置操作的操作指令之后的第三操作指令的第二量子位(可以为上次处理后所更新得到的第三量子位)更新为第一量子位的标号加2(可以为上次处理得到的第三量子位的标号加1)得到的第三量子位。循环进行,直至第一指令列表中所有重置操作的操作指令均处理完成。
[0087]
重置操作的操作指令处理完成后,可以删除第一指令列表中的第一操作指令。其中,可以在每次处理完重置操作的操作指令后,即可以删除该重置操作的操作指令,也可以在第一操作指令的遍历完成的情况下,统一删除第一指令列表中的各个第一操作指令,这里不进行具体限定。
[0088]
第一操作指令遍历完成后,即可以得到第三指令列表。在得到第三指令列表的情况下,可以基于第三指令列表进行第二次遍历,并对第三指令列表中的中间测量以及经典控制量子操作的操作指令进行处理,以实现广义量子电路的标准化处理。
[0089]
如此,可以实现对广义量子电路的标准化处理。
[0090]
可选的,所述第三指令列表还包括第四类型的操作指令,所述第四类型指示量子操作为由经典信息控制的量子门操作,所述经典信息基于量子比特的量子测量操作得到,所述基于所述第三指令列表,对所述第三指令列表对应的量子电路进行标准化处理,得到
所述第二指令列表,包括:
[0091]
对所述第三指令列表进行针对所述第四类型的操作指令和所述第二类型的操作指令的遍历;在遍历到所述第四类型的操作指令的情况下,将所述第三指令列表中所述第四类型的操作指令替换为与所述第四类型的操作指令等效的操作指令,与所述第四类型的操作指令等效的操作指令为所述第三类型的操作指令;
[0092]
在遍历到所述第二类型的操作指令的情况下,删除所述第三指令列表中遍历到的所述第二类型的操作指令;
[0093]
将遍历到的所述第二类型的操作指令添加至操作指令删除后的所述第三指令列表中位于末尾的操作指令之后,得到所述第二指令列表。
[0094]
本实施方式中,第一指令列表中还可以包括第四类型的操作指令即经典控制量子操作的操作指令,由于经典控制量子操作是受控于其他量子比特的测量结果(该测量结果为经典信息),因此,在第一指令列表中存在经典控制量子操作的操作指令的情况下,经典控制量子操作之前通常会包括量子电路中间的量子测量操作。相应的,第三指令列表中也会包括经典控制量子操作,且经典控制量子操作之前通常会包括量子电路中间的量子测量操作。
[0095]
可以对第三指令列表进行针对经典控制量子操作和量子测量操作的操作指令的遍历;若遍历到经典控制量子操作的操作指令,则可以将第三指令列表中经典控制量子操作的操作指令替换为与其等效的量子比特门操作即控制量子门操作的操作指令。
[0096]
在遍历到量子测量操作的操作指令的情况下,删除第三指令列表中遍历到的量子测量操作的操作指令。其中,可以在每次遍历到量子测量操作的操作指令时即删除该操作指令,也可以将量子测量操作的操作指令添加至测量指令列表中,在遍历完成的情况下,再统一删除第三指令列表中的各个量子测量操作的操作指令。
[0097]
之后,可以将遍历到的量子测量操作的操作指令添加至删除量子测量操作的操作指令得到的第三指令列表中,位于末尾的操作指令之后,得到第二指令列表。
[0098]
如此,在第一指令列表包括经典控制量子操作的操作指令的情况下,可以进一步实现广义量子电路的标准化处理。
[0099]
可选的,所述在遍历到所述第二类型的操作指令的情况下,删除所述第三指令列表中遍历到的所述第二类型的操作指令;将遍历到的所述第二类型的操作指令添加至操作指令删除后的所述第三指令列表中位于末尾的操作指令之后,得到所述第二指令列表,包括:
[0100]
在遍历到所述第二类型的操作指令的情况下,将所述第二类型的操作指令添加到测量指令列表中;
[0101]
在针对所述第二类型的操作指令的遍历完成的情况下,删除所述第三指令列表中所述测量指令列表中的所述第二类型的操作指令;将所述测量指令列表添加至操作指令删除后的所述第三指令列表中位于末尾的操作指令之后,得到所述第二指令列表。
[0102]
本实施方式中,可以将量子测量操作的操作指令添加至测量指令列表中,在遍历完成的情况下,再统一删除第三指令列表中的各个量子测量操作的操作指令。
[0103]
具体实现过程中,可以在遍历到量子测量操作的操作指令的情况下,将量子测量操作的操作指令添加到测量指令列表中,并在针对量子测量操作的操作指令的遍历完成的
情况下,将测量指令列表中量子测量操作的操作指令从第三指令列表中删除,之后将测量指令列表中量子测量操作的操作指令按照顺序添加到已删除了量子测量操作的操作指令的第三指令列表的末尾。如此,可以实现对量子测量操作的操作指令的处理。
[0104]
可选的,所述删除所述第一指令列表中的所述第一操作指令,得到第三指令列表,包括:
[0105]
在针对所述第一操作指令的遍历完成的情况下,删除所述第一指令列表中的各个所述第一操作指令,得到第三指令列表。
[0106]
本实施方式中,在第一操作指令的遍历完成的情况下,即处理完成重置操作的操作指令后,再统一删除第一指令列表中各个第一操作指令。
[0107]
需要说明的是,第一次遍历过程中的标准化处理,其均是在第一指令列表的前提下进行的,在第一操作指令的遍历完成的情况下,由于新分配了一些量子比特,即一些操作指令中的量子位进行了更新,此时会得到一个新的指令列表。在该种情况下,删除第一指令列表中各个第一操作指令指的是删除该新的指令列表中各个重置操作的操作指令。
[0108]
即在第一次遍历过程中,若搜索到重置操作的操作指令后,并未立即删除,而是将其存入重置操作指令列表如命名为reset_gates的列表中,在完成量子电路的整个指令列表的遍历后,才将reset_gates中的元素从指令列表中删除,这样可以保证在循环遍历的过程中,整个指令列表包含的总元素数是不变的,以免产生遗漏。
[0109]
以下通过对指令列表的两次遍历,来实现基于第一指令列表和第一量子位,对第一量子电路进行标准化处理的过程进行详细说明。
[0110]
输入:包含重置操作和经典控制量子操作的广义量子电路的指令列表,用circuit表示。
[0111]
输出:等效的标准量子电路的指令列表,即更新后的circuit。
[0112]
基本思路为:获取输入的广义量子电路的最大量子位,用width表示,首次遍历广义量子电路的指令列表,每当遍历到重置操作的操作指令,记录其作用的量子位reset_qubit,并为量子电路分配一个新的量子比特,其量子位为width+1,将该重置操作后的所有作用在reset_qubit上的量子操作均迁移至新量子位width+1上,并更新广义量子电路的指令列表。第二次遍历更新后的指令列表,应用推迟测量原理,将经典控制量子操作的操作指令转化为量子控制操作的操作指令,并将所有量子位的量子测量操作的操作指令迁移至量子电路的指令列表末尾。
[0113]
其具体步骤如下:
[0114]
步骤1:初始化三个空列表,分别为reset_gates,reset_circuit和measure_gates;
[0115]
步骤2:获取输入的量子电路的指令列表circuit中的最大量子位,记录为width;
[0116]
步骤3:遍历搜索circuit列表,如果当前元素即操作指令为重置操作的操作指令,即[reset,which_qubit,none,none],则可以将当前元素加入到reset_gates列表中,记录被重置的量子比特的量子位which_qubit为reset_qubit,并将重置操作后的所有元素存入reset_circuit列表中,将这些元素从circuit列表中删除;之后为量子电路分配一个新的量子位,将width更新为width+1;
[0117]
之后,遍历搜索reset_circuit列表,如果当前元素为单量子比特门操作的操作指
令,即[name,which_qubit,parameters,condition]、量子测量操作的操作指令,即[measure,which_qubit,none,none],或重置操作的操作指令,即[reset,which_qubit,none,none];若该量子操作所作用的量子位which_qubit=reset_qubit,则将which_qubit更新为width;若该量子操作所作用的量子位which_qubit不等于reset_qubit,则不进行操作;
[0118]
如果当前元素为双量子比特门操作的操作指令,即[name,which_qubit,parameters,condition];若该量子操作所作用的量子位列表which_qubit包含reset_qubit,则将该量子位更新为width;若该量子操作所作用的量子位列表which_qubit不包含reset_qubit,则不进行操作;
[0119]
如果当前元素为经典控制量子操作的操作指令,即[name,which_qubit,parameters,condition];若该量子操作所作用的量子位which_qubit=reset_qubit或其条件量子位condition=reset_qubit,则将which_qubit或condition更新为width;若该量子操作所作用的量子位which_qubit或其条件量子位condition均不等于reset_qubit,则不进行操作;
[0120]
遍历完整个reset_circuit列表后,将其按照现有顺序添加至circuit列表的后方,再将reset_circuit列表初始化为空列表;
[0121]
步骤4:将circuit列表中所有reset_gates里包含的元素删除并保持其余元素相对位置不变;
[0122]
步骤5:循环遍历更新后的circuit列表;如果当前元素为经典控制量子操作的操作指令,即[name,which_qubit,parameters,condition],则将该元素替换为[ctrl_name,[condition,which_qubit],parameters,none],其中,ctrl_name为name对应的控制量子门的名称(例如x门变成控制x门即cnot门,z门变成控制z门);如果当前元素为量子测量操作的操作指令,则将其加入measure_gates列表中;
[0123]
步骤6:将circuit列表中所有measure_gates里包含的元素删除并且保持其余元素相对位置不变;
[0124]
步骤7:将measure_gates中的所有元素按原顺序添加至circuit列表之后并返回量子电路的指令列表。
[0125]
在该示例中,包含重置操作的广义量子电路列表中,通常会对同一量子位进行多次测量,如果首先处理量子测量操作的操作指令,则生成的measure_gates列表中可能会出现重复元素。因此,在第一次遍历circuit列表时,首先处理重置操作的操作指令,经过第一轮遍历后更新的circuit列表中,不再存在对同一量子位的多次测量,后续处理量子测量操作的操作指令时便不会产生上述差错。
[0126]
以下以具体实例来说明该示例的处理过程。
[0127]
输入广义量子电路的指令列表:
[0128]
circuit=[[h,0,none,none],[h,1,none,none],[h,2,none,none],[cnot,[1,2],none,none],[swap,[0,1],none,none],[h,0,none,none],[measure,1,none,none],[x,2,none,1],[reset,1,none,none],[measure,2,none,none],[h,1,none,none],[reset,2,none,none],[cnot,[0,2],none,none],[measure,1,none,none],[z,0,none,1],[measure,0,none,none],[measure,2,none,none]];该指令列表可以对应如图6所示的
广义量子电路。
[0129]
获取输入量子电路的指令列表中的最大量子位,其width=2;
[0130]
循环遍历circuit[]列表,遍历至[reset,1,none,none]元素时,reset_gates=[[reset,1,none,none]],reset_qubit=1,width=3;
[0131]
reset_circuit=[[measure,2,none,none],[h,1,none,none],[reset,2,none,none],[cnot,[0,2],none,none],[measure,1,none,none],[z,0,none,1],[measure,0,none,none],[measure,2,none,none]];circuit=[[h,0,none,none],[h,1,none,none],[h,2,none,none],[cnot,[1,2],none,none],[swap,[0,1],none,none],[h,0,none,none],[measure,1,none,none],[x,2,none,1],[reset,1,none,none]];
[0132]
循环遍历reset_circuit[]列表,处理该操作指令后,reset_circuit=[[measure,2,none,none],[h,3,none,none],[reset,2,none,none],[cnot,[0,2],none,none],[measure,3,none,none],[z,0,none,3],[measure,0,none,none],[measure,2,none,none]];
[0133]
更新circuit[]列表和reset_circuit[],得到circuit=[[h,0,none,none],[h,1,none,none],[h,2,none,none],[cnot,[1,2],none,none],[swap,[0,1],none,none],[h,0,none,none],[measure,1,none,none],[x,2,none,1],[reset,1,none,none],[measure,2,none,none],[h,3,none,none],[reset,2,none,none],[cnot,[0,2],none,none],[measure,3,none,none],[z,0,none,3],[measure,0,none,none],[measure,2,none,none]];reset_circuit=[];
[0134]
遍历至[reset,2,none,none]元素时,reset_gates=[[reset,1,none,none],[reset,2,none,none]];reset_qubit=2;width=4;
[0135]
reset_circuit=[[cnot,[0,2],none,none],[measure,3,none,none],[z,0,none,3],[measure,0,none,none],[measure,2,none,none]];
[0136]
circuit=[[h,0,none,none],[h,1,none,none],[h,2,none,none],[cnot,[1,2],none,none],[swap,[0,1],none,none],[h,0,none,none],[measure,1,none,none],[x,2,none,1],[reset,1,none,none],[measure,2,none,none],[h,3,none,none],[reset,2,none,none]];
[0137]
循环遍历reset_circuit[]列表,处理该操作指令后,reset_circuit=[[cnot,[0,4],none,none],[measure,3,none,none],[z,0,none,3],[measure,0,none,none],[measure,4,none,none]];
[0138]
更新circuit[]列表和reset_circuit[],得到circuit=[[h,0,none,none],[h,1,none,none],[h,2,none,none],[cnot,[1,2],none,none],[swap,[0,1],none,none],[h,0,none,none],[measure,1,none,none],[x,2,none,1],[reset,1,none,none],[measure,2,none,none],[h,3,none,none],[reset,2,none,none],[cnot,[0,4],none,none],[measure,3,none,none],[z,0,none,3],[measure,0,none,none],[measure,4,none,none]];reset_circuit=[];
[0139]
将reset_gates[]中包含的元素从circuit[]列表中删除,得到circuit=[[h,0,none,none],[h,1,none,none],[h,2,none,none],[cnot,[1,2],none,none],[swap,[0,1],none,none],[h,0,none,none],[measure,1,none,none],[x,2,none,1],[measure,2,
none,none],[h,3,none,none],[cnot,[0,4],none,none],[measure,3,none,none],[z,0,none,3],[measure,0,none,none],[measure,4,none,none]];
[0140]
再次循环遍历circuit[]列表;将量子测量操作的操作指令添加到measure_gates[],并将经典控制量子操作的操作指令替换为等效的控制量子门操作的操作指令,得到measure_gates=[[measure,1,none,none],[measure,2,none,none],[measure,3,none,none],[measure,0,none,none],[measure,4,none,none]];circuit=[[h,0,none,none],[h,1,none,none],[h,2,none,none],[cnot,[1,2],none,none],[swap,[0,1],none,none],[h,0,none,none],[measure,1,none,none],[cnot,[1,2],none,none],[measure,2,none,none],[h,3,none,none],[cnot,[0,4],none,none],[measure,3,none,none],[cz,[3,0],none,none],[measure,0,none,none],[measure,4,none,none]];
[0141]
将measure_gates[]中包含的元素从circuit[]列表中删除,得到circuit=[[h,0,none,none],[h,1,none,none],[h,2,none,none],[cnot,[1,2],none,none],[swap,[0,1],none,none],[h,0,none,none],[cnot,[1,2],none,none],[h,3,none,none],[cnot,[0,4],none,none],[cz,[3,0],none,none]];
[0142]
将measure_gates[]中包含的元素按顺序添加至circuit[];输出标准量子电路的指令列表,为circuit=[[h,0,none,none],[h,1,none,none],[h,2,none,none],[cnot,[1,2],none,none],[swap,[0,1],none,none],[h,0,none,none],[cnot,[1,2],none,none],[h,3,none,none],[cnot,[0,4],none,none],[cz,[3,0],none,none],[measure,1,none,none],[measure,2,none,none],[measure,3,none,none],[measure,0,none,none],[measure,4,none,none]],该指令列表可以对应如图7所示的标准量子电路。
[0143]
可选的,所述步骤s103具体包括:
[0144]
对所述第一指令列表进行针对目标操作指令的遍历,所述目标操作指令包括:所述第二类型的操作指令、第四类型的操作指令和所述第一操作指令,所述第四类型指示量子操作为由经典信息控制的量子门操作;
[0145]
按照从前到后的遍历顺序,基于遍历到的所述目标操作指令和所述第一量子位,对所述第一指令列表进行所述目标操作指令的类型对应的处理,得到所述第二指令列表,所述目标操作指令对应的处理用于对所述第一量子电路进行标准化处理。
[0146]
本实施方式中,只需遍历一次第一指令列表,同时处理其中的重置操作、量子测量操作以及经典控制量子操作的操作指令。也即目标操作指令包括重置操作、量子测量操作和经典控制量子操作的操作指令。
[0147]
这些操作指令在循环时的处理顺序是量子测量操作、经典控制量子操作、重置操作。其原因在于:在实际的量子电路中,上述三个量子操作出现的顺序往往为首先对某个量子位进行量子测量,之后根据测量结果进行经典控制量子操作(该量子操作也可能不存在),再对该量子位进行重置。因此,在遍历过程中,若遍历到三者中的任一操作指令,均进行相应的处理,以这样的顺序处理,可以避免在循环时遗漏掉某个元素。
[0148]
相应的,按照从前到后的遍历顺序,基于遍历到的目标操作指令和第一量子位,对第一指令列表进行目标操作指令的类型对应的处理,这样可以得到第二指令列表。其中,目标操作指令的类型不同,其对应的处理不同,比如,目标操作指令的类型为第二类型时,即目标操作指令为量子测量操作的操作指令,其处理可以为将其添加到测量指令列表中,目
标操作指令的类型为第一类型时,即目标操作指令为第一操作指令时,其处理可以为将指令列表中位于第一操作指令之后的第三操作指令的第二量子位更新为第三量子位。
[0149]
如此,可以通过一次遍历过程,实现对广义量子电路的标准化处理。
[0150]
可选的,所述按照从前到后的遍历顺序,基于遍历到的所述目标操作指令和所述第一量子位,对所述第一指令列表进行所述目标操作指令的类型对应的处理,包括:
[0151]
在按照从前到后的遍历顺序遍历到所述目标操作指令,且所述目标操作指令为所述第二类型的操作指令的情况下,将所述第二类型的操作指令添加到测量指令列表中;
[0152]
在按照从前到后的遍历顺序遍历到所述目标操作指令,且所述目标操作指令为所述第四类型的操作指令的情况下,将所述第一指令列表中所述第四类型的操作指令替换为与所述第四类型的操作指令等效的操作指令,与所述第四类型的操作指令等效的操作指令为所述第三类型的操作指令;
[0153]
在按照从前到后的遍历顺序遍历到所述目标操作指令,且所述目标操作指令为所述第一操作指令的情况下,基于所述第一量子位和所述第一操作指令在遍历所述第一指令列表过程中出现的次数,确定所述第三量子位;将所述第一指令列表中所述第三操作指令的第二量子位更新为所述第三量子位。
[0154]
本实施方式中,在遍历到目标操作指令,且其类型为第二类型时,即目标操作指令为量子测量操作的操作指令时,可以将其添加到测量指令列表中。
[0155]
在遍历到目标操作指令,且其类型为第四类型时,即目标操作指令为经典控制量子操作的操作指令时,可以将经典控制量子操作的操作指令替换为其等效的控制量子门的操作指令。
[0156]
在遍历到目标操作指令,且其类型为第一类型时,即目标操作指令为第一操作指令时,可以基于第一量子位和第一操作指令在遍历第一指令列表过程中出现的次数,确定第三量子位;将第一指令列表中第三操作指令的第二量子位更新为第三量子位。
[0157]
如此,可以按照从前到后的遍历顺序循环处理量子测量操作、经典控制量子操作和重置操作的操作指令,实现通过一次遍历进行广义量子电路的标准化处理。
[0158]
可选的,所述按照从前到后的遍历顺序,基于遍历到的所述目标操作指令和所述第一量子位,对所述第一指令列表进行所述目标操作指令的类型对应的处理之后,还包括:
[0159]
在所述目标操作指令的遍历完成的情况下,删除第四指令列表中的所述第一操作指令和所述第二类型的操作指令,所述第四指令列表为对所述第一指令列表进行所述目标操作指令的类型对应的处理之后得到的指令列表;
[0160]
将所述测量指令列表添加至所述第四指令列表中位于末尾的操作指令之后,得到所述第二指令列表。
[0161]
本实施方式中,在一次遍历完成,且处理完目标操作指令得到第四指令列表的情况下,可以删除第四指令列表中重置操作和量子测量操作的操作指令,并将测量指令列表添加至,删除重置操作和量子测量操作的操作指令得到的第四指令列表中,位于末尾的操作指令之后,得到第二指令列表。如此,可以实现第二指令列表的获取。
[0162]
以下通过对指令列表的一次遍历,来实现基于第一指令列表和第一量子位,对第一量子电路进行标准化处理的过程进行详细说明。
[0163]
输入:包含重置操作和经典控制量子操作的广义量子电路的指令列表,用circuit
表示。
[0164]
输出:等效的标准量子电路的指令列表,即更新后的circuit。
[0165]
其具体步骤如下:
[0166]
步骤1:初始化三个空列表,分别为reset_gates,reset_circuit和measure_gates;
[0167]
步骤2:获取输入的量子电路的指令列表circuit中的最大量子位,记录为width;
[0168]
步骤3:通过循环遍历搜索circuit列表;如果当前元素为量子测量操作的操作指令,即[measure,which_qubit,none,none],则将其添加到measure_gates列表中;如果当前元素为经典控制量子操作的操作指令,即[name,which_qubit,parameters,condition],则将其替换为控制量子门的操作指令,即[ctrl_name,[condition,which_qubit],none],其中,ctrl_name为name对应的控制量子门的名称;如果当前元素为重置操作的操作指令,即[reset,which_qubit,none,none],则首先将当前元素加入到reset_gates列表中,同时记录被重置的量子比特的量子位,which_qubit为reset_qubit,并将重置操作后的所有元素存入reset_circuit列表中,将这些元素在circuit列表中删除;并为量子电路分配一个新的量子位,将width更新为width+1;
[0169]
完成上述所有操作后,循环遍历reset_circuit列表;若当前元素为量子测量操作的操作指令,即[measure,which_qubit,none,none],单量子比特门操作的操作指令,即[name,which_qubit,parameters,condition]或重置操作的操作指令,即[reset,which_qubit,none,none];当该量子操作所作用的量子比特的量子位which_qubit=reset_qubit,则将which_qubit更新为width;当该量子操作所作用的量子比特的量子位which_qubit不等于reset_qubit,则不进行操作;
[0170]
如果当前元素为双量子比特门操作的操作指令,即[name,which_qubit,parameters,condition];当该量子操作所作用的量子比特的量子位列表which_qubit中包含reset_qubit,则将该量子位更新为width;当该量子操作所作用的量子比特的量子位列表which_qubit中不包含reset_qubit,则不进行操作;
[0171]
如果当前元素为经典控制量子操作的操作指令,即[name,which_qubit,parameters,condition];当该量子操作所作用的量子比特的量子位which_qubit=reset_qubit或其条件量子位condition=reset_qubit,则将which_qubit或condition更新为width;当该量子操作所作用的量子比特的量子位which_qubit与其条件量子位condition均不等于reset_qubit,则不进行操作;
[0172]
遍历整个reset_circuit列表后,将其按照现有顺序添加至circuit列表的后方,再将reset_circuit列表初始化为空列表;
[0173]
步骤4:将circuit列表中所有reset_gates以及measure_gates列表中包含的元素删除并保持其余元素相对位置不变;
[0174]
步骤5:将measure_gates中的所有元素按原顺序添加至circuit之后并返回更新后的量子电路的指令列表。
[0175]
以下以具体实例来说明该示例的处理过程。
[0176]
输入广义量子电路的指令列表,circuit=[[h,0,none,none],[h,1,none,none],[h,2,none,none],[cnot,[1,2],none,none],[swap,[0,1],none,none],[h,0,none,
none],[measure,1,none,none],[x,2,none,1],[reset,1,none,none],[measure,2,none,none],[h,1,none,none],[reset,2,none,none],[cnot,[0,2],none,none],[measure,1,none,none],[z,0,none,1],[measure,0,none,none],[measure,2,none,none]];该指令列表可以对应如图6所示的广义量子电路。
[0177]
获取输入量子电路的指令列表中的最大量子位,其width=2;
[0178]
循环遍历circuit[]列表;
[0179]
遍历至[measure,1,none,none];measure_gates=[[measure,1,none,none]];
[0180]
遍历至[x,2,none,1];circuit=[[h,0,none,none],[h,1,none,none],[h,2,none,none],[cnot,[1,2],none,none],[swap,[0,1],none,none],[h,0,none,none],[measure,1,none,none],[cnot,[1,2],none,none],[reset,1,none,none],[measure,2,none,none],[h,1,none,none],[reset,2,none,none],[cnot,[0,2],none,none],[measure,1,none,none],[z,0,none,1],[measure,0,none,none],[measure,2,none,none]];
[0181]
遍历至[reset,1none,none];reset_gates=[[reset,1,none,none],];reset_qubit=1;width=3;reset_circuit=[[measure,2,none,none],[h,1,none,none],[reset,2,none,none],[cnot,[0,2],none,none],[measure,1,none,none],[z,0,none,1],[measure,0,none,none],[measure,2,none,none]];circuit=[[h,0,none,none],[h,1,none,none],[h,2,none,none],[cnot,[1,2],none,none],[swap,[0,1],none,none],[h,0,none,none],[measure,1,none,none],[cnot,[1,2],none,none],[reset,1,none,none]];
[0182]
循环遍历reset_circuit[]列表,处理该操作指令后,reset_circuit=[[measure,2,none,none],[h,3,none,none],[reset,2,none,none],[cnot,[0,2],none,none],[measure,3,none,none],[z,0,none,3],[measure,0,none,none],[measure,2,none,none]];
[0183]
将其按照现有顺序添加至circuit列表的后方,再将reset_circuit列表初始化为空列表;circuit=[[h,0,none,none],[h,1,none,none],[h,2,none,none],[cnot,[1,2],none,none],[swap,[0,1],none,none],[h,0,none,none],[measure,1,none,none],[cnot,[1,2],none,none],[reset,1,none,none],[measure,2,none,none],[h,3,none,none],[reset,2,none,none],[cnot,[0,2],none,none],[measure,3,none,none],[z,0,none,3],[measure,0,none,none],[measure,2,none,none]];reset_circuit=[];
[0184]
遍历至[measure,2,none,none];measure_gates=[[measure,1,none,none],[measure,2,none,none]];
[0185]
遍历至[reset,2,none,none]元素
[0186]
reset_gates=[[reset,1,none,none],[reset,2,none,none],];
[0187]
reset_qubit=2;width=4;
[0188]
reset_circuit=[[cnot,[0,2],none,none],[measure,3,none,none],[z,0,none,3],[measure,0,none,none],[measure,2,none,none]];
[0189]
circuit=[[h,0,none,none],[h,1,none,none],[h,2,none,none],[cnot,[1,2],none,none],[swap,[0,1],none,none],[h,0,none,none],[measure,1,none,none],
[cnot,[1,2],none,none],[reset,1,none,none],[measure,2,none,none],[h,3,none,none],[reset,2,none,none]];
[0190]
循环遍历reset_circuit[]列表,处理该操作指令后,reset_circuit=[[cnot,[0,4],none,none],[measure,3,none,none],[z,0,none,3],[measure,0,none,none],[measure,4,none,none]];
[0191]
将其按照现有顺序添加至circuit列表的后方,再将reset_circuit列表初始化为空列表;circuit=[[h,0,none,none],[h,1,none,none],[h,2,none,none],[cnot,[1,2],none,none],[swap,[0,1],none,none],[h,0,none,none],[measure,1,none,none],[cnot,[1,2],none,none],[reset,1,none,none],[measure,2,none,none],[h,3,none,none],[reset,2,none,none],[cnot,[0,4],none,none],[measure,3,none,none],[z,0,none,3],[measure,0,none,none],[measure,4,none,none]];reset_circuit=[];
[0192]
遍历至[measure,3,none,none];measure_gates=[[measure,1,none,none],[measure,2,none,none],[measure,3,none,none]];
[0193]
遍历至[z,0,none,3];circuit=[[h,0,none,none],[h,1,none,none],[h,2,none,none],[cnot,[1,2],none,none],[swap,[0,1],none,none],[h,0,none,none],[measure,1,none,none],[cnot,[1,2],none,none],[reset,1,none,none],[measure,2,none,none],[h,3,none,none],[reset,2,none,none],[cnot,[0,4],none,none],[measure,3,none,none],[cz,[3,0],none,none],[measure,0,none,none],[measure,4,none,none]];
[0194]
遍历至[measure,0,none,none]、[measure,4,none,none];measure_gates=[[measure,1,none,none],[measure,2,none,none],[measure,3,none,none],[measure,0,none,none],[measure,4,none,none]];
[0195]
将reset_gates[]和measure_gates[]中包含的元素从circuit[]列表中删除;circuit=[[h,0,none,none],[h,1,none,none],[h,2,none,none],[cnot,[1,2],none,none],[swap,[0,1],none,none],[h,0,none,none],[cnot,[1,2],none,none],[h,3,none,none],[cnot,[0,4],none,none],[cz,[3,0],none,none]];
[0196]
将measure_gates[]中包含的元素按顺序添加至circuit[];输出标准量子电路的指令列表,circuit=[[h,0,none,none],[h,1,none,none],[h,2,none,none],[cnot,[1,2],none,none],[swap,[0,1],none,none],[h,0,none,none],[cnot,[1,2],none,none],[h,3,none,none],[cnot,[0,4],none,none],[cz,[3,0],none,none],[measure,1,none,none],[measure,2,none,none],[measure,3,none,none],[measure,0,none,none],[measure,4,none,none]];该指令列表对应的标准量子电路如图7所示。
[0197]
第二实施例
[0198]
如图8所示,本公开提供一种量子电路运行装置800,包括:
[0199]
第一获取模块801,用于获取第一指令列表,所述第一指令列表中的操作指令用于指示与量子网络协议等效的第一量子电路的量子操作,所述第一指令列表包括:第一类型的第一操作指令,所述第一类型指示将量子比特的量子态重置至零态的量子操作;
[0200]
第二获取模块802,用于基于所述第一指令列表,获取第一量子位,所述第一量子位为所述第一量子电路的量子位中标号最大的量子位;
[0201]
标准化处理模块803,用于基于所述第一指令列表和所述第一量子位,对所述第一量子电路进行标准化处理,得到第二指令列表,所述第二指令列表用于指示与所述第一量子电路等效的第二量子电路的量子操作,所述第二指令列表包括第二操作指令,所述第二操作指令是将第三操作指令的第二量子位更新为第三量子位得到,所述第三操作指令为所述第一指令列表中位于所述第一操作指令之后的操作指令,所述第三量子位的标号大于所述第一量子位的标号,所述第二量子位为所述第一操作指令中的量子位,所述第二指令列表包括第二类型的操作指令和第三类型的操作指令,所述第二类型的操作指令位于第三类型的操作指令之后,所述第二类型指示量子操作为量子测量操作,所述第三类型指示量子操作为量子比特的门操作;
[0202]
运行模块804,用于基于所述第二指令列表运行所述第二量子电路,得到所述量子网络协议的仿真结果。
[0203]
可选的,所述标准化处理模块803包括:
[0204]
第一遍历单元,用于对所述第一指令列表进行针对所述第一操作指令的遍历;
[0205]
确定单元,用于在遍历到所述第一操作指令的情况下,基于所述第一量子位和所述第一操作指令在遍历所述第一指令列表过程中出现的次数,确定所述第三量子位;
[0206]
更新单元,用于将所述第一指令列表中所述第三操作指令的第二量子位更新为所述第三量子位;
[0207]
删除单元,用于删除所述第一指令列表中的所述第一操作指令,得到第三指令列表;
[0208]
第一标准化处理单元,用于基于所述第三指令列表,对所述第三指令列表对应的量子电路进行标准化处理,得到所述第二指令列表。
[0209]
可选的,所述第三指令列表还包括第四类型的操作指令,所述第四类型指示量子操作为由经典信息控制的量子门操作,所述经典信息基于量子比特的量子测量操作得到,所述第一标准化处理单元,具体用于:
[0210]
对所述第三指令列表进行针对所述第四类型的操作指令和所述第二类型的操作指令的遍历;在遍历到所述第四类型的操作指令的情况下,将所述第三指令列表中所述第四类型的操作指令替换为与所述第四类型的操作指令等效的操作指令,与所述第四类型的操作指令等效的操作指令为所述第三类型的操作指令;
[0211]
在遍历到所述第二类型的操作指令的情况下,删除所述第三指令列表中遍历到的所述第二类型的操作指令;
[0212]
将遍历到的所述第二类型的操作指令添加至操作指令删除后的所述第三指令列表中位于末尾的操作指令之后,得到所述第二指令列表。
[0213]
可选的,所述第一标准化处理单元,具体用于:
[0214]
在遍历到所述第二类型的操作指令的情况下,将所述第二类型的操作指令添加到测量指令列表中;
[0215]
在针对所述第二类型的操作指令的遍历完成的情况下,删除所述第三指令列表中所述测量指令列表中的所述第二类型的操作指令;将所述测量指令列表添加至操作指令删除后的所述第三指令列表中位于末尾的操作指令之后,得到所述第二指令列表。
[0216]
可选的,所述删除单元,具体用于:
[0217]
在针对所述第一操作指令的遍历完成的情况下,删除所述第一指令列表中的各个所述第一操作指令,得到第三指令列表。
[0218]
可选的,所述标准化处理模块803包括:
[0219]
第二遍历单元,用于对所述第一指令列表进行针对目标操作指令的遍历,所述目标操作指令包括:所述第二类型的操作指令、第四类型的操作指令和所述第一操作指令,所述第四类型指示量子操作为由经典信息控制的量子门操作;
[0220]
第二标准化处理单元,用于按照从前到后的遍历顺序,基于遍历到的所述目标操作指令和所述第一量子位,对所述第一指令列表进行所述目标操作指令的类型对应的处理,得到所述第二指令列表,所述目标操作指令对应的处理用于对所述第一量子电路进行标准化处理。
[0221]
可选的,所述第二标准化处理单元,具体用于:
[0222]
在按照从前到后的遍历顺序遍历到所述目标操作指令,且所述目标操作指令为所述第二类型的操作指令的情况下,将所述第二类型的操作指令添加到测量指令列表中;
[0223]
在按照从前到后的遍历顺序遍历到所述目标操作指令,且所述目标操作指令为所述第四类型的操作指令的情况下,将所述第一指令列表中所述第四类型的操作指令替换为与所述第四类型的操作指令等效的操作指令,与所述第四类型的操作指令等效的操作指令为所述第三类型的操作指令;
[0224]
在按照从前到后的遍历顺序遍历到所述目标操作指令,且所述目标操作指令为所述第一操作指令的情况下,基于所述第一量子位和所述第一操作指令在遍历所述第一指令列表过程中出现的次数,确定所述第三量子位;将所述第一指令列表中所述第三操作指令的第二量子位更新为所述第三量子位。
[0225]
可选的,所述第二标准化处理单元,还用于:
[0226]
在所述目标操作指令的遍历完成的情况下,删除第四指令列表中的所述第一操作指令和所述第二类型的操作指令,所述第四指令列表为对所述第一指令列表进行所述目标操作指令的类型对应的处理之后得到的指令列表;
[0227]
将所述测量指令列表添加至所述第四指令列表中位于末尾的操作指令之后,得到所述第二指令列表。
[0228]
本公开提供的量子电路运行装置800能够实现量子电路运行方法实施例实现的各个过程,且能够达到相同的有益效果,为避免重复,这里不再赘述。
[0229]
本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供和公开等处理,均符合相关法律法规的规定,且不违背公序良俗。
[0230]
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
[0231]
图9示出了可以用来实施本公开的实施例的示例电子设备的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
[0232]
如图9所示,设备900包括计算单元901,其可以根据存储在只读存储器(rom)902中的计算机程序或者从存储单元908加载到随机访问存储器(ram)903中的计算机程序,来执行各种适当的动作和处理。在ram 903中,还可存储设备900操作所需的各种程序和数据。计算单元901、rom 902以及ram 903通过总线904彼此相连。输入/输出(i/o)接口905也连接至总线904。
[0233]
设备900中的多个部件连接至i/o接口905,包括:输入单元906,例如键盘、鼠标等;输出单元907,例如各种类型的显示器、扬声器等;存储单元908,例如磁盘、光盘等;以及通信单元909,例如网卡、调制解调器、无线通信收发机等。通信单元909允许设备900通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
[0234]
计算单元901可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元901的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元901执行上文所描述的各个方法和处理,例如量子电路运行方法。例如,在一些实施例中,量子电路运行方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元908。在一些实施例中,计算机程序的部分或者全部可以经由rom 902和/或通信单元909而被载入和/或安装到设备900上。当计算机程序加载到ram 903并由计算单元901执行时,可以执行上文描述的量子电路运行方法的一个或多个步骤。备选地,在其他实施例中,计算单元901可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行量子电路运行方法。
[0235]
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
[0236]
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
[0237]
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或
上述内容的任何合适组合。
[0238]
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
[0239]
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
[0240]
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
[0241]
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
[0242]
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。