mindquantum.core.gates.BasicGate

查看源文件
class mindquantum.core.gates.BasicGate(name, n_qubits, obj_qubits=None, ctrl_qubits=None)[源代码]

BasicGate是所有门的基类。

参数:
  • name (str) - 此门的名称。

  • n_qubits (int) - 这个门有多少个量子比特。

  • obj_qubits (int, list[int]) - 具体门作用在哪个量子比特上。

  • ctrl_qubits (int, list[int]) - 指定控制量子比特。默认值: None

property acted

检查此门是否已经作用在量子比特上。

define_projectq_gate()[源代码]

定义对应的 projectq 中的量子门。

abstract get_cpp_obj()[源代码]

获取底层c++对象。

hermitian()[源代码]

返回该量子门的厄米共轭形式。

matrix(*args)[源代码]

门的矩阵。

no_grad()[源代码]

设置该量子门在梯度计算相关算法中不计算梯度。

on(obj_qubits, ctrl_qubits=None)[源代码]

定义门作用于哪个量子比特和控制量子比特。

说明

在此框架中,首先指定门作用的量子比特,即使对于控制门,例如CNOT,第二个参数是控制量子比特。

参数:
  • obj_qubits (int, list[int]) - 指定门作用在哪个量子比特上。

  • ctrl_qubits (int, list[int]) - 指定控制量子比特。默认值: None

返回:

返回一个新的门。

样例:

>>> from mindquantum.core.gates import X
>>> x = X.on(1)
>>> x.obj_qubits
[1]
>>> x.ctrl_qubits
[]
>>> x = X.on(2, [0, 1])
>>> x.ctrl_qubits
[0, 1]
property parameterized

检查此门是否为参数化门。

requires_grad()[源代码]

设置该量子门在梯度计算相关算法中要计算梯度。在默认情况下,参数化量子门在构造时就是需要计算梯度。