本源量子-pyQpanda
量子比特门
①单量子比特无角度
不含角度的门,以H门为例,它的统一获得方式为:
h = H(qubits[0])
参数为目标比特,返回值为量子逻辑门。类似的,把H可以换成I(单位矩阵)、X(X门)、Y(Y门)、Z(Z门)、T(T门)、S(S门)等等。
②单量子比特有角度
单门带有一个旋转角的门,如RX门:
rx=RX(qubits[0],np.pi/3) #import numpy as np
第一个参数为目标比特,第二个参数为旋转角度,返回值为量子逻辑门。类似的还有RY、RZ以及U1。
③多量子比特无角度
两比特量子逻辑门与单比特量子逻辑门相似,需要传入比特。以CNOT门为例:
cnot=CNOT(qubits[0],qubits[1])
其中第一个参数为控制比特,第二个参数为目标比特。且两个比特不能相同。类似的还有CZ、SWAP、iSWAP以及sqiSWAP。
同理,对Toffoli门,前两个参数为控制比特,第三个为目标比特:
toffoli = Toffoli(qubits[0], qubits[1], qubits[2])
④多量子比特有角度
我们以CR为例:
cr = CR(qubits[0], qubits[1], np.pi) #import numpy as np
参考来源:https://blog.csdn.net/m0_69299019/article/details/128691308
QCircuit
量子线路,也称量子逻辑电路是最常用的通用量子计算模型,表示在抽象概念下,对于量子比特进行操作的线路。组成包括了量子比特、以及各种逻辑门,最后常需要量子测量将结果读取出来。当然了最重要的一点我觉得还是时间线。在不同的时间完成相同的事情,效果往往有很大的差别,这一点大家应该都能理解,毕竟先做饭才能后吃饭,要是先吃饭后做饭,我想到了一种可能性:这人在减肥,先喝了一顿西北风,然后做饭当成宠物饲料。
不同于传统电路是用金属线所连接以传递电压讯号或电流讯号,在量子线路中,线路是由时间所连接,亦即量子比特的状态随着时间自然演化,过程中是按照哈密顿运算符的指示,一直到遇上逻辑门而被操作。
它的代码初始化方式为:
circuit = QCircuit()
大家可以通过如下方式向QCircuit尾部填充节点,pyqpanda重载了 << 运算符作为插入量子线路的方法。例如:
circuit << H(qubits[0]) \
<< CNOT(qubits[0], qubits[1])
2、QProg
QProg是量子编程的一个容器类,是一个量子程序的最高单位。它可以完全代替QCircuit放入各种各样的量子门。初始化一个QProg对象有以下两种:
prog = QProg()
#或者
prog = create_empty_qprog()
而最后对量子线路进行测量操作的代码如下:
prog << circuit << Measure(qubits[0], cbits[0])
对程序运行多少次得出结果的代码如下:
#以1000次为例
result = qvm.run_with_configuration(prog, cbits, 1000)
print(result)