QPanda3
Supported by OriginQ
载入中...
搜索中...
未找到
量子门

上一章: QPanda3 教程

下一章: 量子线路与量子程序

量子逻辑门

在经典计算中,最基本的单位是比特(bit),而最基本的控制单元是逻辑门。我们可以通过逻辑门的组合来控制线路。同样,我们操纵量子比特(qubit)的方式是通过量子逻辑门。通过使用量子逻辑门,我们可以有意识地引导量子态的演化。因此,量子逻辑门构成了量子算法的基础。

量子逻辑门由幺正矩阵(unitary matrix)表示。最常见的量子门通常作用于一个或两个量子比特,就像常见的经典逻辑门作用于一个或两个比特一样。

矩阵形式的常见量子逻辑门

量子门 名称 矩阵
I I

\[\begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}\]

H Hadamard

\[\begin{bmatrix} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \end{bmatrix}\]

T T

\[\begin{bmatrix} 1 & 0 \\ 0 & \exp\left(\frac{i\pi}{4}\right) \end{bmatrix}\]

S S

\[\begin{bmatrix} 1 & 0 \\ 0 & i \end{bmatrix}\]

X Pauli-X

\[\begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix}\]

Y Pauli-Y

\[\begin{bmatrix} 0 & -i \\ i & 0 \end{bmatrix}\]

Z Pauli-Z

\[\begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix}\]

X1 X1

\[\begin{bmatrix} \frac{1}{\sqrt{2}} & -\frac{i}{\sqrt{2}} \\ -\frac{i}{\sqrt{2}} & \frac{1}{\sqrt{2}} \end{bmatrix}\]

Y1 Y1

\[\begin{bmatrix} \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \end{bmatrix}\]

Z1 Z1

\[\begin{bmatrix} \exp\left(-\frac{i\pi}{4}\right) & 0 \\ 0 & \exp\left(\frac{i\pi}{4}\right) \end{bmatrix}\]

RX RX

\[\begin{bmatrix} \cos\left(\frac{\theta}{2}\right) & -i\sin\left(\frac{\theta}{2}\right) \\ -i\sin\left(\frac{\theta}{2}\right) & \cos\left(\frac{\theta}{2}\right) \end{bmatrix}\]

RY RY

\[\begin{bmatrix} \cos\left(\frac{\theta}{2}\right) & -\sin\left(\frac{\theta}{2}\right) \\ \sin\left(\frac{\theta}{2}\right) & \cos\left(\frac{\theta}{2}\right) \end{bmatrix}\]

RZ RZ

\[\begin{bmatrix} \exp\left(-\frac{i\theta}{2}\right) & 0 \\ 0 & \exp\left(\frac{i\theta}{2}\right) \end{bmatrix}\]

U1 U1

\[\begin{bmatrix} 1 & 0 \\ 0 & \exp(i\theta) \end{bmatrix}\]

U2 U2

\[\begin{bmatrix} \frac{1}{\sqrt{2}} & -\frac{\exp(i\lambda)}{\sqrt{2}} \\ \frac{\exp(i\phi)}{\sqrt{2}} & \frac{\exp(i\lambda + i\phi)}{\sqrt{2}} \end{bmatrix}\]

U3 U3

\[\begin{bmatrix} \cos\left(\frac{\theta}{2}\right) & -\exp(i\lambda)\sin\left(\frac{\theta}{2}\right) \\ \exp(i\phi)\sin\left(\frac{\theta}{2}\right) & \exp(i\lambda + i\phi)\cos\left(\frac{\theta}{2}\right) \end{bmatrix}\]

U4 U4

\[\begin{bmatrix} u_0 & u_1 \\ u_2 & u_3 \end{bmatrix}\]

多比特量子门

Gate Name Matrix
CNOT CNOT

\[\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \end{bmatrix}\]

CR CR

\[\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & \exp(i\theta) \end{bmatrix}\]

iSWAP iSWAP

\[\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & \cos(\theta) & i\sin(\theta) & 0 \\ 0 & i\sin(\theta) & \cos(\theta) & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix}\]

SWAP SWAP

\[\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix}\]

CZ CZ

\[\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & -1 \end{bmatrix}\]

CU CU

\[\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & u_0 & u_1 \\ 0 & 0 & u_2 & u_3 \end{bmatrix}\]

RXX RXX

\[\begin{bmatrix} \cos(\theta/2) & 0 & 0 & -i\sin(\theta/2) \\ 0 & \cos(\theta/2) & -i\sin(\theta/2) & 0 \\ 0 & -i\sin(\theta/2) & \cos(\theta/2) & 0 \\ -i\sin(\theta/2) & 0 & 0 & \cos(\theta/2) \end{bmatrix}\]

RYY RYY

\[\begin{bmatrix} \cos(\theta/2) & 0 & 0 & i\sin(\theta/2) \\ 0 & \cos(\theta/2) & -i\sin(\theta/2) & 0 \\ 0 & -i\sin(\theta/2) & \cos(\theta/2) & 0 \\ i\sin(\theta/2) & 0 & 0 & \cos(\theta/2) \end{bmatrix}\]

RZZ RZZ

\[\begin{bmatrix} \exp(-i\theta/2) & 0 & 0 & 0 \\ 0 & \exp(i\theta/2) & 0 & 0 \\ 0 & 0 & \exp(i\theta/2) & 0 \\ 0 & 0 & 0 & \exp(-i\theta/2) \end{bmatrix}\]

RZX RZX

\[\begin{bmatrix} \cos(\theta/2) & 0 & -i\sin(\theta/2) & 0 \\ 0 & \cos(\theta/2) & 0 & i\sin(\theta/2) \\ -i\sin(\theta/2) & 0 & \cos(\theta/2) & 0 \\ 0 & i\sin(\theta/2) & 0 & \cos(\theta/2) \end{bmatrix}\]

Toffoli 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}\]

API 介绍

QPanda3 将所有量子逻辑门封装为 API 供用户调用,返回类型为 QGate。例如,如果你想使用 Hadamard 门,可以这样获取:

正如你所见,H 函数仅接收一个量子比特。同样,如果你想使用 RX 门,可以这样获取:

如上所示,RX 函数接受两个参数:第一个是目标量子比特,第二个是旋转角度。RY 和 RZ 门的使用方式相同。

双比特量子逻辑门的使用方式与单比特门类似,但输入参数有所不同。例如,使用 CNOT 门:

CNOT 函数接受两个参数:第一个是控制比特,第二个是目标比特。

接口概览

在本节中,我们将介绍所有与 QGate 相关的接口。首先,我们需要知道如何导入 QGate 类:

量子比特查询

  • 获取比特数量

    使用 qubits_num 函数获取该门作用的量子比特数。示例如下所示:

  • 获取所有比特

    使用 qubits 函数获取该门作用的所有量子比特。示例如下所示:

  • 获取控制比特

    使用 control_qubits 获取该门的控制比特。示例如下所示:

  • 获取目标比特

    使用 target_qubits 获取该门的目标比特。示例如下所示:

门的属性

  • 共轭转置操作(Dagger)

    正如本章开始时提到的,所有量子逻辑门都是酉矩阵,且您也可以对量子逻辑门执行共轭转置操作。

    QGate 类型目前提供了一个成员函数用于执行共轭转置操作:daggerdagger 函数会创建当前量子逻辑门的副本,并更新复制门的 dagger 标志。示例如下所示:

  • 幂运算(Gate Power)

    使用 power 计算该门的幂次。示例如下所示:

  • 控制操作(Control Operation)

    除了共轭转置操作,您还可以向量子逻辑门添加控制量子比特。

    在添加控制量子比特后,当前量子逻辑门是否执行取决于控制量子比特的量子态。如果控制量子比特的状态是 \(|1\rangle\),则当前量子逻辑门可以执行;如果状态是 \(|0\rangle\),则该门将不会执行。

    QGate 类型目前提供了一个成员函数用于添加控制量子比特:controlcontrol 函数会创建当前量子逻辑门的副本,并将控制量子比特设置到复制的门上。示例如下所示:

  • 清除控制比特

    使用 clear_control 清除控制比特。示例如下所示:

矩阵操作

  • 获取矩阵表示

    使用 matrix 获取矩阵形式。

    注解

    扩展参数的含义是矩阵是否基于量子比特的顺序获得。例如,当参数为False 时,CNOT(1,0) 的矩阵与 CNOT(0,1) 的矩阵是等价的。

    示例如下所示:

门类型和参数

  • 获取门类型

    使用 gate_type 函数来获取门类型。示例如下所示:

  • 获取和设置参数

    使用 parameters 函数来获取门的参数。使用 set_parameters 函数来设置门的参数。示例如下所示:

  • 获取门名称

    使用 name 函数来获取门的名称。示例如下所示: