查看原文
其他

QPanda 2教程资源​ | 最常用的量子计算模型——量子线路

OriginQ 本源量子 2021-02-13

hai~小伙伴们好

继上篇推出的量子逻辑门

大家是不是期盼已久了呢 

今天小编为你们带来

量子线路

现在请跟随我们

一起来操作体验吧



在上一篇文章中,小编已经为大家详细介绍了量子逻辑门部分,接下来我们将为你继续介绍新的内容——量子线路


量子线路


量子线路,即对量子比特进行操作的线路,它由量子逻辑门组成。

不同于传统电路是用金属线所连接以传递电压讯号或电流讯号。在量子线路中,线路是由时间所连接,亦即量子比特的状态随着时间自然演化,过程中按照哈密顿运算符指示,一直到遇上逻辑门而被操作。

由于组成量子线路的每一个量子逻辑门都是一个酉矩阵,所以整个量子线路也是一个大的酉矩阵。


量子算法线路图


在目前的量子计算理论研究中,各种量子算法常用量子线路表示,比如下方列出的量子算法中的HHL算法量子线路图。


接口介绍


在QPanda 2中,QCircuit类是一个仅装载量子逻辑门的容器类型,它也是QNode中的一种,初始化一个QCircuit对象有以下两种:

C++风格

QCircuit cir = QCircuit();

C语言风格

QCircuit cir = CreateEmptyCircuit();

你可以通过如下方式向QCircuit尾部填充节点。

QCircuit << QNode;

或者

QCircuit.pushBackNode(QNode);

QNode的类型有QGate、QPorg、QIf、Measure等等,但对于QCircuit而言,仅能插入QGate类型和QCircuit。所以QCircuit类是一个QGate对象和另一些QCircuit对象的集合。

同时,你也可对目标线路施加转置共轭和受控操作。QCircuit类型有两个成员函数可以做转置共轭操作:dagger、setDagger。

setDagger的作用是根据输入参数更新当前量子线路的dagger标记,在计算时后端会根据dagger判断当前量子逻辑门是否需要执行转置共轭操作。举个例子:

QCircuit cir;cir.setDagger(true);

该函数需要一个布尔类型参数,用来设置当前逻辑门是否需要转置共轭操作。

dagger的作用是复制一份当前的量子线路,并更新复制量子线路的dagger标记。举个例子:

QCircuit cir;QCircuit cir_dagger = cir.dagger();

除了转置共轭操作,你也可以为量子线路添加控制比特。QCircuit类型有两个成员函数用于添加控制比特:control、setControl。

setControl的作用是给当前的量子线路添加控制比特。例如:

QCircuit cir;cir.setControl(qvec);

control的作用是复制当前的量子线路,并给复制的量子线路添加控制比特。例如:

QCircuit cir;QCircuit cir_control = cir.control(qvec);

上述都需要接收一个参数,参数类型为QVec,QVec是qubit的vector容器类型。

注解

向QCircuit中插入QPorg,QIf,Measure不会报错,但运行过程中可能会产生预料之外的错误。

一个构建好的QCircuit不能直接参与量子计算与模拟,需要进一步构建成QProg类型。


实例


以下实例,主要展现了QCircuit类型接口的使用方式。

1、初始化虚拟机环境使用init接口初始化一个量子虚拟机,向量子虚拟机申请4个量子比特和4个经典寄存器;

2、构建量子线路调用CreateEmptyCircuit构建一个量子线路circuit,通过 << 操作符把量子逻辑门插入到circuit中,设置circuit的转置共轭操作为true。

3、构建量子程序调用CreateEmptyQProg接口构建一个量子程序prog,通过 << 操作符把circuit和量子逻辑门插入到prog;

4、运行量子程序调用runWithConfiguration测量运行接口,让量子程序运行1000遍,量子程序运行完后,就可以得到计算结果了。

运行结果:

0000, 5101000, 490

★以上即为QPanda 2量子线路的详细内容介绍。

★感兴趣的欢迎加入"QPanda 2开发交流群"。(关注“本源量子”公众号,回复“加群”,联系小编即可)

★PC端学习量子计算请登录learn-quantum.com  

★掌上学习请下载"本源溯知APP"

★如有疑问可上量子互动论坛,与我们的大神进行交流讨论。


往期精彩回顾

嗨玩本源QPanda 2,从量子逻辑门实例开始学起!

本源QPanda全装备教你量子软件编程

QPanda更新带来4种量子虚拟机+2种开发工具

【新品】国内首款量子软件开发包QPanda 2.0 升级发布!

Origin Q发布国内首款量子软件开发包Q-Panda

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存