paddle_quantum.gate.multi_qubit_gate
多量子比特门的类的功能实现。
- class CNOT(qubits_idx='cycle', num_qubits=None, depth=1)
基类:
paddle_quantum.gate.base.GateCNOT 门。
对于两量子比特的量子电路,当
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.GateSWAP 门。
其矩阵形式为:
\[\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.ParamGateRXX 门。
其矩阵形式为:
\[\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.ParamGateRYY 门。
其矩阵形式为:
\[\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.ParamGateRZZ 门。
其矩阵形式为:
\[\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.GateCSWAP (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.GateToffoli 门。
其矩阵形式为:
\[\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。