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
。
- 抛出:
ValueError –
param
须为paddle.Tensor
或float
。
- 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
。
- 抛出:
ValueError –
param
须为paddle.Tensor
或float
。
- 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
。
- 抛出:
ValueError –
param
须为paddle.Tensor
或float
。
- 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
。
- 抛出:
ValueError –
param
须为paddle.Tensor
或float
。
- 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
。
- 抛出:
ValueError –
param
须为paddle.Tensor
或float
。
- 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
。
- 抛出:
ValueError –
param
须为paddle.Tensor
或float
。
- 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
。
- 抛出:
ValueError –
param
须为paddle.Tensor
或float
。
- 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
。
- 抛出:
ValueError –
param
须为paddle.Tensor
或float
。
- 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
。
- 抛出:
ValueError –
param
须为paddle.Tensor
或float
。
- 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
。
- 抛出:
ValueError –
param
须为paddle.Tensor
或float
。