paddle_quantum.gate.multi_qubit_gate

多量子比特门的类的功能实现。

class CNOT(qubits_idx='cycle', num_qubits=None, depth=1)

基类:paddle_quantum.gate.base.Gate

CNOT 门。

对于两量子比特的量子电路,当 qubits_idx[0, 1] 时,其矩阵形式为:

\[\begin{split}\begin{align} CNOT &=|0\rangle \langle 0|\otimes I + |1 \rangle \langle 1|\otimes X\\ &= \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \end{bmatrix} \end{align}\end{split}\]
参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

class CX(qubits_idx='cycle', num_qubits=None, depth=1)

基类:paddle_quantum.gate.base.Gate

同 CNOT。

参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

class CY(qubits_idx='cycle', num_qubits=None, depth=1)

基类:paddle_quantum.gate.base.Gate

受控 Y 门。

对于两量子比特的量子电路,当 qubits_idx[0, 1] 时,其矩阵形式为:

\[\begin{split}\begin{align} CY &=|0\rangle \langle 0|\otimes I + |1 \rangle \langle 1|\otimes Y\\ &= \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & -i \\ 0 & 0 & i & 0 \end{bmatrix} \end{align}\end{split}\]
参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

class CZ(qubits_idx='cycle', num_qubits=None, depth=1)

基类:paddle_quantum.gate.base.Gate

受控 Z 门。

对于两量子比特的量子电路,当 qubits_idx[0, 1] 时,其矩阵形式为:

\[\begin{split}\begin{align} CZ &=|0\rangle \langle 0|\otimes I + |1 \rangle \langle 1|\otimes Z\\ &= \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & -1 \end{bmatrix} \end{align}\end{split}\]
参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

class SWAP(qubits_idx='cycle', num_qubits=None, depth=1)

基类:paddle_quantum.gate.base.Gate

SWAP 门。

其矩阵形式为:

\[\begin{split}\begin{align} SWAP = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} \end{align}\end{split}\]
参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

class CP(qubits_idx='cycle', num_qubits=None, depth=1, param=None, param_sharing=False)

基类:paddle_quantum.gate.base.ParamGate

受控 P 门。

对于两量子比特的量子电路,当 qubits_idx[0, 1] 时,其矩阵形式为:

\[\begin{split}\begin{align} CP = \begin{bmatrix} 1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0 & 1 & 0\\ 0 & 0 & 0 & e^{i\theta} \end{bmatrix} \end{align}\end{split}\]
参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

  • param (Union[paddle.Tensor, float], optional) – 量子门参数,默认为 None

  • param_sharing (bool, optional) – 同一层中的量子门是否共享参数,默认为 False

抛出:

ValueErrorparam 须为 paddle.Tensorfloat

class CRX(qubits_idx='cycle', num_qubits=None, depth=1, param=None, param_sharing=False)

基类:paddle_quantum.gate.base.ParamGate

关于 x 轴的受控单量子比特旋转门。

对于两量子比特的量子电路,当 qubits_idx[0, 1] 时,其矩阵形式为:

\[\begin{split}\begin{align} CR_X &=|0\rangle \langle 0|\otimes I + |1 \rangle \langle 1|\otimes R_X\\ &= \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & \cos\frac{\theta}{2} & -i\sin\frac{\theta}{2} \\ 0 & 0 & -i\sin\frac{\theta}{2} & \cos\frac{\theta}{2} \end{bmatrix} \end{align}\end{split}\]
参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

  • param (Union[paddle.Tensor, float], optional) – 量子门参数,默认为 None

  • param_sharing (bool, optional) – 同一层中的量子门是否共享参数,默认为 False

抛出:

ValueErrorparam 须为 paddle.Tensorfloat

class CRY(qubits_idx='cycle', num_qubits=None, depth=1, param=None, param_sharing=False)

基类:paddle_quantum.gate.base.ParamGate

关于 y 轴的受控单量子比特旋转门。

对于两量子比特的量子电路,当 qubits_idx[0, 1] 时,其矩阵形式为:

\[\begin{split}\begin{align} CR_Y &=|0\rangle \langle 0|\otimes I + |1 \rangle \langle 1|\otimes R_Y\\ &= \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & \cos\frac{\theta}{2} & -\sin\frac{\theta}{2} \\ 0 & 0 & \sin\frac{\theta}{2} & \cos\frac{\theta}{2} \end{bmatrix} \end{align}\end{split}\]
参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

  • param (Union[paddle.Tensor, float], optional) – 量子门参数,默认为 None

  • param_sharing (bool, optional) – 同一层中的量子门是否共享参数,默认为 False

抛出:

ValueErrorparam 须为 paddle.Tensorfloat

class CRZ(qubits_idx='cycle', num_qubits=None, depth=1, param=None, param_sharing=False)

基类:paddle_quantum.gate.base.ParamGate

关于 z 轴的受控单量子比特旋转门。

对于两量子比特的量子电路,当 qubits_idx[0, 1] 时,其矩阵形式为:

\[\begin{split}\begin{align} CR_Z &=|0\rangle \langle 0|\otimes I + |1 \rangle \langle 1|\otimes R_Z\\ &= \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & e^{i\theta} \end{bmatrix} \end{align}\end{split}\]
参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

  • param (Union[paddle.Tensor, float], optional) – 量子门参数,默认为 None

  • param_sharing (bool, optional) – 同一层中的量子门是否共享参数,默认为 False

抛出:

ValueErrorparam 须为 paddle.Tensorfloat

class CU(qubits_idx='cycle', num_qubits=None, depth=1, param=None, param_sharing=False)

基类:paddle_quantum.gate.base.ParamGate

受控单量子比特旋转门。

对于两量子比特的量子电路,当 qubits_idx[0, 1] 时,其矩阵形式为:

\[\begin{split}\begin{align} CU &= \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & \cos\frac\theta2 &-e^{i\lambda}\sin\frac\theta2 \\ 0 & 0 & e^{i\phi}\sin\frac\theta2&e^{i(\phi+\lambda)}\cos\frac\theta2 \end{bmatrix} \end{align}\end{split}\]
参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

  • param (Union[paddle.Tensor, float], optional) – 量子门参数,默认为 None

  • param_sharing (bool, optional) – 同一层中的量子门是否共享参数,默认为 False

抛出:

ValueErrorparam 须为 paddle.Tensorfloat

class RXX(qubits_idx='cycle', num_qubits=None, depth=1, param=None, param_sharing=False)

基类:paddle_quantum.gate.base.ParamGate

RXX 门。

其矩阵形式为:

\[\begin{split}\begin{align} RXX(\theta) = \begin{bmatrix} \cos\frac{\theta}{2} & 0 & 0 & -i\sin\frac{\theta}{2} \\ 0 & \cos\frac{\theta}{2} & -i\sin\frac{\theta}{2} & 0 \\ 0 & -i\sin\frac{\theta}{2} & \cos\frac{\theta}{2} & 0 \\ -i\sin\frac{\theta}{2} & 0 & 0 & \cos\frac{\theta}{2} \end{bmatrix} \end{align}\end{split}\]
参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

  • param (Union[paddle.Tensor, float], optional) – 量子门参数,默认为 None

  • param_sharing (bool, optional) – 同一层中的量子门是否共享参数,默认为 False

抛出:

ValueErrorparam 须为 paddle.Tensorfloat

class RYY(qubits_idx='cycle', num_qubits=None, depth=1, param=None, param_sharing=False)

基类:paddle_quantum.gate.base.ParamGate

RYY 门。

其矩阵形式为:

\[\begin{split}\begin{align} RYY(\theta) = \begin{bmatrix} \cos\frac{\theta}{2} & 0 & 0 & i\sin\frac{\theta}{2} \\ 0 & \cos\frac{\theta}{2} & -i\sin\frac{\theta}{2} & 0 \\ 0 & -i\sin\frac{\theta}{2} & \cos\frac{\theta}{2} & 0 \\ i\sin\frac{\theta}{2} & 0 & 0 & cos\frac{\theta}{2} \end{bmatrix} \end{align}\end{split}\]
参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

  • param (Union[paddle.Tensor, float], optional) – 量子门参数,默认为 None

  • param_sharing (bool, optional) – 同一层中的量子门是否共享参数,默认为 False

抛出:

ValueErrorparam 须为 paddle.Tensorfloat

class RZZ(qubits_idx='cycle', num_qubits=None, depth=1, param=None, param_sharing=False)

基类:paddle_quantum.gate.base.ParamGate

RZZ 门。

其矩阵形式为:

\[\begin{split}\begin{align} RZZ(\theta) = \begin{bmatrix} e^{-i\frac{\theta}{2}} & 0 & 0 & 0 \\ 0 & e^{i\frac{\theta}{2}} & 0 & 0 \\ 0 & 0 & e^{i\frac{\theta}{2}} & 0 \\ 0 & 0 & 0 & e^{-i\frac{\theta}{2}} \end{bmatrix} \end{align}\end{split}\]
参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

  • param (Union[paddle.Tensor, float], optional) – 量子门参数,默认为 None

  • param_sharing (bool, optional) – 同一层中的量子门是否共享参数,默认为 False

抛出:

ValueErrorparam 须为 paddle.Tensorfloat

class MS(qubits_idx='cycle', num_qubits=None, depth=1)

基类:paddle_quantum.gate.base.Gate

用于离子阱设备的 Mølmer-Sørensen (MS) 门。

其矩阵形式为:

\[\begin{split}\begin{align} MS = RXX(-\frac{\pi}{2}) = \frac{1}{\sqrt{2}} \begin{bmatrix} 1 & 0 & 0 & i \\ 0 & 1 & i & 0 \\ 0 & i & 1 & 0 \\ i & 0 & 0 & 1 \end{bmatrix} \end{align}\end{split}\]
参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

class CSWAP(qubits_idx='cycle', num_qubits=None, depth=1)

基类:paddle_quantum.gate.base.Gate

CSWAP (Fredkin) 门。

其矩阵形式为:

\[\begin{split}\begin{align} CSWAP = \begin{bmatrix} 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 \end{bmatrix} \end{align}\end{split}\]
参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

class Toffoli(qubits_idx='cycle', num_qubits=None, depth=1)

基类:paddle_quantum.gate.base.Gate

Toffoli 门。

其矩阵形式为:

\[\begin{split}\begin{align} Toffoli = \begin{bmatrix} 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 \\ 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 \end{bmatrix} \end{align}\end{split}\]
参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

class UniversalTwoQubits(qubits_idx='cycle', num_qubits=None, depth=1, param=None, param_sharing=False)

基类:paddle_quantum.gate.base.ParamGate

两量子比特通用门,该通用门需要 15 个参数。

参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

  • param (Union[paddle.Tensor, float], optional) – 量子门参数,默认为 None

  • param_sharing (bool, optional) – 同一层中的量子门是否共享参数,默认为 False

抛出:

ValueErrorparam 须为 paddle.Tensorfloat

class UniversalThreeQubits(qubits_idx='cycle', num_qubits=None, depth=1, param=None, param_sharing=False)

基类:paddle_quantum.gate.base.ParamGate

三量子比特通用门,该通用门需要 81 个参数。

参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

  • param (Union[paddle.Tensor, float], optional) – 量子门参数,默认为 None

  • param_sharing (bool, optional) – 同一层中的量子门是否共享参数,默认为 False

抛出:

ValueErrorparam 须为 paddle.Tensorfloat