你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

量子线路图

本文介绍了量子线路图的相关约定。 了解视觉约定后,你会发现与效果相同的书面矩阵表述相比,在线路图中更容易理解某些量子操作。

使用 Azure Quantum,可以使用 QiskitCirq 以及 特定于提供程序的格式化线路提交量子线路。

提示

请查看 quantum-viz.js,这是一种用于呈现量子线路的可配置工具。 可以将库 quantum-viz.js (或 qviz) 集成到任何项目中。 它旨在轻松配置,同时允许复杂的用户交互,例如在不同度量结果之间切换。

量子关系图约定

在线路图中,每条实线都描述一个量子比特,更常见地是描述一个量子比特寄存器。 按照约定,最上面那根线是量子比特寄存器 $0$,其余的按顺序标记。

操作由量子门表示。 术语“量子门”类似于经典逻辑门。 作用于一个或多个量子比特寄存器的门用一个框表示。 例如,符号

作用于单量子比特寄存器的 Hadamard 运算的符号。

是作用于一个包含单量子比特的寄存器的 Hadamard 操作。

在量子线路中,时间按从左到右的顺序流动。 量子门按时间顺序排列,最左侧的门是应用于量子比特的第一个门。 也就是说,如果你将线描述为包含量子态,那么这些线将按图中从左到右的顺序带着量子态通过每个门。 也就是说,量子线路的动作

量子电路中从左到右应用的量子门图。

是酉矩阵 $CBA$。

注意

矩阵乘法遵守相反的约定,即最先应用最右侧的矩阵。 不过,在量子线路图中,最先应用的是最左侧的门。 这种差异有时可能会导致混淆,因此有必要记下线性代数表示法和量子关系图之间的这一明显差异。

示例:酉变换

考虑酉变换 $\text{ CNOT}_{01}(H\otimes 1)$。 这种门序列对量子计算来说至关重要,因为它会创建一个最大纠缠的双量子比特态:

$\mathrm{CNOT}_{01} (H\otimes 1) \left=\ket{00}\frac{1}{\sqrt{2}} ({00}\ket{+ \ket{11}\right) ,$

在量子算法和量子纠错中,普遍存在这种复杂程度或更复杂的操作。

显示准备这种最大纠缠的量子态的线路图为:

最大纠缠双量子比特状态的线路图。

Hadamard 门后面的符号表示 CNOT 门,其中黑色圆圈表示控制量子比特,圆圈内的十字表示 target 量子比特。 此量子线路作用于两个量子比特(或等效为作用于两个寄存器,每个寄存器由一个量子比特组成)。

量子线路的输入和输出

在前面的示例中,输入到一个量子门的线(量子比特)数量与从该量子门中输出的线数完全相同。 这乍一看可能很合理,通常量子线路的输出可能比输入要多或者要少。 但这是不可能的,因为量子操作(测量除外)是酉操作,因此是可逆的。 如果它们的输出数量与输入数量不相等,则不会是可逆的,因此不是酉操作,这就出现了矛盾。 因此,对于线路图中绘制的任何框,进入该框的线数和离开该框的线数必须完全相等。

多量子比特线路图遵守与单量子比特线路图类似的约定。 作为澄清的示例,一个双量子位酉运算 $B$ 可以定义为$(H S\otimes X)$,因此等效量子线路为:

双量子比特酉运算的线路图。

根据使用线路的场景,我们还可将 $B$ 看作是操作一个双量子比特寄存器,而不是操作两个单量子比特寄存器。

或许这类抽象线路图最有用的性质是,可通过它们大致描述复杂的量子算法,而不必细致编制到描绘出基础的量子门。 这意味着你可直观地查看大型量子算法的数据流,无需理解有关算法中每个子例程如何工作的所有细节。

受控门

量子单控门的操作表示为 $\Lambda(G)$,其中单个量子比特的值控制 $G$ 的应用,可以通过查看以下乘积态输入示例来理解:

$\Lambda(G) (\alpha\ket{{0} + \beta\ket{1}) \ket{\psi}=\alpha\ket{{0}\ket{\psi} + \beta\ket{{1} G\ket{\psi}$

也就是说,受控门将 $G$ 应用于包含 $\psi$ 的寄存器(当且仅当控制量子位取值 $1$ 时)。 通常,量子线路图中将这种受控操作描述为

单独控制门的线路图。

在这里,黑色圆圈表示门受控的量子位,垂直线表示当控制量子比特采用值 $1$ 时应用的酉操作。 对于 G X$ 和 $G==Z$ 的特殊情况$,以下表示法用于描述门的受控版本 (请注意,受控 X 门是 CNOT 门) :

受控门的特殊情况的线路图。

Q# 提供了方法来自动生成操作的受控版本,这让程序员不必再手动编码这些操作。 下面是它的一个示例:

operation PrepareSuperposition(qubit : Qubit) : Unit
is Ctl { // Auto-generate the controlled specialization of the operation
    H(qubit);
}

测量运算符

在线路图中直观呈现的剩余操作是测量。 测量采用量子比特寄存器、对其进行测量,然后以经典信息的形式输出结果。

测量操作由计量符号表示,它始终将输入看做是一个量子比特寄存器(表示为实线),将输出看做是经典信息(表示为双线)。 具体来说,这种子线路如下所示:

表示度量操作的符号。

Q# 实现了一个测量运算符用于此目的。

同样地,子线路

表示受控操作的线路图。

提供一个经典的受控门,其中 $G$ 有条件地应用于采用值 $1$ 的经典受控位。

隐形传态线路图

量子隐形传态可能是说明这些组成部分的最佳量子算法。

量子隐形传态是一种通过使用纠缠和测量在量子计算机之间(或者甚至在一个量子网络中不同的量子计算机之间)移动数据的方法。 有趣的是,它实际上可将量子态(比如给定量子比特中的值)从一个量子比特移动到另一个量子比特,即使不知道量子比特的值是什么也能做到。 这是协议根据量子力学定律工作所必需的。

下面显示了量子隐形传态线路,并提供了一个带注释的线路版本来说明如何阅读量子线路。

量子传送线路示意图。

后续步骤