一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

使用窗口化量子算术的量子电路优化的制作方法

2021-11-10 04:58:00 来源:中国专利 TAG:

使用窗口化量子算术的量子电路优化


背景技术:

1.本说明书涉及量子计算。
2.经典计算机具有由位组成的存储器,其中每个位可以表示零或一中的任一者。量子计算机维持被称作量子位的量子位序列,其中每个量子位可以表示零、一或零和一的任何量子叠加。量子计算机例如根据量子逻辑门的序列通过在初始状态下设置量子位并且控制量子位来操作。


技术实现要素:

3.本说明书描述了用于使用窗口化量子算术来使量子计算加速的技术。
4.一般而言,本说明书中所描述的主题的一个创新方面可以在用于对量子位的目标量子寄存器和量子位的源量子寄存器执行乘积加法运算的方法中实施,该方法包括:确定查找表的多个条目,包括:针对第一索引集合中的每个索引,其中第一索引集合包括在零与作为预定窗口大小的函数的最大索引值之间的索引值,将索引值乘以乘积加法运算的标量;针对第二索引集合中的每个索引,其中第二索引集合包括在零与作为源量子寄存器的函数的最大索引值之间的索引值,其中索引值按预定窗口大小步进:确定多个地址值,包括:提取和在i)第二索引集合中的索引与ii)第二索引集合中的索引加上预定窗口大小之间的索引相对应的源寄存器值;以及基于查找表的所确定的多个条目和所确定的多个地址值来调整目标量子寄存器的值。
5.这些方面的其它实施方式包括对应计算机系统、装置以及记录在一个或多个计算机存储设备上的计算机程序,该对应计算机系统、装置以及计算机程序分别配置为执行方法的动作。一个或多个经典和/或量子计算机的系统可以配置为借助于使软件、固件、硬件或其组合安装在系统上来执行特定操作或动作,这些软件、固件、硬件或其组合在操作中致使执行动作或致使系统执行动作。一个或多个计算机程序可以配置为借助于包括指令来执行特定操作或动作,该指令在被数据处理装置执行时致使装置执行动作。
6.前述和其它实施方式可以分别可选地单独或组合地包括以下特征中的一个或多个。在一些实施方式中,作为预定窗口大小的函数的最大索引值等于2的预定窗口大小次幂。
7.在一些实施方式中,作为源量子寄存器的函数的最大索引值等于源寄存器的长度。
8.在一些实施方式中,预定窗口大小包括ln n,其中n表示目标量子寄存器中的逻辑量子位的数量。
9.在一些实施方式中,基于查找表的所确定的多个条目和所确定的多个地址值来调整目标量子寄存器的值包括:将所确定的多个条目添加到目标量子寄存器中。
10.在一些实施方式中,乘积加法运算执行x =ky,其中x表示将第一值存储在目标量子寄存器中的变量,y表示将第二值存储在源量子寄存器中的对应变量,k表示乘积加法运算的经典恒定标量值。
11.在一些实施方式中,目标量子寄存器包括固定宽度2s补码寄存器。
12.在一些实施方式中,第一值包括经典整数或经典整数的叠加。
13.在一些实施方式中,第二值包括经典整数或经典整数的叠加。
14.一般而言,本说明书中所描述的主题的另一创新方面可以在用于使用量子位的目标量子寄存器和量子位的源量子寄存器执行模乘积加法运算的方法中实施,该方法包括:针对第一索引集合中的每个索引,其中第一索引集合包括在零与作为源量子寄存器的函数的最大索引值之间的索引值,其中索引值按预定窗口大小步进:确定多个地址值,包括:提取和在i)第一索引集合中的索引与ii)第一索引集合中的索引加上预定窗口大小之间的索引相对应的源寄存器值;确定多个对应表条目,包括:针对第二索引集合中的每个索引,其中第二索引集合包括在零与作为预定窗口大小的函数的最大表索引之间的索引值:确定包括i)乘积加法运算中的标量、ii)2的第一索引集合中的索引次幂以及iii)第二索引集合中的索引的乘积的表条目,且将模运算应用于所确定的表条目;以及基于所确定的多个表条目和所确定的多个地址值来调整目标量子寄存器的值。
15.这些方面的其它实施方式包括对应计算机系统、装置以及记录在一个或多个计算机存储设备上的计算机程序,该对应计算机系统、装置以及计算机程序分别配置为执行方法的动作。一个或多个经典和/或量子计算机的系统可以配置为借助于使软件、固件、硬件或其组合安装在系统上来执行特定操作或动作,这些软件、固件、硬件或其组合在操作中致使执行动作或致使系统执行动作。一个或多个计算机程序可以配置为借助于包括指令来执行特定操作或动作,该指令在被数据处理装置执行时致使装置执行动作。
16.前述和其它实施方式可以分别可选地单独或组合地包括以下特征中的一个或多个。在一些实施方式中,作为源量子寄存器的函数的最大索引值等于源量子寄存器的长度。
17.在一些实施方式中,作为预定窗口大小的函数的最大表索引等于2的预定窗口大小次幂。
18.在一些实施方式中,模乘积加法运算执行x =ky(mod n),其中x表示将第一值存储在目标量子寄存器中的变量,y表示将第二值存储在源量子寄存器中的对应变量,k表示模乘积加法运算的经典恒定标量值,且n表示模乘积加法运算的经典恒模。
19.在一些实施方式中,x、y以及k的值为正且小于n。
20.在一些实施方式中,第一值包括经典整数或经典整数的叠加。
21.在一些实施方式中,第二值包括经典整数或经典整数的叠加。
22.在一些实施方式中,预定窗口大小包括ln n,其中n表示目标量子寄存器中的逻辑量子位的数量。
23.在一些实施方式中,基于所确定的多个表条目和所确定的多个地址值来调整目标量子寄存器的值包括:将所确定的多个表条目添加到目标量子寄存器中。
24.在一些实施方式中,该方法进一步包括:执行一系列模乘积加法运算以执行模乘运算。
25.一般而言,本说明书中所描述的主题的另一创新方面可以在用于将量子位的目标量子寄存器的值乘以奇整数的方法中实施,该方法包括:确定多个查找表条目,包括:针对第一索引集合中的每个索引,其中第一索引集合包括在零与作为预定窗口大小的函数的最大表索引之间的索引值:确定第一索引集合中的索引和奇整数的乘积;针对第二索引集合
中的每个索引,其中第二索引集合包括从作为目标量子寄存器的函数的最大索引值到零的索引值,其中索引值按预定窗口大小步进:提取在第二索引集合中的索引到第二索引集合中的索引加上预定窗口大小之间的目标量子寄存器的多个值;以及基于所确定的多个查找表条目和目标量子寄存器的所提取的多个值来调整目标量子寄存器的多个值,其中目标量子寄存器的多个值包括在第二索引集合中的索引加上预定窗口大小与目标量子寄存器的末端之间的值。
26.这些方面的其它实施方式包括对应计算机系统、装置以及记录在一个或多个计算机存储设备上的计算机程序,该对应计算机系统、装置以及计算机程序分别配置为执行方法的动作。一个或多个经典和/或量子计算机的系统可以配置为借助于使软件、固件、硬件或其组合安装在系统上来执行特定操作或动作,这些软件、固件、硬件或其组合在操作中致使执行动作或致使系统执行动作。一个或多个计算机程序可以配置为借助于包括指令来执行特定操作或动作,该指令在被数据处理装置执行时致使装置执行动作。
27.前述和其它实施方式可以分别可选地单独或组合地包括以下特征中的一个或多个。在一些实施方式中,作为预定窗口大小的函数的最大表索引等于2的预定窗口大小次幂。
28.在一些实施方式中,作为目标量子寄存器的函数的最大索引值等于目标量子寄存器的长度。
29.在一些实施方式中,将量子位的目标量子寄存器的值乘以奇整数包括:执行x*=k,其中x表示将第一值存储在目标量子寄存器中的变量且k表示奇整数。
30.在一些实施方式中,第一值包括经典整数或经典整数的叠加。
31.在一些实施方式中,预定窗口大小包括ln n,其中n表示目标量子寄存器中的逻辑量子位的数量。
32.在一些实施方式中,基于所确定的多个查找表条目和目标量子寄存器的所提取的多个值来调整目标量子寄存器的多个值包括:将所确定的多个查找表条目添加到目标量子寄存器中。
33.一般而言,本说明书中所描述的主题的另一创新方面可以在用于使用量子位的目标量子寄存器和量子位的源量子寄存器执行模幂运算的方法中实施,该方法包括:针对第一索引集合中的每个索引,确定第一多个地址值,包括:提取多个源寄存器值;针对第二索引集合中的每个索引,确定第二多个地址值,包括:提取多个目标寄存器值;针对第三索引集合中的每个索引且针对第四索引集合中的每个索引,通过将i)第三索引集合中的索引、ii)第四索引集合中的索引以及iii)2的第二索引集合中的索引次幂相乘并应用模运算来确定表条目;使用与第一多个地址值和第二多个地址值相对应的表条目来调整模加法寄存器;针对第五索引集合中的每个索引,确定第三多个地址值,包括:提取调整后的模加法寄存器的多个值;针对第六索引集合中的每个索引,针对第七索引集合中的每个索引,通过将i)第六索引集合中的索引、ii)第七索引集合中的索引以及iii)2的第五索引集合中的索引次幂相乘并应用模运算来确定表条目;以及使用与第一多个地址值和第三多个地址值相对应的表条目来调整目标量子寄存器。
34.这些方面的其它实施方式包括对应计算机系统、装置以及记录在一个或多个计算机存储设备上的计算机程序,该对应计算机系统、装置以及计算机程序分别配置为执行方
法的动作。一个或多个经典和/或量子计算机的系统可以配置为借助于使软件、固件、硬件或其组合安装在系统上来执行特定操作或动作,这些软件、固件、硬件或其组合在操作中致使执行动作或致使系统执行动作。一个或多个计算机程序可以配置为借助于包括指令来执行特定操作或动作,该指令在被数据处理装置执行时致使装置执行动作。
35.前述和其它实施方式可以分别可选地单独或组合地包括以下特征中的一个或多个。在一些实施方式中,第一索引集合包括在零与作为源量子寄存器的函数的第一最大索引值之间的索引值,其中索引值按第一预定窗口大小步进。
36.在一些实施方式中,索引集合包括在零与作为目标寄存器的函数的第二最大索引值之间的索引值,其中索引值按第二预定窗口大小步进。
37.在一些实施方式中,第三索引集合包括在1与基于第一预定窗口大小的第三最大值之间的索引值。
38.在一些实施方式中,第四索引集合包括在0与作为目标量子寄存器和第二预定窗口大小的函数的第四最大值之间的索引值。
39.在一些实施方式中,第五索引集合包括在零与作为目标寄存器的函数的第五最大索引值之间的索引值,其中索引值按第二预定窗口大小步进。
40.在一些实施方式中,第六索引集合包括在1与基于第二预定窗口大小的第六值之间的索引值。
41.在一些实施方式中,第七索引集合包括在0与作为模加法寄存器和第二预定窗口大小的函数的第七最大值之间的索引值。
42.在一些实施方式中,确定第一多个地址值包括:提取和在i)第一索引集合中的索引与ii)第一索引集合中的索引加上第一预定窗口大小之间的索引相对应的源寄存器值。
43.在一些实施方式中,确定第二多个地址值包括:提取和在i)第二索引集合中的索引与ii)第二索引集合中的索引加上第二预定窗口大小之间的索引相对应的目标寄存器值。
44.在一些实施方式中,确定第三多个地址值包括:提取和i)第五索引集合中的索引与ii)第五索引集合中的索引加上第二预定窗口大小之间的索引相对应的调整后的模加法寄存器的值。
45.在一些实施方式中,作为源量子寄存器的函数的第一最大索引值等于源量子寄存器的长度。
46.在一些实施方式中,作为目标寄存器的函数的第二最大索引值等于目标量子寄存器的长度。
47.在一些实施方式中,基于第一预定窗口大小的第三最大值包括其中k表示模幂运算的标量,i表示第一索引集合中的索引,且w1表示第一预定窗口大小。
48.在一些实施方式中,作为目标量子寄存器和第二预定窗口大小的函数的第四最大值包括2的第二窗口大小次幂。
49.在一些实施方式中,作为目标寄存器的函数的第五最大索引值等于目标量子寄存器的长度。
50.在一些实施方式中,作为目标量子寄存器和第二预定窗口大小的函数的第七最大值包括2的第二窗口大小次幂。
51.在一些实施方式中,模幂运算执行x*=k
e
(mod n),其中x表示将第一值存储在目标量子寄存器中的变量,e表示将第二值存储在源量子寄存器中的对应变量,k表示模幂运算的经典恒定标量值,且n表示模幂运算的经典恒模。
52.在一些实施方式中,第一值包括经典整数或经典整数的叠加。
53.在一些实施方式中,第二值包括经典整数或经典整数的叠加。
54.在一些实施方式中,第一预定窗口大小与第二窗口大小相等。
55.在一些实施方式中,第一预定窗口大小和第二预定窗口大小等于ln n/2,其中n表示目标量子寄存器中的逻辑量子位的数量。
56.本说明书中所描述的主题可以以特定方式实施以实现以下优点中的一个或多个。
57.实施当前所描述的加窗技术的系统可以以较低的toffoli复杂性和增加的计算速度执行量子算术任务,例如乘积加法、乘法以及取幂。
58.当前所描述的加窗技术可以应用于涉及算术运算的任何量子计算中。由于上述增加的计算速度和减小的toffoli计数,因此实施当前所描述的技术的量子计算因此也可以实现增加的计算速度和成本/计算资源的减少。
59.在附图和以下描述中阐述了本说明书的主题的一种或多种实施方式的细节。本主题的其它特征、方面以及优点将通过描述、附图以及权利要求书而变得显而易见。
附图说明
60.图1示出了用于执行查表的示例量子电路。
61.图2示出了示例量子计算系统。
62.图3是用于对量子位的目标量子寄存器和量子位的源量子寄存器执行乘积加法运算的示例过程的流程图。
63.图4示出了用于对量子位的目标量子寄存器和量子位的源量子寄存器执行乘积加法运算的可执行python 3代码片段。
64.图5是用于将量子位的目标量子寄存器的值乘以奇整数的示例过程的流程图。
65.图6示出了用于将量子位的目标量子寄存器的值乘以奇整数的可执行python 3代码片段。
66.图7是用于使用量子位的目标量子寄存器和量子位的源量子寄存器执行模乘积加法运算的示例过程的流程图。
67.图8示出了用于执行模乘积加法运算的可执行python 3代码片段。
68.图9是用于使用量子位的目标量子寄存器和量子位的源量子寄存器执行模幂运算的示例过程的流程图。
69.图10示出了用于执行模幂运算的可执行python 3代码片段。
70.各种附图中的相似附图标记和命名指示相似元件。
具体实施方式
71.概述
72.在经典计算中,可以通过使用查找表将运算合并在一起来减少运算计数。例如,循环冗余校验奇偶校验码的快速软件实施使用预先计算的表一次性地处理多个位。这些技术
被称为“加窗”。
73.本说明书描述了量子计算中的加窗。具体地,描述了用于通过将多个受控运算合并为作用于由qrom(量子只读存储器)查找(在本文中被称为“查表”)产生的值的单个运算来减少量子计算中的运算计数的技术。
74.查表是从由量子寄存器寻址的经典表中检索数据的操作。查表执行运算其中t表示具有l个条目的经典预先计算表。图1是具有l

1tofffoli计数(独立于每个条目中的位数)的用于执行查表的示例量子电路100的量子电路图。在图1中,从其它线合并和合并到其它线中以形成拐点的垂直线(例如合并线104)分别是and计算和非计算且等效于tofffoli门。如果设置了控制量子位102并且地址寄存器106包含二进制值a,那么示例量子电路100将来自预先计算的查找表t的第a个位串异或成w个输出量子位。在示例量子电路100中,l=23且w=6。cnot目标旁边的问号指示应根据t中的对应位而省略或包括目标。使用已知技术(例如与本说明书中所描述的技术不同的技术),能够在o(wl/k k)toffolis中计算查表,其中w表示查找的输出大小且k表示自由选择的参数。
75.示例硬件
76.图2描绘了示例量子计算系统200。系统200是在一个或多个位置中的一个或多个量子计算设备和经典计算机上实施为量子和经典计算机程序的系统的示例,其中可以实施下面所描述的系统、组件以及技术。
77.系统200包括与一个或多个经典处理器204进行数据通信的量子计算设备202。出于方便起见,将量子计算设备202和经典处理器204图示为单独实体,然而在一些实施方式中,可以将经典处理器204包括在量子计算设备202中。
78.量子计算设备202包括用于执行量子计算的组件。例如,量子计算设备202包括量子电路系统206和控制设备208。
79.量子电路系统206包括用于执行量子计算的组件,例如用于实施本说明书中所描述的各种量子电路和操作的组件。例如,量子电路系统可以包括量子系统,该量子系统包括一个或多个多级量子子系统,例如量子位214。量子位214是可以用于执行算法运算或量子计算的物理量子位。一个或多个量子位及其交互的特定实现可以取决于各种因素,包括量子计算设备202正在执行的量子计算的类型。例如,量子位可以包括经由原子、分子或固态量子系统实现的量子位。在其它示例中,量子位可以包括但不限于超导量子位(例如gmon或xmon量子位)或半导量子位。实现多级量子子系统的其它示例包括fluxmon量子位、硅量子点或磷杂质量子位。在一些情况下,量子电路系统可以进一步包括附接到一个或多个超导量子位的一个或多个谐振器。在其它情况下,可以使用离子阱、光子设备或超导腔(其可以在不需要量子位的情况下准备状态)。
80.在本说明书中,术语“量子电路”用于指可以应用于量子位寄存器以执行相应计算的量子逻辑运算序列。可以使用量子电路系统206来构造包括不同量子逻辑运算的量子电路(例如单量子位门、多量子位门等)。可以使用控制设备208操作/实施所构造的量子电路。
81.量子系统中所包括的控制设备208的类型取决于量子计算设备中所包括的量子位的类型。例如,在一些情况下,多个量子位可以是频率可调谐的。也就是说,每个量子位都可
以具有相关联的操作频率,可以使用一个或多个控制设备来调整该操作频率。示例操作频率包括量子位空载频率、量子位交互频率以及量子位读出频率。不同频率与量子位可以执行的不同运算对应。例如,将操作频率设置为对应空载频率可以将量子位置于其不与其它量子位强烈交互并且其可以用于执行单量子位运算/门的状态。在这些示例中,控制设备208可以包括控制量子电路系统206中所包括的量子位的频率的设备、激发脉冲产生器以及将量子位耦合到激发脉冲产生器的控制线。控制设备然后可以致使每个量子位的频率被调整朝向或远离对应控制传动系统上的激发脉冲的量子门频率。
82.控制设备208可以进一步包括测量设备,例如读出谐振器。可以将经由测量设备获得的测量结果提供给经典处理器204以供处理和分析。测量设备直接或间接地对量子位的特性执行物理测量,从其中可以推断出量子位的(多种)状态。
83.对硬件进行编程:用于执行乘积加法运算的示例过程
84.图3是用于对量子位的目标量子寄存器和量子位的源量子寄存器执行乘积加法运算的示例过程300的流程图。出于方便起见,过程300将被描述为由位于一个或多个位置中的一个或多个经典和量子计算设备的系统执行。例如,根据本说明书适当地编程的量子计算系统(例如图2的系统200)可以执行过程300。
85.由示例过程300执行的乘积加法运算可以由x=x ky(或等效地,x =ky)给出,其中x表示将第一值存储在目标量子寄存器中的变量,y表示将第二值存储在源量子寄存器中的对应变量,且k表示乘积加法运算的(经典)恒定标量值。第一值和第二值为量子整数。在本说明书中,量子整数是指由量子寄存器存储的经典整数或经典整数的叠加,例如作为使用2s补码小字节序格式的量子位序列。
86.系统确定查找表的多个条目(步骤302)。针对第一索引集合中的每个索引,其中第一索引集合包括在零与作为预定窗口大小的函数的最大索引值之间的索引值,系统将索引值乘以乘积加法运算的标量。作为预定窗口大小的函数的最大索引值可以等于2的预定窗口大小次幂。
87.在一些实施方式中,系统可以使用经典计算(例如经典执行的乘法)确定查找表的条目。然后可以将由所确定的条目定义的查找表存储在系统的经典存储器中。
88.针对第二索引集合中的每个索引,系统确定多个地址值(步骤304)并基于查找表的所确定的多个条目和所确定的多个地址值来调整目标量子寄存器的值(步骤306)。第二索引集合包括在零与作为源量子寄存器的函数的最大索引值之间的索引值,且其中索引值按预定窗口大小步进。作为源量子寄存器的函数的最大索引值可以等于源量子寄存器的长度。
89.为了确定多个地址值,系统提取和在i)第二索引集合中的索引与ii)第二索引集合中的索引加上预定窗口大小之间的索引对应的源量子寄存器值。系统设置等于相应提取的源量子寄存器值的多个地址值。提取源量子寄存器值是由量子计算设备基于量子一元运算/量子门(不包括测量)执行的量子计算。
90.为了基于查找表的所确定的多个条目和所确定的多个地址值来调整目标量子寄存器的值,系统识别与地址值(在步骤304中确定)对应的表条目(在步骤302中确定)。在一些实施方式中,系统可以将所识别的表条目存储在临时量子寄存器中。系统使用所识别的表条目来调整目标量子寄存器的条目子集。条目子集与包括来自第二索引集合的当前索引
且在该当前索引之后的条目相对应。为了调整目标量子寄存器的条目子集,系统将所识别的表条目添加到目标量子寄存器中。例如,系统可以例如通过将量子加法电路应用于目标量子寄存器和临时量子寄存器,使用量子计算设备执行量子加法计算。量子加法电路可以包括实施加法运算的量子逻辑门的序列。
91.由示例过程300描述的乘积加法的窗口化实施具有的渐近tofffoli计数,其中w表示预定窗口大小。在一些实施方式中,预定窗口大小可以等于ln n,其中n表示目标量子寄存器中的逻辑量子位的数量。在这些实施方式中,查表与加法同样花费高昂,实现了o(n2/lg n)的toffoli计数。
92.图4示出了用于对量子位的目标量子寄存器和量子位的源量子寄存器执行乘积加法运算的可执行python 3代码片段400。在本说明书中所描述的代码片段中,量子运算以与经典运算相同的方式进行指定。代码解译器然后必须将高级量子算术分解为对应的低级量子运算。例如,当a,b为拥有量子整数的变量时,语句a =b将量子加法电路应用于a和b。如果b是经典整数,那么将b视为必须加载到量子寄存器中的临时表达(右值),使得可以应用使用经典整数的量子加法电路。存在其它类型的右值,可以将这些右值临时加载到寄存器中以便将其添加到目标中。例如,使用量子整数将查找表编入索引会产生查找右值,且因此语句a =t[b]会导致以下三个动作:将具有经典数据t和量子地址b的查表计算到临时寄存器中,然后将临时寄存器添加到a中,然后不计算查表。
[0093]
片段400的部分402定义了乘积加法运算“plus_equal_product”,其中“target”表示目标量子寄存器,“quint”表示量子整数,“k”表示乘积加法运算的恒定标量值,“int”表示经典整数,“y”表示源量子寄存器,“window”表示预定窗口大小。
[0094]
片段400的部分404与示例过程300的步骤302对应。针对第一索引集合中的范围介于0到2
window
的每个索引i,计算相应表条目值i*k。片段400的部分406与示例过程300的步骤304对应。针对第二索引集合中的范围介于0到按窗口大小步进的源量子寄存器的长度len(y)的每个索引i,基于计算出的表条目的对应集合中的值来调整目标寄存器的对应段内的值,其中集合的大小等于预定窗口大小。
[0095]
对硬件进行编程:用于执行乘法运算的示例过程
[0096]
图5是用于将量子位的目标量子寄存器的值乘以奇整数的示例过程500的流程图。出于方便起见,过程500将被描述为由位于一个或多个位置中的一个或多个经典和量子计算设备的系统执行。例如,根据本说明书适当地编程的量子计算系统(例如图2的系统200)可以执行过程500。
[0097]
由示例过程500执行的乘法运算可以由x*=k给出,其中x表示将第一值存储在目标量子寄存器中的变量且k表示奇整数。第一值是量子整数,如上面参考示例过程300所定义的。
[0098]
系统确定查找表的多个条目(步骤502)。针对第一索引集合中的每个索引,其中第一索引集合包括在零与作为预定窗口大小的函数的最大表索引之间的索引值,系统确定第一索引集合中的索引和奇整数的乘积。作为预定窗口大小的函数的最大表索引可以等于2的预定窗口大小次幂。
[0099]
在一些实施方式中,系统可以使用经典计算(例如经典执行的乘法)确定查找表的
条目。然后可以将由所确定的条目定义的查找表存储在系统的经典存储器中。
[0100]
针对第二索引集合中的每个索引,系统提取目标量子寄存器的多个值(步骤504)并且基于所确定的多个查找表条目和目标量子寄存器的所提取的多个值来调整目标量子寄存器的多个值(步骤506)。第二索引集合包括从作为目标量子寄存器的函数的最大索引值到零的索引值,其中索引值按预定窗口大小步进。作为目标量子寄存器的函数的最大索引值可以等于目标量子寄存器的长度。
[0101]
为了提取目标量子寄存器的多个值,系统提取在第二索引集合中的索引到第二索引集合中的索引加上预定窗口大小之间的值。提取目标量子寄存器值是由量子计算设备执行的量子计算。
[0102]
为了基于查找表的所确定的多个条目和所提取的多个地址值来调整目标量子寄存器的值,系统识别与地址值(在步骤504中确定)对应的表条目(在步骤502中确定)。在一些实施方式中,系统可以将所识别的表条目存储在临时量子寄存器中。系统使用所识别的表条目来调整目标量子寄存器的条目子集。条目子集与包括来自第二索引集合加上窗口大小的当前索引且在该当前索引之后的条目相对应。为了调整目标量子寄存器的条目子集,系统将所识别的表条目添加到目标量子寄存器中。例如,系统可以例如通过将量子加法电路应用于目标量子寄存器和临时量子寄存器,使用量子计算设备执行量子加法计算。量子加法电路可以包括实施加法运算的量子逻辑门的序列。
[0103]
由示例过程500描述的窗口化乘法具有的tofffoli计数,其中w表示预定窗口大小。在一些实施方式中,预定窗口大小可以等于ln n,其中n表示目标量子寄存器中的逻辑量子位的数量。在这些实施方式中,tofffoli计数是o(n2/lg n)。
[0104]
图6示出了用于将量子位的目标量子寄存器的值乘以奇整数的可执行python 3代码片段600。
[0105]
片段600的部分602定义了乘法运算。如在片段400中,“target”表示目标量子寄存器,“quint”表示量子整数,“k”表示乘法运算的恒定标量值,“int”表示经典整数,且“window”表示预定窗口大小。
[0106]
片段600的部分604定义了用于归一化标量值k的可选例程。片段600的部分606与示例过程500的步骤502对应。片段600的部分608与示例过程500的步骤504和506对应。片段600的部分610定义了用于修复窗口的例程,例如以完成针对先前在部分608期间未进行运算的所有目标寄存器条目的乘法运算。
[0107]
对硬件进行编程:用于执行模乘积加法的示例过程
[0108]
图7是用于使用量子位的目标量子寄存器和量子位的源量子寄存器执行模乘积加法运算的示例过程700的流程图。出于方便起见,过程700将被描述为由位于一个或多个位置中的一个或多个经典和量子计算设备的系统执行。例如,根据本说明书适当地编程的量子计算系统(例如图2的系统200)可以执行过程700。
[0109]
由示例过程700执行的模乘积加法运算可以由x =ky(mod n)给出,其中x表示将第一值存储在目标量子寄存器中的变量,y表示将第二值存储在源量子寄存器中的对应变量,k表示模乘积加法运算的经典恒定标量值,且n表示模乘积加法运算的经典恒模。在一些实施方式中,x、y以及k的值为正且小于n。如上面参考图3所描述,第一值和第二值可以是量
子整数。
[0110]
针对第一索引集合中的每个索引,系统确定多个地址值(步骤702)并且确定多个表条目(步骤704)。第一索引集合包括在零与作为源量子寄存器的函数的最大索引值之间的索引值,其中索引值按预定窗口大小步进。作为源量子寄存器的函数的最大索引值可以等于源量子寄存器的长度。
[0111]
为了确定多个地址值,系统提取和在i)第一索引集合中的索引与ii)第一索引集合中的索引加上预定窗口大小之间的索引相对应的源量子寄存器值。系统将多个地址值设置为等于相应提取的源量子寄存器值。提取源量子寄存器值是由量子计算设备执行的量子计算。
[0112]
为了确定多个表条目,系统针对第二索引集合中的每个索引确定由i)乘积加法运算中的标量、ii)2的第一索引集合中的索引次幂以及iii)第二索引集合中的索引的乘积给出的表条目,然后将与模乘积加法运算对应的模运算应用于所确定的表条目。第二索引集合包括在零与作为预定窗口大小的函数的最大表索引(例如2的预定窗口大小次幂)之间的索引值。在一些实施方式中,系统可以使用经典计算(例如经典执行的乘法)确定表的条目。然后可以将由所确定的条目定义的表存储在系统的经典存储器中。
[0113]
系统然后例如使用与所确定的地址值对应的表条目,基于所确定的多个表条目和所确定的多个地址值来调整目标量子寄存器的值(步骤706)。在一些实施方式中,系统可以将与所确定的地址值对应的表条目存储在临时量子寄存器中。系统使用表条目来调整目标量子寄存器的条目。为了调整目标量子寄存器的条目,系统将所确定的表条目添加到目标量子寄存器中。例如,系统可以例如通过将量子加法电路应用于目标量子寄存器和临时量子寄存器,使用量子计算设备执行量子加法计算。量子加法电路可以包括实施加法运算的量子逻辑门的序列。
[0114]
由示例过程700描述的窗口化模乘积加法具有的tofffoli计数,其中w表示预定窗口大小。在一些实施方式中,预定窗口大小可以等于ln n,其中n表示目标量子寄存器中的逻辑量子位的数量。在这些实施方式中,tofffoli计数是o(n2/ln n)。
[0115]
可以执行一系列模乘积加法来执行模乘运算x*=k(mod n),其中k具有乘法逆模n并且两者都是经典常数。
[0116]
图8示出了用于执行模乘积加法运算的可执行python 3代码片段800。片段800的部分802定义了模乘积加法运算“plus_equal_product_mod”,其中“target”表示目标量子寄存器,“quint”表示量子整数,“quintmod”表示与模数相关联的量子整数,“k”表示模乘积加法运算的恒定标量值,“int”表示经典整数,“y”表示源量子寄存器,且“window”表示预定窗口大小。
[0117]
片段800的部分804与示例过程700的步骤702对应。片段800的部分806与示例过程700的步骤704对应。片段800的部分808与示例过程700的步骤706对应。
[0118]
对硬件进行编程:用于执行模乘积加法的示例过程
[0119]
图9是用于使用量子位的目标量子寄存器和量子位的源量子寄存器执行模幂运算的示例过程900的流程图。出于方便起见,过程900将被描述为由位于一个或多个位置中的一个或多个经典和量子计算设备的系统执行。例如,根据本说明书适当地编程的量子计算
系统(例如图2的系统200)可以执行过程900。
[0120]
由示例过程900执行的模幂运算可以由x*=k
e
(mod n)给出,其中x表示将第一值存储在目标量子寄存器中的变量,e表示将第二值存储在源量子寄存器中的对应变量,k表示模幂运算的经典恒定标量值,且n表示模幂运算的经典恒模。第一值可以是经典整数或经典整数的叠加。第二值可以是经典整数或经典整数的叠加。
[0121]
针对第一索引集合中的每个索引,其中第一索引集合包括在零与作为源量子寄存器的函数的第一最大索引值(例如等于源量子寄存器的长度)之间的索引值,且其中索引值按第一预定窗口大小步进,系统执行步骤902到908。
[0122]
系统通过提取和在i)第一索引集合中的索引与ii)第一索引集合中的索引加上第一预定窗口大小之间的索引相对应的源量子寄存器值来确定第一数量的地址值(步骤902)。提取源量子寄存器值是由量子计算设备执行的量子计算。
[0123]
针对第二索引集合中的每个索引,其中第二索引集合包括在零与作为目标寄存器的函数的第二最大索引值(例如等于目标量子寄存器的长度)之间的索引值,且其中索引值按第二预定窗口大小步进,系统执行步骤904、906、908。
[0124]
系统通过提取和在i)第二索引集合中的索引与ii)第二索引集合中的索引加上第二预定窗口大小之间的索引相对应的目标寄存器值来确定第二数量的地址值(步骤904)。提取目标量子寄存器值是由量子计算设备执行的量子计算。
[0125]
针对第三索引集合中的每个索引,其中第三索引集合包括在1与基于第一预定窗口大小的第三最大值(例如其中k表示模幂运算的标量,i表示第一索引集合中的索引,且w1表示第一预定窗口大小)之间的索引值,系统执行步骤906。
[0126]
针对第四索引集合中的每个索引,其中第四索引集合包括在0与作为目标量子寄存器和第二预定窗口大小的函数的第四最大值(例如2的第二窗口大小次幂)之间的索引值,系统通过将i)第三索引集合中的索引、ii)第四索引集合中的索引以及iii)2的第二索引集合中的索引次幂相乘并应用模运算来确定表条目(步骤906)。在一些实施方式中,系统可以使用经典计算(例如经典执行的乘法)确定表的条目。然后可以将由所确定的条目定义的表存储在系统的经典存储器中。
[0127]
系统使用与第一数量的地址值和第二数量的地址值对应的表条目来调整量子位的模加法寄存器(步骤908)。例如,系统可以例如通过将量子加法电路应用于存储与第一数量的地址值和第二数量的地址值对应的表条目的模加法寄存器和临时量子寄存器,使用量子计算设备执行量子加法计算。量子加法电路可以包括实施加法运算的量子逻辑门的序列。
[0128]
针对第五索引集合中的每个索引,其中第五索引集合包括在零与作为目标寄存器的函数的第五最大索引值(例如等于目标量子寄存器的长度)之间的索引值,且其中索引值按第二预定窗口大小步进,系统执行步骤910到914。
[0129]
系统通过提取和在i)第五索引集合中的索引与ii)第五索引集合中的索引加上第二预定窗口大小之间的索引相对应的调整后的模加法寄存器的值来确定第三数量的地址值(步骤910)。提取值是由量子计算设备执行的量子计算。
[0130]
针对第六索引集合中的每个索引,其中第六索引集合包括在1与基于第二预定窗口大小的第六值之间的索引值,系统执行步骤912。
[0131]
针对第七索引集合中的每个索引,其中第七索引集合包括在0与作为模加法寄存器和第二预定窗口大小的函数的第七最大值(例如等于2的第二窗口大小次幂)之间的索引值,系统通过将i)第六索引集合中的索引、ii)第七索引集合中的索引以及iii)2的第五索引集合中的索引次幂相乘并应用模运算来确定表条目(步骤912)。
[0132]
系统使用与第一数量的地址值和第三数量的地址值对应的表条目来调整(例如通过减法)目标量子寄存器(步骤914)。
[0133]
由示例过程900描述的窗口化模幂运算具有的tofffoli计数,其中n
e
表示指数量子位的数量,n表示寄存器大小,w
e
表示指数加窗大小(第一预定窗口大小),且w
m
表示乘法加窗(第二预定窗口大小)。在一些实施方式中,第一预定窗口大小与第二窗口大小可以相等。例如,第一预定窗口大小和第二预定窗口大小可以都等于ln n/2,其中n表示目标量子寄存器中的逻辑量子位的数量。这些窗口大小产生的toffoli计数,该比已知的替代算法节省了两个对数因子。
[0134]
图10示出了用于执行模幂运算的可执行python 3代码片段1000。片段1000的部分1002定义了模幂运算“times_equal_exp_mod”,其中“target”表示目标量子寄存器,“quint”表示量子整数,“quintmod”表示与模数相关联的量子整数,“k”表示模幂运算的恒定标量值,“int”表示经典整数,“e”表示源量子寄存器,“e_window”表示第一预定窗口大小,且“m_window”表示第二预定窗口大小。
[0135]
片段1000的部分1004与第一索引集合对应。部分1006与示例过程900的步骤902对应。部分1008与第二索引集合对应。部分1010与示例过程900的步骤904对应。部分1012与第三索引集合、第四索引集合以及示例过程900的步骤906对应。部分1014与示例过程900的步骤908对应。
[0136]
片段1000的部分1016与第五索引集合对应。部分1018与示例过程900的步骤910对应。部分1020与第六索引集合、第七索引集合以及示例过程900的步骤912对应。部分1022与示例过程900的步骤914对应。部分1024和1026是用于重新标记交换并且将交换结果异或到正确寄存器中的可选例程。
[0137]
本说明书和附录中所描述的数字和/或量子主题以及数字功能操作和量子运算的实施可以利用数字电子电路系统、合适的量子电路系统或更一般而言量子计算系统来实施,利用有形体现的数字和/或量子计算机软件或固件来实施,利用数字和/或量子计算机硬件(包括本说明书中所公开的结构及其结构等效物)来实施,或利用它们中的一个或多个的组合来实施。术语“量子计算系统”可以包括但不限于量子计算机、量子信息处理系统、量子密码系统或量子模拟器。量子计算系统(一般而言)和量子计算机(特殊地)可以被实现或基于不同量子计算模型和架构。例如,量子计算系统可以基于诸如量子电路模型、单向量子计算、绝热量子计算、完整量子计算、模拟量子计算、数字量子计算或拓扑量子计算的模型或由这些模型描述。
[0138]
本说明书中所描述的数字和/或量子主题的实施方式可以实施为一个或多个数字和/或量子计算机程序,即,编码在有形的非暂时性存储介质上以供数据处理装置执行或控制该数据处理装置的操作的数字和/或量子计算机程序指令的一个或多个模块。数字和/或
量子计算机存储介质可以是机器可读存储设备、机器可读存储衬底、随机或串行存取存储器设备、一个或多个量子位,或它们中的一个或多个的组合。可替代地或另外,程序指令可以编码在人工生成的传播信号(例如机器生成的电气、光学或电磁信号)上,该信号能够对数字和/或量子信息进行编码的,生成该信号是为了对用于传输到合适的接收器装置以供数据处理装置执行的数字和/或量子信息进行编码)。
[0139]
术语量子信息和量子数据是指由量子系统携带、保存或存储的信息或数据,其中最小的非平凡系统是量子位,即,定义量子信息单元的系统。应理解,术语“量子位”涵盖在对应上下文中可以适当地近似为两级系统的所有量子系统。这种量子系统可以包括例如具有两级或更多级的多级系统。例如,这种系统可以包括原子、电子、光子、离子或超导量子位。在许多实施方式中,计算基础状态用基态和第一激发态识别,然而应理解,计算状态用更高级激发态识别的其它设置是可能的。
[0140]
术语“数据处理装置”是指数字和/或量子数据处理硬件,并且涵盖用于处理数字和/或量子数据的所有种类的装置、设备以及机器,包括例如可编程数字处理器、可编程量子处理器、数字计算机、量子计算机、多个数字和量子处理器或计算机以及其组合。该装置还可以是或进一步包括专用逻辑电路系统,例如fpga(现场可编程门阵列)、asic(专用集成电路)或量子模拟器,即,设计成模拟或产生关于特定量子系统的信息的量子数据处理装置。具体地,量子模拟器是不具有执行通用量子计算的能力的专用量子计算机。除了硬件之外,装置还可以可选地包括为数字和/或量子计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。
[0141]
可以用任何形式的编程语言(包括:编译语言或解译语言,或陈述性语言或程序语言)来编写数字计算机程序(也可以被称为或描述为程序、软件、软件应用、模块、软件模块、脚本或代码),并且可以按照任何形式(包括:作为独立式程序或模块、组件、子例程或适合于数字计算环境的其它单元)来部署数字计算机程序。可以用任何形式的编程语言(包括:编译语言或解译语言,或陈述性语言或程序语言)来编写量子计算机程序(也可以被称为或描述为程序、软件、软件应用、模块、软件模块、脚本或代码),并将其转换成合适的量子编程语言,或可以用量子编程语言(例如qcl或quipper)来编写该量子计算机程序。
[0142]
数字和/或量子计算机程序可以但并非必须与文件系统中的文件对应。可以将程序存储在保存其它程序或数据(例如存储在标记语言文档中的一个或多个脚本)的文件的一部分中,或存储在专用于所探讨的程序的单个文件中,或存储在多个协作文件(例如存储一个或多个模块、子程序或部分代码的文件)中。可以将数字和/或量子计算机程序部署为在一个数字或一个量子计算机上执行或在多个数字和/或量子计算机上执行,该多个数字和/或量子计算机位于一个站点处或分布在多个站点中并且由数字和/或量子数据通信网络互连。将量子数据通信网络理解为可以使用量子系统(例如量子位)传输量子数据的网络。通常,数字数据通信网络无法传输量子数据,然而,量子数据通信网络可以传输量子数据和数字数据两者。
[0143]
本说明书中所描述的过程和逻辑流程可以由一个或多个可编程数字和/或量子计算机执行,与一个或多个数字和/或量子处理器一起操作,视情况,执行一个或多个数字和/或量子计算机程序以通过对输入数字和量子数据进行操作并且生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路系统(例如fpga或asic)或量子模拟器执行,并且装置也
可以实施为专用逻辑电路系统或量子模拟器,或由专用逻辑电路系统或量子模拟器和一个或多个经过编程的数字和/或量子计算机的组合实施。
[0144]
使一个或多个数字和/或量子计算机的系统“配置为”执行特定操作或动作意味着系统已经在其上安装有软件、固件、硬件或其组合,这些软件、固件、硬件或其组合在操作中致使系统执行操作或动作。使一个或多个数字和/或量子计算机程序配置为执行特定操作或动作意味着一个或多个程序包括指令,该指令在被数字和/或量子数据处理装置执行时致使装置执行操作或动作。量子计算机可以从数字计算机接收指令,该指令在被量子计算装置执行时致使装置执行操作或动作。
[0145]
适合于执行数字和/或量子计算机程序的数字和/或量子计算机可以基于通用或专用数字和/或量子处理器或两者,或任何其它种类的中央数字和/或量子处理单元。通常,中央数字和/或量子处理单元将从只读存储器、随机存取存储器或适合于传输量子数据的量子系统(例如光子)或其组合接收指令和数字和/或量子数据。
[0146]
数字和/或量子计算机的基本元件是用于进行或执行指令的中央处理单元以及用于存储指令和数字和/或量子数据的一个或多个存储器设备。中央处理单元和存储器可以由专用逻辑电路系统或量子模拟器补充或可以并入该专用逻辑电路系统或量子模拟器中。通常,数字和/或量子计算机还将包括或可操作地耦合以从用于存储数字和/或量子数据的一个或多个海量存储设备(例如适合于存储量子信息的磁盘、磁光盘、光盘或量子系统)接收数字和/或量子数据或将数字和/或量子数据传送到该一个或多个海量存储设备或二者。然而,数字和/或量子计算机无需具有此类设备。
[0147]
适合于存储数字和/或量子计算机程序指令以及数字和/或量子数据的数字和/或量子计算机可读介质包括所有形式的非易失性数字和/或量子存储器、介质以及存储器设备,包括例如,半导体存储器设备(例如eprom、eeprom和闪速存储器设备);磁盘(例如内部硬盘或可移动盘);磁光盘;cd

rom盘和dvd

rom盘;以及量子系统,例如俘获原子或电子。应理解,量子存储器是可以在长时间内以高保真度和效率存储量子数据的设备,例如使用光进行传输和使用物质存储和保存量子数据的诸如叠加或量子相干性的量子特征的光

物质界面。
[0148]
对本说明书中所描述的各种系统或其部分的控制可以在数字和/或量子计算机程序产品中实施,该数字和/或量子计算机程序产品包括存储在一个或多个非暂时性机器可读存储介质上并且可在一个或多个数字和/或量子处理设备上执行的指令。本说明书中所描述的系统或其部分可以分别实施为可包括一个或多个数字和/或量子处理设备和存储器以存储可执行指令来执行本说明书中所描述的操作的装置、方法或系统。
[0149]
虽然本说明书包含许多特定实施细节,但这些细节不应被解释为对可以要求的内容的范围的限制,而是被解释为对可对具体实施方式特定的特征的描述。在本说明书中在单独实施方式的上下文中描述的某些特征还可以组合地实施在单种实施方式中。相反,在单种实施方式的上下文中描述的各种特征也可以单独地或按照任何合适的子组合实施在多种实施方式中。而且,尽管上文可以将特征描述为以某些组合来起作用并且最初甚至同样地对该特征进行了要求,但在一些情况下可以从组合中删除来自所要求的组合的一个或多个特征,并且所要求的组合可以涉及子组合或子组合的变化。
[0150]
类似地,虽然在附图中按照特定顺序描绘了操作,但不应将其理解为需要按照所
示出的特定顺序或按照相继的顺序来执行此类操作,或需要执行所有图示的操作以实现期望结果。在某些情况下,多任务处理和并行处理可以是有利的。而且,不应该将在上述实施方式中的各种系统模块和组件的分离理解为在所有实施方式中需要这种分离,并且应理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中或封装到多个软件产品中。
[0151]
已经描述了本主题的具体实施方式。其它实施方式在以下权利要求书的范围内。例如,在权利要求书中所叙述的动作可以按照不同的顺序来执行并且仍然可以实现期望结果。作为一个示例,在附图中所描绘的过程不一定需要所示的特定顺序或相继顺序,以实现期望结果。在一些情况下,多任务处理和并行处理可以是有利的。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献