Skip to content

变分门 — VQGate

用于变分量子线路(VQA, Variational Quantum Algorithms)的参数化(变分)门变体的 API 参考。这些门与标准门的不同之处在于,其旋转参数是对 Parameter 矢量的符号引用,而非固定的数值。

VQGate

变分量子门的基类。VQGate 对象由变分门工厂函数创建,可以追加到 VQCircuit

签名

python
class VQGate

VQGate 实例持有门类型和对 Parameter 矢量中可变参数位置的引用。在线路执行时,通过 VQCircuit.__call__() 绑定具体值。

变分门工厂函数

每个函数返回一个 VQGate(即 VariationalQuantumGate)。param 参数指定 Parameter 矢量中提供旋转角度的索引。

单量子比特变分门

P(变分)

python
P(qbit_idx: int, param: MutableParamType) -> VQGate
参数类型说明
qbit_idxint目标量子比特索引
paramMutableParamTypeParameter 矢量中的索引

返回变分 P 门。

RX(变分)

python
RX(qbit_idx: int, param: MutableParamType) -> VQGate

返回变分 RX 门。

RY(变分)

python
RY(qbit_idx: int, param: MutableParamType) -> VQGate

返回变分 RY 门。

RZ(变分)

python
RZ(qbit_idx: int, param: MutableParamType) -> VQGate

返回变分 RZ 门。

U1(变分)

python
U1(qbit_idx: int, param: MutableParamType) -> VQGate

返回变分 U1 门。

IDLE(变分)

python
IDLE(qbit_idx: int, param: MutableParamType) -> VQGate

返回变分 IDLE 门。

双参数变分门

U2(变分,重载 1)

python
U2(qbit_idx: int, param1: MutableParamType, param2: Union[float, MutableParamType]) -> VQGate
参数类型说明
qbit_idxint目标量子比特索引
param1MutableParamType第一个角度的可变参数索引
param2Union[float, MutableParamType]第二个角度的固定值或可变参数索引

U2(变分,重载 2)

python
U2(qbit_idx: int, param1: float, param2: MutableParamType) -> VQGate
参数类型说明
qbit_idxint目标量子比特索引
param1float第一个角度的固定值
param2MutableParamType第二个角度的可变参数索引

RPhi(变分,重载 1)

python
RPhi(qbit_idx: int, param1: MutableParamType, param2: Union[float, MutableParamType]) -> VQGate
参数类型说明
qbit_idxint目标量子比特索引
param1MutableParamTypetheta 的可变参数索引
param2Union[float, MutableParamType]phi 的固定值或可变参数索引

RPhi(变分,重载 2)

python
RPhi(qbit_idx: int, param1: float, param2: MutableParamType) -> VQGate
参数类型说明
qbit_idxint目标量子比特索引
param1floattheta 的固定值
param2MutableParamTypephi 的可变参数索引

三参数变分门

U3(变分,重载 1)

python
U3(qbit_idx: int, param1: MutableParamType, param2: Union[float, MutableParamType], param3: Union[float, MutableParamType]) -> VQGate
参数类型说明
qbit_idxint目标量子比特索引
param1MutableParamType第一个角度的可变参数索引
param2Union[float, MutableParamType]第二个角度的固定值或可变参数索引
param3Union[float, MutableParamType]第三个角度的固定值或可变参数索引

U3(变分,重载 2)

python
U3(qbit_idx: int, param1: float, param2: MutableParamType, param3: Union[float, MutableParamType]) -> VQGate
参数类型说明
qbit_idxint目标量子比特索引
param1float第一个角度的固定值
param2MutableParamType第二个角度的可变参数索引
param3Union[float, MutableParamType]第三个角度的固定值或可变参数索引

U3(变分,重载 3)

python
U3(qbit_idx: int, param1: float, param2: float, param3: MutableParamType) -> VQGate
参数类型说明
qbit_idxint目标量子比特索引
param1float第一个角度的固定值
param2float第二个角度的固定值
param3MutableParamType第三个角度的可变参数索引

四参数变分门

U4(变分,重载 1)

python
U4(qbit_idx: int, param1: MutableParamType, param2: Union[float, MutableParamType], param3: Union[float, MutableParamType], param4: Union[float, MutableParamType]) -> VQGate
参数类型说明
qbit_idxint目标量子比特索引
param1MutableParamType第一个角度的可变参数索引
param2Union[float, MutableParamType]第二个角度的固定值或可变参数索引
param3Union[float, MutableParamType]第三个角度的固定值或可变参数索引
param4Union[float, MutableParamType]第四个角度的固定值或可变参数索引

U4(变分,重载 2)

python
U4(qbit_idx: int, param1: float, param2: MutableParamType, param3: Union[float, MutableParamType], param4: Union[float, MutableParamType]) -> VQGate
参数类型说明
qbit_idxint目标量子比特索引
param1float第一个角度的固定值
param2MutableParamType第二个角度的可变参数索引
param3Union[float, MutableParamType]第三个角度的固定值或可变参数索引
param4Union[float, MutableParamType]第四个角度的固定值或可变参数索引

U4(变分,重载 3)

python
U4(qbit_idx: int, param1: float, param2: float, param3: MutableParamType, param4: Union[float, MutableParamType]) -> VQGate
参数类型说明
qbit_idxint目标量子比特索引
param1float第一个角度的固定值
param2float第二个角度的固定值
param3MutableParamType第三个角度的可变参数索引
param4Union[float, MutableParamType]第四个角度的固定值或可变参数索引

U4(变分,重载 4)

python
U4(qbit_idx: int, param1: float, param2: float, param3: float, param4: MutableParamType) -> VQGate
参数类型说明
qbit_idxint目标量子比特索引
param1float第一个角度的固定值
param2float第二个角度的固定值
param3float第三个角度的固定值
param4MutableParamType第四个角度的可变参数索引

双量子比特变分门

CU(变分,重载 1)

python
CU(control_qbit_idx: int, target_qbit_idx: int, param1: MutableParamType, param2: Union[float, MutableParamType], param3: Union[float, MutableParamType], param4: Union[float, MutableParamType]) -> VQGate
参数类型说明
control_qbit_idxint控制量子比特索引
target_qbit_idxint目标量子比特索引
param1MutableParamType第一个角度的可变参数索引
param2Union[float, MutableParamType]第二个角度的固定值或可变参数索引
param3Union[float, MutableParamType]第三个角度的固定值或可变参数索引
param4Union[float, MutableParamType]第四个角度的固定值或可变参数索引

CU(变分,重载 2-4)

其他重载遵循与 U4 相同的模式,每个重载多一个固定值。每个重载的前两个参数为 control_qbit_idxtarget_qbit_idx

CP(变分)

python
CP(control_qbit_idx: int, target_qbit_idx: int, param: MutableParamType) -> VQGate
参数类型说明
control_qbit_idxint控制量子比特索引
target_qbit_idxint目标量子比特索引
paramMutableParamType可变参数索引

CRX(变分)

python
CRX(control_qbit_idx: int, target_qbit_idx: int, param: MutableParamType) -> VQGate
参数类型说明
control_qbit_idxint控制量子比特索引
target_qbit_idxint目标量子比特索引
paramMutableParamType可变参数索引

CRY(变分)

python
CRY(control_qbit_idx: int, target_qbit_idx: int, param: MutableParamType) -> VQGate

CRZ(变分)

python
CRZ(control_qbit_idx: int, target_qbit_idx: int, param: MutableParamType) -> VQGate

CR(变分,CP 的别名)

python
CR(control_qbit_idx: int, target_qbit_idx: int, param: MutableParamType) -> VQGate

RXX(变分)

python
RXX(control_qbit_idx: int, target_qbit_idx: int, param: MutableParamType) -> VQGate

RYY(变分)

python
RYY(control_qbit_idx: int, target_qbit_idx: int, param: MutableParamType) -> VQGate

RZZ(变分)

python
RZZ(control_qbit_idx: int, target_qbit_idx: int, param: MutableParamType) -> VQGate

RZX(变分)

python
RZX(control_qbit_idx: int, target_qbit_idx: int, param: MutableParamType) -> VQGate

与 VQCircuit 配合使用

变分门是 VQCircuit 的构建块。param 参数引用 Parameter 矢量中的位置:

python
from pyqpanda3.vqcircuit import VQCircuit
from pyqpanda3.core import RX, CP

# 创建变分线路
vqc = VQCircuit()

# 创建参数占位符(返回索引位置)
p0 = vqc.Param("rx0")   # 第一个 RX 的参数
p1 = vqc.Param("rx1")   # 第二个 RX 的参数
p2 = vqc.Param("cp")    # 受控相位的参数

# 添加变分门
vqc << RX(0, p0)         # 量子比特 0 上的 RX,角度来自 p0
vqc << RX(1, p1)         # 量子比特 1 上的 RX,角度来自 p1
vqc << CP(0, 1, p2)      # 使用 p2 的受控相位
vqc << RX(0, p2)         # 量子比特 0 上的 RX,角度来自 p2

# 绑定参数并执行
import numpy as np
theta = np.array([0.5, 0.3, 0.1])
result = vqc(theta)  # 传入具体值

另见

Released under the MIT License.