65.9K
CodeProject 正在变化。 阅读更多。
Home

量子计算入门 - 第二部分

starIconstarIconstarIconstarIconstarIcon

5.00/5 (12投票s)

2019年6月26日

CPOL

18分钟阅读

viewsIcon

24591

学习量子计算的基础知识。在本文中,我们将介绍如何使用量子门创建量子态。

Article header, wavy lines

$ \newcommand{\bra}[1]{\left< #1 \right|} \newcommand{\ket}[1]{\left| #1 \right>} \newcommand{\bk}[2]{\left< #1 \middle| #2 \right>} \newcommand{\bke}[3]{\left< #1 \middle| #2 \middle| #3 \right>} \newcommand{\mzero}[0]{\begin{bmatrix} 1 \\ 0 \end{bmatrix}} \newcommand{\mone}[0]{\begin{bmatrix} 0 \\ 1 \end{bmatrix}} \newcommand{\ostwo}[0]{\frac{1}{\sqrt{2}}} \newcommand{\mhadamard}[0]{\begin{bmatrix} 1 & 1 \\ 1 & -1 \end{bmatrix}} $

目录

引言

上一篇文章中,我们探讨了量子计算的基础理论。在本文中,我们将进一步深入研究量子门。这些是构建量子电路的基石。我们将探讨量子计算中常用的许多量子门,并研究如何使用其中一些量子门来创建各种量子态。

如果您还没有阅读,我建议您在继续之前先阅读本系列的第一部分

构建量子电路

在量子计算中,算法被实现为一个量子电路,该电路包含输入和输出量子比特,以及改变量子比特量子态的量子门。参见图1。

有一类单量子比特门和多量子比特门。当对量子比特进行测量时,其状态会坍缩到其基态之一:|0⟩或|1⟩。然后,它可以被视为一个经典比特。这由从测量符号发出的双线表示。

Quantum circuit example (quantum entanglement circuit)
图1. 示例量子电路(量子纠缠电路)

将量子门表示为酉矩阵

量子门由酉矩阵表示。如果一个矩阵的共轭转置也是其逆矩阵,则该矩阵是酉矩阵。即UU = I。换句话说,如果用一个酉矩阵乘以它的共轭转置,您将得到单位矩阵。有关共轭转置的复习,请参考第一部分

单位矩阵是一个对角矩阵,除了对角线上的1之外,其余元素均为0,如下所示

$ I_3 = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \\ \end{bmatrix} $

\(I\)”旁边的下标表示维度大小。

如果用单位矩阵乘以一个矩阵,则该矩阵不变。这相当于乘以1。

当用一个矩阵乘以其逆矩阵时,您将得到单位矩阵。

酉矩阵的一个重要特性是,当您用一个酉矩阵乘以另一个矩阵时,其范数会保持不变。这意味着当一个酉矩阵应用于量子态时,概率之和仍然等于1,并且状态保持在Bloch球的表面上。范数是向量从球心到球面的长度。

表示量子门的矩阵的维度等于2n × 2n,其中n是输入数量。对于量子门,输入数量始终等于输出数量。

量子门可逆性的重要性

与经典计算中的门不同,量子门必须是可逆的。正如Gidney (2016)所说,量子门必须是可逆的,因为量子力学是可逆的。虽然经典计算机能够在处理过程中丢弃累积的信息,但在量子计算机中这样做将被视为一次测量;导致量子态坍缩。

为了保持叠加态的一致性,所有状态的总概率必须等于1。应用量子门时不能丢失任何信息。

现在,因为表示量子门的矩阵是酉矩阵,所以它们是可逆的。如果您将一个量子门U应用于状态|ψ⟩,您可以通过应用U的共轭转置(即其逆矩阵)来撤销它,如下所示

$ U^\dagger U \ket{\psi} = \ket{\psi} $

正如我们在上一节中所学到的,如果用一个酉矩阵乘以它的共轭转置,结果是单位矩阵;状态基本上保持不变。

当我们比较量子门和经典门时,我们发现像经典AND和OR门这样的门在量子计算中不容易实现。这些经典门是不可逆的。它们每个都有两个输入,只有一个输出,这意味着您无法从输出中重建初始输入位。信息丢失了。参见图2。

And gate
图2. 经典AND和OR门

要实现量子AND和OR门,我们需要使其可逆。我们稍后会在文章中介绍如何使用受控交换门来实现。

相反,已经是可逆的经典门,例如NOT门,可以更容易地作为量子门实现。参见图3。很容易看出NOT门的输入可以从其输出推断出来。如果输出是1,则输入是0;如果输出是0,则输入是1。

Classical Not gate
图3. 经典NOT门

测量量子比特

我们已经了解到,测量会将量子比特的状态坍缩到其基态之一:|0⟩或|1⟩,并且量子门必须是可逆的。由于测量是一种不可逆活动,因此测量在技术上并不是量子门。尽管如此,它们有时也被称为测量门。

测量用一个带有仪表符号的符号表示。参见图3。测量的输出是一条双线,表示经典比特。

Measurement Circuit Symbol
图3. 测量电路符号

现在让我们回到经典NOT门,看看它是如何实现为量子门的。

使用Pauli-X门否定量子比特

经典NOT门的量子对应体是Pauli-X门(又名NOT门或X门),其矩阵表示如下

$ X = \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix} $

就像经典NOT门将0翻转为1,将1翻转为0一样,Pauli-X门翻转基态,如下所示

$ \begin{align} X \ket{0} &= \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix} \mzero = \mone = \ket{1} \\ X \ket{1} &= \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix} \mone = \mzero = \ket{0} \end{align} $

Pauli-X门绕X轴在Bloch球上旋转量子比特π弧度(180°)。

Pauli-X门的量子电路符号如图4所示。

Circuit Symbol for Pauli-X gate
图4. Pauli-X门的电路符号

还有两个Pauli门:Pauli-Y门和Pauli-Z门。每个门在Bloch球上执行一次反向旋转——绕名称中指定的轴。我们稍后将介绍它们。

使用Hadamard门创建50/50叠加态

当从基态|0⟩或|1⟩开始时,将其转换为等概率叠加态是很常见的。也就是说,转换为以下两种状态之一

$ \begin{align} \ket{+} &= \frac{\ket{0} \color{red}{+} \ket{1}}{\sqrt{2}} \end{align} $
$ \begin{align} \ket{-} &= \frac{\ket{0} \color{red}{-} \ket{1}}{\sqrt{2}} \end{align} $

请注意,加号和减号符号对应于|1⟩态的幅度的符号。

|+⟩和|-⟩是更复杂状态操纵的常见起点。|+⟩和|-⟩给出量子比特的叠加态坍缩到|0⟩或|1⟩的等概率。

回想一下,要计算基态的概率,我们取其系数,在本例中为\(\frac{1}{\sqrt{2}}\),然后取其共轭的平方。由于该数为实数(其虚部为0),因此我们无需担心取共轭。因此,概率P(0)的计算如下

$ P(0) = \left \vert \frac{1}{\sqrt{2}} \right \vert^2 = \frac{1}{2} $

由于概率之和必须等于1,因此我们可以从1中减去P(0)来找到P(1)

$ P(1) = 1 - P(0) = \frac{1}{2} $

但是,我们如何将|0⟩或|1⟩转换为|+⟩或|-⟩呢?为此,我们转向Hadamard门(又名H门)。

Hadamard门在量子计算中随处可见,因为它允许您将量子比特的|0⟩或|1⟩状态转换为具有等概率幅的叠加态。

Hadamard门将|0⟩转换为|+⟩,将|1⟩转换为|-⟩,这正是我们所需要的。

Hadamard门的矩阵表示为

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

如果我们对|0⟩应用Hadamard门,结果是|+⟩,如下所示

$ H \ket{0} = \ostwo \mhadamard \mzero = \ostwo \begin{bmatrix} 1 \\ 1 \end{bmatrix} = \ostwo \left( \mzero + \mone \right) = \frac{\ket{0} + \ket{1}}{\sqrt{2}} $

请注意,我们将[1, 1]T分解为[1, 0]T + [0, 1]T。这就得到了我们的|0⟩和|1⟩基态。

在Bloch球上,|+⟩和|-⟩位于赤道上。参见图5。它们位于|0⟩和|1⟩基态之间;概率为\(\left \lvert \frac{1}{\sqrt{2}} \right \rvert^2 = \frac{1}{2}\),即50%。

Hadamard门绕X轴旋转量子比特π弧度(180°),然后绕Y轴顺时针旋转\(\frac{\pi}{2}\)弧度(90°)。另一种思考方式是绕x+z对角线旋转π弧度(180°)。

Applying H to Ket 0 on the Bloch sphere
图5. 在Bloch球上将H算符应用于|0⟩

Hadamard门的电路图符号如图6所示。

Circuit Symbol for Hadamard gate
图6. Hadamard门的电路符号

生成所有基态的叠加态

通过将Hadamard门应用于其他量子比特,我们可以增加可观察状态的数量。每个可观察状态由一组唯一的比特组成。所有这些可观察状态的集合构成了基态。例如,\(\ket{00}\)可以分解为\(\frac{\ket{00} + \ket{01} + \ket{10} + \ket{11}}{2}\)

从n个量子比特的状态|0...0n⟩开始,如果我们对每个量子比特应用Hadamard门,则得到以下状态

$ \ket{\psi} = \frac{\ket{0 \ldots 000} + \ket{0 \ldots 001} + \ldots + \ket{1 \ldots 111}}{\sqrt{2^n}} $

我们最终得到2n个可观察状态。

定义算符

量子门可以被视为函数。在量子力学中,任何线性映射从一个值到复空间中的另一个值的函数都称为算符。这就是为什么您有时会发现量子门被描述为算符。

您可以通过一个数学函数是否保持加法和乘法来判断它是否是线性映射。这意味着如果您使用等于u + v的参数调用该函数,则结果将与分别对u和v调用该函数然后将结果相加相同。请参见以下内容

$ f(u + v) = f(u) + f(v) $

同样,如果您使用c × u的参数调用该函数,则结果必须与使用u的参数调用该函数然后将结果乘以c相同,如下所示

$ f(c \times u) = c \times f(u) $

换句话说,如果函数是线性映射,那么函数是在加法和乘法运算之前还是之后调用并不重要(Wikipedia)。

使用受控非门

尽管名称如此,受控非门(CNOT)与经典计算中的异或(XOR)门类似。在经典计算中,XOR运算有两个输入。如果两个输入都是1,则输出为0;否则,结果不受影响。

经典XOR门的真值表如下

$ \begin{array}{ccc} A & B & A \oplus B \\ \hline 0 & 0 & 0 \\ 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \end{array} $

量子CNOT门有两个输入,因此有两个输出。仅当控制输入设置为1时,目标输入才会被否定。如果控制输入为0,则该门不起作用。控制量子比特不受该门的影响。

CNOT门的电路符号如图7所示。(不含文字)

Circuit Symbol for CNOT gate
图7. CNOT门的电路符号

提示:我用来记住CNOT上哪个输入是哪个的方法是,目标输入看起来像一个标线

CNOT门是受控Pauli-X门的另一个名称。我们在本系列的第三部分中介绍Pauli门。

CNOT门的真值表如下。我省略了状态的狄拉克符号。0对应于|0⟩,1对应于|1⟩。

$ \begin{array}{cc|cc} \rlap{In} & & \rlap{Out} & \\ \hline Control & Target & Control & Target \\ \hline 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 1 \\ 1 & 0 & 1 & 1 \\ 1 & 1 & 1 & 0 \end{array} $

观察Target输出列如何与经典XOR门的A ⊕ B列匹配。

由于CNOT门有两个输入和两个输出,因此它由一个4 × 4矩阵(2inputCount × 2outputCount)表示,如下所示

$ CNOT = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \end{bmatrix} $

让我们看一个将CNOT门应用于|00⟩状态的例子。第一个量子比特用作控制,第二个用作目标。

回想一下,|00⟩的矩阵是[1, 0]T ⊗ [1, 0]T = [1, 0, 0, 0]T

$ CNOT \ket{00} = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \end{bmatrix} \begin{bmatrix} 1 \\ 0 \\ 0 \\ 0 \end{bmatrix} = \begin{bmatrix} 1 \\ 0 \\ 0 \\ 0 \end{bmatrix} = \ket{00} $

这里第一个量子比特是0,这意味着第二个目标量子比特没有改变。

看看我们将CNOT应用于|10⟩状态时会发生什么。

$ CNOT \ket{10} = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \end{bmatrix} \begin{bmatrix} 0 \\ 0 \\ 1 \\ 0 \end{bmatrix} = \begin{bmatrix} 0 \\ 0 \\ 0 \\ 1 \end{bmatrix} = \ket{11} $

正如预期的那样,第二个量子比特被翻转了。

将真值表转换为矩阵

正如Yanofsky和Mannucci(2008,第172页)所描述的,有一种将真值表转换为其矩阵表示的有用技术。参见图8。

您首先需要足够的空间来容纳2inputCount × 2inputCount的矩阵。从第0行第0列开始,您按二进制顺序连续标记列和行,例如从00到11。然后,如果输入映射到输出,则在单元格中放置1;否则为0。瞧,您就得到了一个表示您量子门的矩阵。

Converting a truth table to a matrix
图8. 将真值表转换为矩阵

创建Bell态

在我们上一篇文章《量子计算入门》的第一部分讨论纠缠时,我们提到了Bell态\(\ket{\Phi^+}\)。还有其他三种Bell态,它们都显示如下

$ \ket{\Phi^\color{red}{+}} = \frac{\ket{00} \color{red}{+} \ket{11}}{\sqrt{2}} $
$ \ket{\Phi^\color{red}{-}} = \frac{\ket{00} \color{red}{-} \ket{11}}{\sqrt{2}} $
$ \ket{\Psi^\color{red}{+}} = \frac{\ket{01} \color{red}{+} \ket{10}}{\sqrt{2}} $
$ \ket{\Psi^\color{red}{-}} = \frac{\ket{01} \color{red}{-} \ket{10}}{\sqrt{2}} $

每个状态都是加号或减号运算以及基态|00⟩ & |11⟩和|01⟩ & |10⟩的排列。

Bell态是最大纠缠的两量子比特态。最大纠缠意味着它们是纠缠的,并且具有均匀的概率分布。换句话说,在可观察状态之间存在等概率。对于Bell态,概率为\(\left \vert \ostwo \right \vert^2 = \frac{1}{2}.\)

您结合使用两个量子门来创建一个Bell态:一个Hadamard门和一个CNOT门。此门组合的电路图如图9所示。

Hadamard门的输出成为CNOT门的控制输入。

Applying H Gate and then a CNOT
图9. 先应用H门再应用CNOT

让我们用代数方法看看这是如何工作的,从|00⟩状态开始。

回想一下,将Hadamard门应用于|0⟩状态会将其置于|+⟩状态

$ H \ket{0} = \frac{\ket{0} + \ket{1}}{\sqrt{2}} $

首先,我们将|00⟩状态的第一个量子比特通过Hadamard门。第二个量子比特不受影响

$ H \ket{00} = \frac{\ket{0} + \ket{1}}{\sqrt{2}} \otimes \ket{0} $

这两个量子比特仍然是可分离的。我们需要应用CNOT来创建纠缠。但在此之前,让我们使用矩阵推导出相同的结果。

$ \begin{align} H \ket{00} &= \left(\ostwo \mhadamard \mzero \right) \otimes \mzero \\[10pt] & = \ostwo \begin{bmatrix} 1 \\ 1 \end{bmatrix} \otimes \mzero = \ostwo \begin{bmatrix} 1 \\ 0 \\ 1 \\ 0 \end{bmatrix} \end{align} $

我们看到H|00⟩可以表示为\(\ostwo \begin{bmatrix} 1, & 0, & 1, & 0, \end{bmatrix}^T\)。我们可以使用此矩阵结果来理解应用CNOT门时发生的情况

$ \begin{align} CNOT(H \ket{00}) &= \ostwo \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \end{bmatrix} \begin{bmatrix} 1 \\ 0 \\ 1 \\ 0 \end{bmatrix} = \ostwo \begin{bmatrix} 1 \\ 0 \\ 0 \\ 1 \end{bmatrix} \\[10pt] &= \frac{\mzero \otimes \mzero + \mone \otimes \mone}{\sqrt{2}} \\[10pt] &= \frac{\ket{00} + \ket{11}}{\sqrt{2}} \end{align} $

您可以看到乘数(\(\ostwo\))是可交换的。将其移到等式开头不会改变结果。

应用CNOT门时,第一个量子比特成为控制,第二个量子比特成为目标。当第一个比特为1时,第二个比特被翻转,得到我们期望的状态。

要生成其他Bell态,我们只需从不同的基态开始,如下所示

$ \ket{\Phi^+} = CNOT(H \ket{00}) \\ \ket{\Phi^-} = CNOT(H \ket{10}) \\ \ket{\Psi^+} = CNOT(H \ket{01}) \\ \ket{\Psi^-} = CNOT(H \ket{11}) $

生成GHZ态

Greenberger–Horne–Zeilinger态(GHZ态)是三或多量子比特的纠缠态。

GHZ态类似于\(\ket{\Phi^+}\)态,但\(\ket{\Phi^+}\)只有两个量子比特处于相同配置,而GHZ态有三个或更多。GHZ态最简单的形式是

$ \ket{GHZ} = \frac{\ket{000} + \ket{111}}{\sqrt{2}} $

要创建GHZ态,您将Hadamard门应用于第一个量子比特,然后将CNOT应用于其他每个量子比特;使用第一个量子比特作为控制。

您可以使用门组合创建许多其他值得注意的量子态。弄清楚如何创建它们可以是一个有趣且具有挑战性的过程。

提示:Quirk是一个出色的基于浏览器的工具,可用于实验量子电路。参见图10。它具有拖放界面,对许多常见门内置支持,并且能够通过URL轻松共享电路。Quirk由Craig Gidney创建。

Quirk screenshot
图10. Quirk允许您在浏览器中直观地设计和运行量子电路。

结论

在本文中,我们研究了一些最常用的量子门。我们了解到量子门表示为酉矩阵,以及量子门可逆性的重要性。我们看到了测量为何在技术上不是量子门,因为它不可逆。我们研究了如何使用Hadamard门将量子比特置于叠加态,以及如何使用CNOT门纠缠量子比特。最后,我们看到了如何使用这些量子门创建Bell态和GHZ态。

在下一部分中,我们将继续探索量子门。我们将了解如何旋转和交换量子比特,并将深入研究更高级的受控门,这些门使您能够将控制量子比特应用于几乎任何门。希望您能加入我。

感谢您的阅读,希望本文对您有所帮助。如果觉得有用,请评分和/或在下方留下您的反馈。

参考文献

历史

  • 2019年6月25日
    • 出版日期
© . All rights reserved.