CN109886412A - 一种量子程序的持久化存储方法、装置及存储介质 - Google Patents

一种量子程序的持久化存储方法、装置及存储介质 Download PDF

Info

Publication number
CN109886412A
CN109886412A CN201910028623.2A CN201910028623A CN109886412A CN 109886412 A CN109886412 A CN 109886412A CN 201910028623 A CN201910028623 A CN 201910028623A CN 109886412 A CN109886412 A CN 109886412A
Authority
CN
China
Prior art keywords
node
quantum
present
child
traversed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910028623.2A
Other languages
English (en)
Other versions
CN109886412B (zh
Inventor
窦猛汉
王晶
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hefei Native Quantum Computing Technology Co Ltd
Original Assignee
Hefei Native Quantum Computing Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hefei Native Quantum Computing Technology Co Ltd filed Critical Hefei Native Quantum Computing Technology Co Ltd
Priority to CN201910028623.2A priority Critical patent/CN109886412B/zh
Publication of CN109886412A publication Critical patent/CN109886412A/zh
Application granted granted Critical
Publication of CN109886412B publication Critical patent/CN109886412B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种量子程序的持久化存储方法、装置及存储介质,属于量子计算机技术领域,包括:创建顺序存储容器,并利用顺序存储器的头节点保存文件头数据结构;获取待处理量子程序,并遍历待处理量子程序包含的数据节点;针对遍历到的当前节点,判断当前节点是否包含子节点,若不包含则根据当前节点的类型,在顺序存储容器中创建数据存储节点以存储当前节点;若包含则遍历当前节点的各子节点,并重复执行对遍历到的当前节点判断是否包含子节点的步骤,直至各子节点存储完毕;将顺序存储容器存储至存储单元,并输出存储单元的地址或文件句柄。本发明将量子程序数据结构进行转换后保存在经典计算机的存储单元中,占用存储空间小、空间利用率高。

Description

一种量子程序的持久化存储方法、装置及存储介质
技术领域
本发明涉及量子计算机技术领域,特别涉及一种量子程序的持久化存储方法、装置及存储介质。
背景技术
量子计算机因其具有相对普通计算机更高效的数学问题处理能力,例如能将破解RSA密钥的时间从数百年加速到数小时,故成为一种正在研究中的关键技术。然而,现阶段的量子计算机的原型机的量子位数量较少,实际处理速度还没有经典计算机快。
为了解决这个问题,人们用量子虚拟机对量子计算机的行为进行预测,这种方法通常用来验证量子算法或者量子计算机行为的正确性,对量子算法和量子计算机设计进行指导。而量子虚拟机是人们使用经典计算机语言实现的对代表量子逻辑门的幺正变换矩阵和代表量子态的复数矢量之积的模拟,人们可使用量子语言编写的量子程序在经典计算机上操控量子虚拟机对了量子态的变化进行分析与仿真。
不管是量子虚拟机或量子计算机都需要通过量子程序控制其执行,而量子程序由量子逻辑门指令组成,故需要一种数据结构记录量子逻辑门指令的意义以及其执行顺序,称之为量子程序数据结构。或者将量子程序以量子指令集字符串的形式保存在文件中。
但是,量子程序数据结构只是对量子程序进行表示,但未对量子程序做持久化储存,使得量子程序不易保存,可移植性差。如果要跨操作系统执行该量子程序还需要在目标操作系统下重新编译生成量子程序的执行程序。而通过量子指令集字符串保存的量子程序,所占用存储空间大,空间利用率低。
发明内容
本发明的目的在于提供一种量子程序的持久化存储方法、装置及存储介质,以降低量子程序存储所占用的存储空间。
为实现以上目的,本发明采用一种量子程序的持久化存储方法,包括:
创建顺序存储容器,并利用顺序存储器的头节点保存文件头数据结构,该文件头数据结构用于统计待处理量子程序的节点和待处理量子程序文件的总长度;
获取待处理量子程序,并遍历所述待处理量子程序包含的数据节点;其中:所述数据节点为量子程序节点、量子线路节点、量子逻辑门节点、控制节点、表达式节点之一,且所述量子程序节点、所述量子线路节点、所述控制节点、所述表达式节点均包含子节点,所述量子逻辑门节点不包含子节点;
针对遍历到的当前节点,判断所述当前节点是否包含子节点,若判断所述当前节点不包含子节点时,则根据当前节点的类型,在顺序存储容器中创建数据存储节点以存储当前节点;
若判断所述当前节点包含子节点时,则遍历所述当前节点的各所述子节点,针对遍历到的当前子节点,记为当前节点,并重复执行所述对遍历到的当前节点,判断所述当前节点是否包含子节点的步骤,直至所述当前节点的各所述子节点存储完毕;
直至所述待处理量子程序的所有数据节点遍历完毕,将顺序存储容器存储至存储单元,并输出存储单元的地址或文件句柄。
优选地,当遍历到的所述当前节点为量子逻辑门节点时,则根据当前节点的类型,在顺序存储容器中创建相应类型的数据存储节点以存储当前节点,具体包括:
获取量子逻辑门的基本信息;其中,所述基本信息包括量子比特数信息、量子逻辑门种类信息和量子逻辑门转置共轭信息;
在所述顺序存储容器中创建一个第一类数据存储节点;所述第一类数据存储节点存储第一类数据存储节点的数量、所述量子比特数信息、所述量子逻辑门种类信息和所述量子逻辑门转置共轭信息;
然后将所述第一类数据存储节点存储到所述顺序存储容器的尾部。
优选地,当遍历到的所述当前节点为量子线路节点时,在所述遍历当前节点的各所述子节点之前还包括:
判断所述当前节点的转置共轭信息。
优选地,当遍历到的所述当前节点为表达式节点,则所述针对遍历到的当前子节点,记为当前节点,并重复执行所述对遍历到的当前节点,判断所述当前节点是否包含子节点的步骤,直至所述当前节点的各所述子节点存储完毕判断,具体包括:
以后序遍历的方式遍历所述表达式节点;
每记录一个所述表达式节点,创建一个第二类数据存储节点以存储对应的所述表达式节点;
将存储信息之后的所述第二类数据存储节点存储到所述顺序存储容器的尾部。
优选地,所述创建一个第二类数据存储节点以存储对应的所述表达式节点具体包括:
在所述顺序存储容器中创建一个第二类数据存储节点;,所述第二类数据存储节点存储所述第二类数据存储节点的数量、对应的表达式节点的类型和对应的表达式节点记录的信息。
优选地,所述控制节点包括控制表达式节点、控制类型节点和控制分支节点;
当遍历到的所述当前节点为控制节点,则先遍历存储所述控制表达式节点,再存储所述控制类型节点和所述控制分支节点。
优选地,所述遍历存储所述控制表达式节点包括:
以后序遍历的方式遍历所述控制表达式节点;
每记录一个所述控制表达式节点,创建一个第二类数据存储节点以存储对应的所述控制表达式节点;
将存储信息之后的所述第二类数据存储节点存储到所述顺序存储容器的尾部。
优选地,所述控制分支节点包括满足控制条件表达式的正确分支节点和不满足控制条件表达式的失败分支节点;
所述存储控制类型节点和所述控制分支节点,具体包括:
创建一个第三类数据存储节点,所述第三类数据存储节点存储所述第三类数据存储节点的数量、所述控制类型节点的类型、及所述正确分支节点的最后一个子节点的编号和所述失败分支节点的最后一个子节点的编号。
优选地,所述存储所述控制分支节点,还包括:
获取所述控制分支节点,并遍历所述控制分支节点所包含的子节点;
针对遍历到的当前节点,重复执行判断所述当前节点是否包含子节点,若判断所述当前节点不包含子节点时,则根据当前节点的类型,在顺序存储容器中创建相应类型的数据节点以存储当前节点;若判断所述当前节点包含子节点时,则遍历所述当前节点的各所述子节点,针对遍历到的当前子节点,记为当前节点,并重复执行所述对遍历到的当前节点,判断所述当前节点是否包含子节点的步骤,直至所述当前节点的各所述子节点存储完毕。
第二方面,提供一种量子程序的持久化存储装置,包括:创建模块、获取模块、遍历模块以及存储模块;
创建模块用于创建顺序存储容器,并利用顺序存储器的头节点保存文件头数据结构;其中:所述文件头数据结构用于统计待处理量子程序的节点和待处理量子程序的文件的总长度;
获取模块用于获取待处理量子程序,并遍历所述待处理量子程序包含的数据节点;其中:所述数据节点为量子程序节点、量子线路节点、量子逻辑门节点、控制节点、表达式节点之一,且所述量子程序节点、所述量子线路节点、所述控制节点、所述表达式节点均包含子节点,所述量子逻辑门节点不包含子节点;
遍历模块用于针对遍历到的当前节点,判断所述当前节点是否包含子节点,若判断所述当前节点不包含子节点时,则根据当前节点的类型,在顺序存储容器中创建数据存储节点以存储当前节点;若判断所述当前节点包含子节点时,则遍历所述当前节点的各所述子节点,针对遍历到的当前子节点,记为当前节点,并重复执行所述对遍历到的当前节点,判断所述当前节点是否包含子节点的步骤,直至所述当前节点的各所述子节点存储完毕;
存储模块用于在所述待处理量子程序的所有所述数据节点遍历完毕时,将顺序存储容器存储至存储单元,并输出存储单元的地址或文件句柄。
第三方面,提供一种存储介质,包括与存储设备结合使用的量子计算机程序,所述量子计算机程序用于被处理器执行以对量子程序进行存储,执行步骤包括:
创建顺序存储容器,并利用顺序存储器的头节点保存文件头数据结构;其中:所述文件头数据结构用于统计待处理量子程序的节点和待处理量子程序的文件的总长度;
获取待处理量子程序,并遍历所述待处理量子程序包含的数据节点;其中:所述数据节点为量子程序节点、量子线路节点、量子逻辑门节点、控制节点、表达式节点之一,且所述量子程序节点、所述量子线路节点、所述控制节点、所述表达式节点均包含子节点,所述量子逻辑门节点不包含子节点;
针对遍历到的当前节点,判断所述当前节点是否包含子节点,若判断所述当前节点不包含子节点时,则根据当前节点的类型,在顺序存储容器中创建数据存储节点以存储当前节点;
若判断所述当前节点包含子节点时,则遍历所述当前节点的各所述子节点,针对遍历到的当前子节点,记为当前节点,并重复执行所述对遍历到的当前节点,判断所述当前节点是否包含子节点的步骤,直至所述当前节点的各所述子节点存储完毕;
直至所述待处理量子程序的所有数据节点遍历完毕,将顺序存储容器存储至存储单元,并输出存储单元的地址或文件句柄。
与现有技术相比,本发明存在以下技术效果:本发明对给定任意一个量子程序,遍历量子程序的所有数据节点,并针对每个类型的数据节点创建设定格式的数据存储节点对其进行存储,以实现将量子程序以数据结构固定的方式储存在经典计算机的存储单元中,该存储单元可以是经典计算机内存或外部存储器等,并得到量子程序存储在经典寄存器内存中的地址、或者是存储在硬盘中文件的文件句柄。从而解决通过量子指令集字符串保存的量子程序,占用存储空间大,空间利用率低的问题。
附图说明
下面结合附图,对本发明的具体实施方式进行详细描述:
图1是一种量子程序的持久化存储方法的流程示意图;
图2是量子逻辑门节点存储流程图;
图3是条件判断控制节点存储流程图;
图4是循环判断控制节点存储流程图;
图5是一种量子程序的持久化存储装置的结构示意图。
具体实施方式
为了更进一步说明本发明的特征,请参阅以下有关本发明的详细说明与附图。所附图仅供参考与说明之用,并非用来对本发明的保护范围加以限制。
如图1所示,本实施例公开了一种量子程序的持久化存储方法,其用于对量子程序进行存储,持久化存储步骤包括S1至S6:
S1、创建顺序存储容器,并利用顺序存储器的头节点保存文件头数据结构。其中:所述文件头数据结构用于统计所述待处理量子程序的节点和待处理量子程序的文件的总长度。
S2、获取待处理量子程序,并遍历所述待处理量子程序包含的数据节点。其中:所述数据节点为量子程序节点、量子线路节点、量子逻辑门节点、控制节点、表达式节点之一,且所述量子程序节点、所述量子线路节点、所述控制节点、所述表达式节点均包含子节点,所述量子逻辑门节点不包含子节点。
S3、针对遍历到的当前节点,判断所述当前节点是否包含子节点,若否则执行步骤S4,若是则执行步骤S5。
S4、根据当前节点的类型,在顺序存储容器中创建数据存储节点以存储当前节点。
需要说明的是,将创建的数据存储节点首先存放在内存中,等整个量子程序遍历转换完成之后,一同写入到指定的存储介质中。
S5、遍历所述当前节点的各所述子节点,针对遍历到的当前子节点,记为当前节点,并重复执行步骤S3~S5直至所述当前节点的各所述子节点存储完毕。
S6、将顺序存储容器存储至存储单元,并输出存储单元的地址或文件句柄。
需要说明的是,该存储单元为可以是经典计算机内存或外部存储器等,本实施例中输入的是一种表达量子程序的数据结构,转换后调用系统提供的存储接口,将量子程序保存在经典计算机的存储单元中,输出量子程序存储在经典寄存器内存中的地址、或者是存储在硬盘中文件的文件句柄,实现量子程序的存储,克服了通过量子指令集字符串保存的量子程序,占用存储空间大,空间利用率低的问题。
其中,在各个子节点存储完毕后,对文件头数据结构进行更新,并将顺序存储容器写入所述存储单元中。本实施例中文件头数据结构如下表1所示。
表1
表1中,uiFileLength的作用是保存当前存储量子程序文件的总长度;uiNodeCounter的作用是保存量子程序数据节点的总数。
还需要说明的是,本是实施例中待处理的量子程序的数据结构包括量子线路节点类、量子程序节点类、量子逻辑门节点类、控制节点类、表达式节点类。其中,量子程序节点、量子线路节点、控制节点、表达式节点均包含子节点,量子逻辑门节点不包含子节点。量子程序的子节点为量子线路节点、控制节点、表达式节点及量子逻辑门节点中一种或几种组合,量子线路节点的子节点为表达式节点、控制节点及量子逻辑门节点中的一种或两种组合,控制节点的子节点为量子程序节点、量子线路节点、控制节点、表达式节点及量子逻辑门节点的一种或几种组合。
量子线路节点类用于使用容器保存一组节点类,量子程序节点类用于使用容器保存一组节点类,量子逻辑门节点类用于保存量子逻辑门的操作的量子比特、量子逻辑门对应的酉矩阵及量子逻辑门的转置共轭信息,判断表达式节点类用于保存判断表达式的相关信息。
优选地,步骤S3和步骤S4在执行的时候,当遍历到的所述当前节点为量子逻辑门节点时,由于量子逻辑门节点不包含子节点,则根据当前节点的类型,在顺序存储容器中创建相应类型的数据存储节点以存储当前节点,具体包括:
步骤S41:获取量子逻辑门的基本信息,其中,所述基本信息包括量子比特数信息、量子逻辑门种类信息和量子逻辑门转置共轭信息;
步骤S42:在所述顺序存储容器中创建一个第一类数据存储节点。
具体的,所述第一类数据存储节点具体地作用是储存量子逻辑门节点的相关信息,其数据结构如表2所示,包括32位的uiTypeAndNum1结构和2位的usQBitArray1结构。
表2
属性 作用
uiTypeAndNum1 当前逻辑门节点的类型和编号
usQBitArray1[2] 当前逻辑门节点相关的量子比特
表2中,uiTypeAndNum1的作用是记录逻辑门节点的种类和编号,uiTypeAndNum的数据类型为无符号整型,无符号整型在32位或64位操作系统中都是32bit。uiTypeAndNum1把第0位用来保存量子逻辑门是否为转置,第1~15位保存逻辑门节点的种类,第16~31位保存逻辑门节点的时序位置,该时序位置通过更新记录第一类数据存储节点的数量实现,如表3所示:
表3
编号 种类 转置
16~31 1~15 0
在表2中,usQBitArray1[2]的作用是记录逻辑门相关的量子比特,由于,经过给定一个多控制U门(CnU门)可将其分解为CU类型的量子逻辑门和单量子比特门的门组合算法的优化后,量子程序最终只会包含单比特量子逻辑门和双比特量子逻辑门,故在保存量子逻辑门相关量子比特时,只需要预留两个无符号短整型即可。
步骤S43:所述第一类数据存储节点存储第一类数据存储节点的数量、所述量子比特数信息、所述量子逻辑门种类信息和所述量子逻辑门转置共轭信息。需要说明的是,第一类数据存储节点的数量代表了对应节点的执行时序。
具体的,将第一类数据存储节点的数量加一后保存在uiTypeAndNum1结构的第16-31位实现第一类数据存储节点的数量的存储;将量子逻辑门种类信息保存在uiTypeAndNum1结构的第1-15位,将量子逻辑门转置共轭信息保存在uiTypeAndNum1结构的第0位,将量子比特数信息保存在usQBitArray1结构,进而实现所述量子比特数信息、所述量子逻辑门种类信息和所述量子逻辑门转置共轭信息三者的具体存储。
步骤S44:然后将所述第一类数据存储节点存储到所述顺序存储容器的尾部,即将存储信息之后的第一类数据存储节点存储到所述顺序存储容器的尾部。
优选地,在判断当前节点类型为量子逻辑门节点时,若量子逻辑门为多控制门时,还包括:
将所述量子逻辑门中的多控制U门转换为CU类型的量子逻辑门加单比特量子逻辑门。即给定一个多控制U门(CnU门)可将其分解为CU类型的量子逻辑门和单量子比特门的门组合,因为CU类型的量子逻辑门和单量子比特们是直接可存储的。即将门分解为有限个数量的CNOT门和有限的CV或CV+,其中V2=U。随着控制位的增加,其分解复杂度为2n,其中n-1为控制比特位的数量。
优选地,在遍历到的当前节点的类型为量子线路节点时,在上述步骤S5即遍历当前节点的各子节点之前还包括:
步骤S50:判断所述当前节点的转置共轭信息。
其中,当前节点即量子线路节点的子节点包括表达式节点、控制节点、量子逻辑门节点的之一或组合,该量子线路节点为子节点的父节点,本实施例中在遍历量子线路节点的子节点之前,判断量子线路节点的转置共轭信息,并在遍历过程中判断其子节点的转置共轭信息。对父节点的转置共轭信息和当前遍历的子节点的转置共轭信息,通过同或异的运算运算确定输出的该子节点的转置共轭信息,具体的,判断得到父节点转置共轭,判断得到子节点转置共轭,两者同,则输出子节点不转置共轭;若两者异,则输出子节点转置共轭。
优选地,在当前遍历的数据节点的类型为表达式节点时,上述步骤S5具体包括如下细分步骤:
步骤S51:以后序遍历的方式遍历所述表达式节点;
步骤S52:每记录一个所述表达式节点,创建一个第二类数据存储节点以存储对应的所述表达式节点;
步骤S53:将存储信息之后的所述第二类数据存储节点存储到所述顺序存储容器的尾部。
需要说明的是,本实施例中表达式节点以二叉树的形式给出,可按照后序遍历的方式遍历表达式节点并把相关信息保存在第二类数据存储节点中。
优选地,步骤S52中创建一个第二类数据存储节点以存储对应的所述表达式节点,具体包括:
步骤S521:在所述顺序存储容器中创建一个第二类数据存储节点,所述第二类数据存储节点存储所述第二类数据存储节点的数量、对应的表达式节点的类型和对应的表达式节点记录的信息。
具体的,所述第二类数据存储节点的结构如表4所示,包括uiData2结构和32位的uiTypeAndNum2结构。
表4
属性 作用
uiTypeAndNum2 表达式节点的类型和编号
uiData2 表达式节点记录的信息
表4中,uiTypeAndNum2的作用是记录数据节点的种类和编号;uiData2的作用是记录目标经典寄存器或表达式对应的运算符。
步骤S522:将所述第二类数据存储节点的数量加一并保存在uiTypeAndNum2结构的第16~31位实现所述第二类数据存储节点的数量存储,把所述第二类数据存储节点对应的表达式节点的类型保存在uiTypeAndNum2结构的第1~15位实现对应的表达式节点的类型存储,将该第二类数据存储节点对应的表达式节点记录的信息存放在uiData2结构中实现对应的表达式节点记录的信息存储。
优选地,所述控制节点包括控制表达式节点、控制类型节点和控制分支节点;步骤S3和步骤S4在执行的时候,当遍历到的所述当前节点为控制节点,则进行步骤S61:先遍历存储所述控制表达式节点,步骤S62:再存储所述控制类型节点和所述控制分支节点。
优选地,步骤S61中的遍历存储所述控制表达式节点包括如下步骤:
步骤S611:以后序遍历的方式遍历所述控制表达式节点;
步骤S612:每记录一个所述控制表达式节点,创建一个第二类数据存储节点以存储对应的所述控制表达式节点;
步骤S613:将存储信息之后的所述第二类数据存储节点存储到所述顺序存储容器的尾部。
另外,考虑到所述控制分支节点包括满足控制条件表达式的正确分支节点和不满足控制条件表达式的失败分支节点,所以步骤S62所示的存储所述控制类型节点和所述控制分支节点在执行时,具体包括如下步骤:
步骤S621:创建一个第三类数据存储节点。
具体的,所述第三类数据存储节点包括32位的uiTypeAndNum3结构和32位的uiTrueAndFalseNode3结构,如表5所示:
表5
属性 简介
uiTypeAndNum3 当前节点的类型和编号
uiTrueAndFalseNode3 正确和失败节点顺序编号
表5中,uiTypeAndNum3的作用是记录节点的种类和编号。uiTrueAndFalseNode3的作用是记录当前节点对应的正确分支节点和错误分支节点的尾节点(即最后一个子节点)的编号。
uiTrueAndFalseNode3的第0~15位是失败分支节点的尾节点编号,第16~31位是正确分支节点的尾节点编号,如下表6所示:
表6
步骤S622:所述第三类数据存储节点存储所述第三类数据存储节点的数量、所述控制类型节点的类型、及所述正确分支节点的最后一个子节点的编号和所述失败分支节点的最后一个子节点的编号。
具体的,将所述第三类数据存储节点的数量加一并保存在uiTypeAndNum3结构的第16~31位,把所述控制类型节点的类型保存在uiTypeAndNum3结构的第1~15位;获取所述正确分支节点所包含的最后一个子节点的编号,并将该编号保存在所述uiTrueAndFalseNode3的第16~31位;获取所述失败分支节点所包含的最后一个子节点的编号,并将该编号保存在所述uiTrueAndFalseNode3的第0~15位。
优选地,步骤S62存储所述控制分支节点,还包括如下步骤S623:
步骤S623:获取所述控制分支节点,并遍历所述控制分支节点所包含的子节点;
针对遍历到的当前节点,重复执行判断所述当前节点是否包含子节点,若判断所述当前节点不包含子节点时,则根据当前节点的类型,在顺序存储容器中创建相应类型的数据节点以存储当前节点;若判断所述当前节点包含子节点时,则遍历所述当前节点的各所述子节点,针对遍历到的当前子节点,记为当前节点,并重复执行所述对遍历到的当前节点,判断所述当前节点是否包含子节点的步骤,直至所述当前节点的各所述子节点存储完毕。
进一步地,如图2-图4所示,本实施例对量子程序进行存储的具体过程为:
第1步:创建顺序存储容器Datalist,比如C++的Vector或list;头节点用于保存文件头数据结构;
第2步:获取待处理量子程序的第一个子节点node;
第3步:判断量子程序的子节点的类型;
第4步:如果是量子逻辑门节点类型,则跳转到第5步;如果是量子线路节点类型则转到第9步;如果是量子程序节点类型则跳转到第2步;如果是条件判断节点类型跳转到第11步;如果是循环节点类型跳转到16,执行完成后获取下一个node,跳转到第3步;
第5步:获取量子逻辑门的量子比特数组;
第6步:获取量子逻辑门的类型信息,获取当前量子逻辑门是否为转置共轭,并与父节点的转置共轭信息进行异或运算,来获取当前量子逻辑门的转置共轭信息;
第7步:创建第一类数据存储节点,将第一类数据存储节点的数量加一并保存在uiTypeAndNum1的第16~31位,然后把量子逻辑门的类型保存在uiTypeAndNum1的第1~15位,把当前量子逻辑门是否转置保存在uiTypeAndNum1的第0位。把量子逻辑门相关的量子比特数组保存在usQBitArray1,并将存储信息之后的第一类数据存储节点存储在Datalist的尾部;
第8步:获取下一个节点并跳转到第3步;
9步:获取当前量子线路节点的当前节点的转置共轭信息,并与量子线路节点的子节点的转置共轭信息进行异或运算,确定量子线路节点子节点转置共轭信息;
第10步:获取量子线路节点的第一个子节点,并跳转到第3步;
第11步:获取控制节点的表达式头节点,以后序遍历的方式遍历表达式节点,每记录一个表达式节点,创建一个第二类数据存储节点,将第二类数据存储节点的数量都加一并保存在uiTypeAndNum2的第16~31位,然后把表达式节点的类型保存在uiTypeAndNum2的第1~15位,表达式节点记录的信息存放在uiData2中,并将存储信息之后的第二类数据存储节点存储在Datalist的尾部;
第12步:创建第三类数据存储节点,将第三类数据存储节点的数量加一并保存在uiTypeAndNum3的第16~31位,然后把控制节点的类型保存在uiTypeAndNum3的第1~15位,并把第三类数据存储节点保存在Datalist的尾部;
第13步:获取正确分支节点,判断其类型,如果是量子逻辑门节点类型跳转到第5步;如果是量子线路节点类型跳转到第9步;如果是量子程序节点类型跳转到第2步;如果是条件判断节点类型跳转到第11步;如果是循环判断节点类型跳转到16;
第14步:获取失败分支节点,如果不存在则返回,如果存在判断其类型,如果是量子逻辑门节点类型跳转到第5步;如果是量子线路节点类型跳转到第9步;如果是量子程序节点类型跳转到第2步;如果是条件判断节点类型跳转到第11步;如果是循环节点类型跳转到16,执行完成后返回;
第15步:把条件判断控制节点的正确分支尾节点编号保存在第三类数据存储节点的uiTrueAndFalseNode3的第16~31,判断失败分支是否存在,如果存在把失败分支的头节点编号保存在第三类数据存储节点的uiTrueAndFalseNode3的第0~15位;
第16步:获取循环控制节点的表达式头节点,以中序遍历的方式遍历表达式节点,每记录一个表达式节点,创建第二类数据存储节点,第二类数据存储节点的数量都加一并保存在uiTypeAndNum2的第16~31位,然后把表达式节点的类型保存在uiTypeandNum2的第1~15位,表达式节点记录的信息存放在uiData2中,并把存储信息之后的所述第二类数据存储节点保存在Datalist的尾部;
第17步:创建第三类数据存储节点,第三类数据存储节点的数量加一并保存在uiTypeAndNum3的第16~31位,然后把控制节点的类型保存在uiTypeAndNum3的第1~15位,并把存储信息后的第三数据存储节点保存在Datalist的尾部;
第18步:获取正确分支节点,判断其类型,如果是量子逻辑门节点类型跳转到第5步;如果是量子线路节点类型跳转到第9步;如果是量子程序节点类型跳转到第2步;如果是条件判断节点类型跳转到第11步;如果是循环节点类型跳转到16,执行完成后跳出循环;
第19步:把条件判断控制节点的正确分支尾节点编号保存在第三类数据存储节点的uiTrueAndFalseNode3的第16~31。
如图5所示,本实施例还公开了一种量子程序的持久化存储装置,包括:创建模块10、获取模块20、遍历模块30以及存储模块40;
创建模块10用于创建顺序存储容器,并利用顺序存储器的头节点保存文件头数据结构;其中:所述文件头数据结构用于统计所述待处理量子程序的节点和待处理量子程序的文件的总长度;
获取模块20用于获取待处理量子程序,并遍历所述待处理量子程序包含的数据节点;其中:所述数据节点为量子程序节点、量子线路节点、量子逻辑门节点、控制节点、表达式节点之一,且所述量子程序节点、所述量子线路节点、所述控制节点、所述表达式节点均包含子节点,所述量子逻辑门节点不包含子节点;
遍历模块30用于针对遍历到的当前节点,判断所述当前节点是否包含子节点,若判断所述当前节点不包含子节点时,则根据当前节点的类型,在顺序存储容器中创建数据存储节点以存储当前节点;若判断所述当前节点包含子节点时,则遍历所述当前节点的各所述子节点,针对遍历到的当前子节点,记为当前节点,并重复执行所述对遍历到的当前节点,判断所述当前节点是否包含子节点的步骤,直至所述当前节点的各所述子节点存储完毕;
存储模块40用于在所述待处理量子程序的所有所述数据节点遍历完毕时,将顺序存储容器存储至存储单元,并输出存储单元的地址或文件句柄。
本实施例还公开了一种可读存储介质,包括与存储设备结合使用的量子计算机程序,所述量子计算机程序用于被处理器执行以对量子程序进行存储,执行步骤包括:
创建顺序存储容器,并利用顺序存储器的头节点保存文件头数据结构;其中:所述文件头数据结构用于统计所述待处理量子程序的节点和待处理量子程序的文件的总长度;
获取待处理量子程序,并遍历所述待处理量子程序包含的数据节点;其中:所述数据节点为量子程序节点、量子线路节点、量子逻辑门节点、控制节点、表达式节点之一,且所述量子程序节点、所述量子线路节点、所述控制节点、所述表达式节点均包含子节点,所述量子逻辑门节点不包含子节点;
针对遍历到的当前节点,判断所述当前节点是否包含子节点,若判断所述当前节点不包含子节点时,则根据当前节点的类型,在顺序存储容器中创建数据存储节点以存储当前节点;
若判断所述当前节点包含子节点时,则遍历所述当前节点的各所述子节点,针对遍历到的当前子节点,记为当前节点,并重复执行所述对遍历到的当前节点,判断所述当前节点是否包含子节点的步骤,直至所述当前节点的各所述子节点存储完毕;
直至所述待处理量子程序的所有数据节点遍历完毕,将顺序存储容器存储至存储单元,并输出存储单元的地址或文件句柄。
应理解的是,存储装置中的各功能模块以及存储介质中的量子计算机程序用于执行如图1-图4所示的相应流程。
本实施例中的处理器可以是中央处理器,也可以是其它通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者任何常规的处理器等。
存储器可包括只读存储器和随机存取存储器,并向处理器提供指令和数据。
本方案对给定的任意一个量子程序,提供一组固定的数据结构,把量子程序以数据结构固定的方式储存在经典计算机的存储单元中。解决了通过量子指令集字符串保存量子程序占用存储空间大和空间利用率低的问题。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (11)

1.一种量子程序的持久化存储方法,其特征在于,包括:
创建顺序存储容器,并利用顺序存储器的头节点保存文件头数据结构;其中:所述文件头数据结构用于统计待处理量子程序的节点和待处理量子程序的文件的总长度;
获取待处理量子程序,并遍历所述待处理量子程序包含的数据节点;其中:所述数据节点为量子程序节点、量子线路节点、量子逻辑门节点、控制节点、表达式节点之一,且所述量子程序节点、所述量子线路节点、所述控制节点、所述表达式节点均包含子节点,所述量子逻辑门节点不包含子节点;
针对遍历到的当前节点,判断所述当前节点是否包含子节点,若判断所述当前节点不包含子节点时,则根据当前节点的类型,在顺序存储容器中创建数据存储节点以存储当前节点;
若判断所述当前节点包含子节点时,则遍历所述当前节点的各所述子节点,针对遍历到的当前子节点,记为当前节点,并重复执行所述对遍历到的当前节点,判断所述当前节点是否包含子节点的步骤,直至所述当前节点的各所述子节点存储完毕;
直至所述待处理量子程序的所有数据节点遍历完毕,将顺序存储容器存储至存储单元,并输出存储单元的地址或文件句柄。
2.如权利要求1所述的量子程序的持久化存储方法,其特征在于,当遍历到的所述当前节点为量子逻辑门节点时,则根据当前节点的类型,在顺序存储容器中创建相应类型的数据存储节点以存储当前节点,具体包括:
获取所述量子逻辑门的基本信息;其中,所述基本信息包括量子比特数信息、量子逻辑门种类信息和量子逻辑门转置共轭信息;
在所述顺序存储容器中创建一个第一类数据存储节点,所述第一类数据存储节点存储第一类数据存储节点的数量、所述量子比特数信息、所述量子逻辑门种类信息和所述量子逻辑门转置共轭信息;
然后将所述第一类数据存储节点存储到所述顺序存储容器的尾部。
3.如权利要求1所述的量子程序的持久化存储方法,其特征在于,当遍历到的所述当前节点为量子线路节点时,在所述遍历当前节点的各所述子节点之前还包括:
判断所述当前节点的转置共轭信息。
4.如权利要求1所述的量子程序的持久化存储方法,其特征在于,当遍历到的所述当前节点为表达式节点,则所述针对遍历到的当前子节点,记为当前节点,并重复执行所述对遍历到的当前节点,判断所述当前节点是否包含子节点的步骤,直至所述当前节点的各所述子节点存储完毕判断,具体包括:
以后序遍历的方式遍历所述表达式节点;
每记录一个所述表达式节点,创建一个第二类数据存储节点以存储对应的所述表达式节点;
然后将所述第二类数据存储节点存储到所述顺序存储容器的尾部。
5.如权利要求4所述的量子程序的持久化存储方法,其特征在于,所述创建一个第二类数据存储节点以存储对应的所述表达式节点具体包括:
在所述顺序存储容器中创建一个第二类数据存储节点,所述第二类数据存储节点存储所述第二类数据存储节点的数量、对应的表达式节点的类型和对应的表达式节点记录的信息。
6.如权利要求1所述的量子程序的持久化存储方法,其特征在于,所述控制节点包括控制表达式节点、控制类型节点和控制分支节点;
当遍历到的所述当前节点为控制节点,则先遍历存储所述控制表达式节点,再存储所述控制类型节点和所述控制分支节点。
7.如权利要求6所述的量子程序的持久化存储方法,其特征在于,所述遍历存储所述控制表达式节点包括:
以后序遍历的方式遍历所述控制表达式节点;
每记录一个所述控制表达式节点,创建一个第二类数据存储节点以存储对应的所述控制表达式节点;
将存储信息之后的所述第二类数据存储节点存储到所述顺序存储容器的尾部。
8.如权利要求6所述的量子程序的持久化存储方法,其特征在于,所述控制分支节点包括满足控制条件表达式的正确分支节点和不满足控制条件表达式的失败分支节点;
所述存储所述控制类型节点和所述控制分支节点,具体包括:
创建一个第三类数据存储节点,所述第三类数据存储节点存储所述第三类数据存储节点的数量、所述控制类型节点的类型、及所述正确分支节点的最后一个子节点的编号和所述失败分支节点的最后一个子节点的编号。
9.如权利要求6所述的量子程序的持久化存储方法,其特征在于,所述存储所述控制分支节点,还包括:
获取所述控制分支节点,并遍历所述控制分支节点所包含的子节点;
针对遍历到的当前节点,重复执行判断所述当前节点是否包含子节点,若判断所述当前节点不包含子节点时,则根据当前节点的类型,在顺序存储容器中创建相应类型的数据存储节点以存储当前节点;若判断所述当前节点包含子节点时,则遍历所述当前节点的各所述子节点,针对遍历到的当前子节点,记为当前节点,并重复执行所述对遍历到的当前节点,判断所述当前节点是否包含子节点的步骤,直至所述当前节点的各所述子节点存储完毕。
10.一种量子程序的持久化存储装置,其特征在于,包括:创建模块、获取模块、遍历模块以及存储模块;
创建模块用于创建顺序存储容器,并利用顺序存储器的头节点保存文件头数据结构;其中:所述文件头数据结构用于统计待处理量子程序的节点和待处理量子程序的文件的总长度;
获取模块用于获取待处理量子程序,并遍历所述待处理量子程序包含的数据节点;其中:所述数据节点为量子程序节点、量子线路节点、量子逻辑门节点、控制节点、表达式节点之一,且所述量子程序节点、所述量子线路节点、所述控制节点、所述表达式节点均包含子节点,所述量子逻辑门节点不包含子节点;
遍历模块用于针对遍历到的当前节点,判断所述当前节点是否包含子节点,若判断所述当前节点不包含子节点时,则根据当前节点的类型,在顺序存储容器中创建数据存储节点以存储当前节点;若判断所述当前节点包含子节点时,则遍历所述当前节点的各所述子节点,针对遍历到的当前子节点,记为当前节点,并重复执行所述对遍历到的当前节点,判断所述当前节点是否包含子节点的步骤,直至所述当前节点的各所述子节点存储完毕;
存储模块用于在所述待处理量子程序的所有所述数据节点遍历完毕时,将顺序存储容器存储至存储单元,并输出存储单元的地址或文件句柄。
11.一种存储介质,其特征在于,包括与存储设备结合使用的量子计算机程序,所述量子计算机程序用于被处理器执行以对量子程序进行存储,执行步骤包括:
创建顺序存储容器,并利用顺序存储器的头节点保存文件头数据结构;其中:所述文件头数据结构用于统计待处理量子程序的节点和待处理量子程序的文件的总长度;
获取待处理量子程序,并遍历所述待处理量子程序包含的数据节点;其中:所述数据节点为量子程序节点、量子线路节点、量子逻辑门节点、控制节点、表达式节点之一,且所述量子程序节点、所述量子线路节点、所述控制节点、所述表达式节点均包含子节点,所述量子逻辑门节点不包含子节点;
针对遍历到的当前节点,判断所述当前节点是否包含子节点,若判断所述当前节点不包含子节点时,则根据当前节点的类型,在顺序存储容器中创建数据存储节点以存储当前节点;
若判断所述当前节点包含子节点时,则遍历所述当前节点的各所述子节点,针对遍历到的当前子节点,记为当前节点,并重复执行所述对遍历到的当前节点,判断所述当前节点是否包含子节点的步骤,直至所述当前节点的各所述子节点存储完毕;
直至所述待处理量子程序的所有数据节点遍历完毕,将顺序存储容器存储至存储单元,并输出存储单元的地址或文件句柄。
CN201910028623.2A 2019-01-11 2019-01-11 一种量子程序的持久化存储方法、装置及存储介质 Active CN109886412B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910028623.2A CN109886412B (zh) 2019-01-11 2019-01-11 一种量子程序的持久化存储方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910028623.2A CN109886412B (zh) 2019-01-11 2019-01-11 一种量子程序的持久化存储方法、装置及存储介质

Publications (2)

Publication Number Publication Date
CN109886412A true CN109886412A (zh) 2019-06-14
CN109886412B CN109886412B (zh) 2021-06-08

Family

ID=66925891

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910028623.2A Active CN109886412B (zh) 2019-01-11 2019-01-11 一种量子程序的持久化存储方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN109886412B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110826719A (zh) * 2019-10-14 2020-02-21 合肥本源量子计算科技有限责任公司 一种量子程序的处理方法、装置、存储介质和电子装置
CN111158583A (zh) * 2019-11-25 2020-05-15 深圳壹账通智能科技有限公司 图计算的布尔型变量存储方法、装置、设备及存储介质
CN111176774A (zh) * 2019-12-30 2020-05-19 山东浪潮人工智能研究院有限公司 一种基于量子测控系统的ui架构系统及应用方法
WO2021012497A1 (zh) * 2019-07-22 2021-01-28 平安科技(深圳)有限公司 图计算的类别型变量存储方法、装置、设备及存储介质
CN112583580A (zh) * 2019-09-27 2021-03-30 科大国盾量子技术股份有限公司 一种量子密钥的处理方法及相关设备
WO2022110705A1 (zh) * 2020-11-30 2022-06-02 合肥本源量子计算科技有限责任公司 Qram架构的量子线路的构建方法和装置、以及量子地址数据的解析方法和装置
CN114638367A (zh) * 2020-11-30 2022-06-17 合肥本源量子计算科技有限责任公司 一种数据的读取方法、装置、存储介质及电子装置
CN114638368A (zh) * 2020-11-30 2022-06-17 合肥本源量子计算科技有限责任公司 一种用于qram架构的量子线路的构建方法及装置
CN117252559A (zh) * 2023-11-20 2023-12-19 迈为技术(珠海)有限公司 业务流程的处理方法、装置、计算机设备、存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002112039A (ja) * 2000-09-29 2002-04-12 Ricoh Co Ltd 画像符号化/復号化処理装置
CN102867059A (zh) * 2012-09-19 2013-01-09 浪潮(北京)电子信息产业有限公司 一种树形结构中数据的处理方法和系统
CN103530091A (zh) * 2013-10-29 2014-01-22 曙光信息产业(北京)有限公司 Cpmd的计算任务的实现方法和装置
CN105610701A (zh) * 2016-03-18 2016-05-25 深圳市招华电子科技有限公司 一种即时通信的方法、装置及系统
CN107330030A (zh) * 2017-06-23 2017-11-07 南京师范大学 一种面向海量路网数据压缩存储的层次网络构建方法
CN108701263A (zh) * 2015-12-30 2018-10-23 谷歌有限责任公司 量子统计机器
CN108733317A (zh) * 2017-04-18 2018-11-02 北京京东尚科信息技术有限公司 数据存储方法和装置
CN109063844A (zh) * 2018-07-13 2018-12-21 合肥本源量子计算科技有限责任公司 一种表示量子程序的数据结构

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002112039A (ja) * 2000-09-29 2002-04-12 Ricoh Co Ltd 画像符号化/復号化処理装置
CN102867059A (zh) * 2012-09-19 2013-01-09 浪潮(北京)电子信息产业有限公司 一种树形结构中数据的处理方法和系统
CN103530091A (zh) * 2013-10-29 2014-01-22 曙光信息产业(北京)有限公司 Cpmd的计算任务的实现方法和装置
CN108701263A (zh) * 2015-12-30 2018-10-23 谷歌有限责任公司 量子统计机器
CN105610701A (zh) * 2016-03-18 2016-05-25 深圳市招华电子科技有限公司 一种即时通信的方法、装置及系统
CN108733317A (zh) * 2017-04-18 2018-11-02 北京京东尚科信息技术有限公司 数据存储方法和装置
CN107330030A (zh) * 2017-06-23 2017-11-07 南京师范大学 一种面向海量路网数据压缩存储的层次网络构建方法
CN109063844A (zh) * 2018-07-13 2018-12-21 合肥本源量子计算科技有限责任公司 一种表示量子程序的数据结构

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
CHANELIERE, T 等: "Storage and retrieval of single photons transmitted between remote quantum memories", 《NATURE》 *
李雪晓: "基于格的大数据动态存储完整性验证方案", 《技术研究》 *
王祖俪主编: "《数据结构》", 31 July 2016, 西安电子科技大学出版社 *

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021012497A1 (zh) * 2019-07-22 2021-01-28 平安科技(深圳)有限公司 图计算的类别型变量存储方法、装置、设备及存储介质
CN112583580B (zh) * 2019-09-27 2023-05-02 科大国盾量子技术股份有限公司 一种量子密钥的处理方法及相关设备
CN112583580A (zh) * 2019-09-27 2021-03-30 科大国盾量子技术股份有限公司 一种量子密钥的处理方法及相关设备
CN110826719B (zh) * 2019-10-14 2022-08-16 合肥本源量子计算科技有限责任公司 一种量子程序的处理方法、装置、存储介质和电子装置
CN110826719A (zh) * 2019-10-14 2020-02-21 合肥本源量子计算科技有限责任公司 一种量子程序的处理方法、装置、存储介质和电子装置
CN111158583A (zh) * 2019-11-25 2020-05-15 深圳壹账通智能科技有限公司 图计算的布尔型变量存储方法、装置、设备及存储介质
CN111176774A (zh) * 2019-12-30 2020-05-19 山东浪潮人工智能研究院有限公司 一种基于量子测控系统的ui架构系统及应用方法
CN111176774B (zh) * 2019-12-30 2023-06-09 山东浪潮科学研究院有限公司 一种基于量子测控系统的ui架构系统及应用方法
WO2022110705A1 (zh) * 2020-11-30 2022-06-02 合肥本源量子计算科技有限责任公司 Qram架构的量子线路的构建方法和装置、以及量子地址数据的解析方法和装置
CN114638367A (zh) * 2020-11-30 2022-06-17 合肥本源量子计算科技有限责任公司 一种数据的读取方法、装置、存储介质及电子装置
CN114638368A (zh) * 2020-11-30 2022-06-17 合肥本源量子计算科技有限责任公司 一种用于qram架构的量子线路的构建方法及装置
CN114638368B (zh) * 2020-11-30 2023-08-04 本源量子计算科技(合肥)股份有限公司 一种用于qram架构的量子线路的构建方法及装置
CN114638367B (zh) * 2020-11-30 2023-08-04 本源量子计算科技(合肥)股份有限公司 一种数据的读取方法、装置、存储介质及电子装置
CN117252559A (zh) * 2023-11-20 2023-12-19 迈为技术(珠海)有限公司 业务流程的处理方法、装置、计算机设备、存储介质

Also Published As

Publication number Publication date
CN109886412B (zh) 2021-06-08

Similar Documents

Publication Publication Date Title
CN109886412A (zh) 一种量子程序的持久化存储方法、装置及存储介质
WO2020151129A1 (zh) 量子机器学习框架构建方法、装置、量子计算机及计算机存储介质
CN109063843A (zh) 一种量子计算机软件架构系统
CN110826719A (zh) 一种量子程序的处理方法、装置、存储介质和电子装置
CN114764549B (zh) 基于矩阵乘积态的量子线路模拟计算方法、装置
CN109816112A (zh) 一种解析量子程序存储文件的方法及装置
CN105608162B (zh) 文件处理方法和装置
CN111461335A (zh) 基于mpi多进程的含噪声单量子逻辑门实现方法及装置
Basu Design methods and analysis of algorithms
CN106295670A (zh) 数据处理方法及数据处理装置
Romanov et al. Simulation and synthesis of networks-on-chip by using NoCSimp HDL library
CN104090995B (zh) 一种ABAQUS轮胎模型中rebar单元网格的自动生成方法
CN114511094A (zh) 一种量子算法的优化方法、装置、存储介质与电子装置
Huan et al. T-gcn: A sampling based streaming graph neural network system with hybrid architecture
CN114512194A (zh) 用于量子化学模拟中获取目标体系试验态的方法及装置
CN106802787A (zh) 基于GPU排序的MapReduce优化方法
CN113222160B (zh) 一种量子态的转换方法及装置
Onai et al. Architecture of a reduction-based parallel inference machine: PIM-R
CN112199214A (zh) 一种gpu上的候选口令生成及应用破解方法
CN114881239A (zh) 量子生成器的构造方法、装置、介质及电子装置
CN113568845B (zh) 一种基于强化学习的内存地址映射方法
CN109800867A (zh) 一种基于fpga片外存储器的数据调用方法
CN114638368B (zh) 一种用于qram架构的量子线路的构建方法及装置
Lee Barrier synchronization over multistage interconnection networks
Rooß Recent developments in DNA-computing

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant