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

对多个量子比特的运算

本文探讨用于基于单量子比特状态构建多量子比特状态的规则,并讨论组成通用多量子比特量子计算机所需包含在门集中的门运算。 这些工具是了解代码中 Q# 常用的门集所必需的。 它们对于了解为什么量子效应(如纠缠或干扰)使量子计算比传统计算更强大也很重要。

单量子比特门与多量子比特门

量子计算的真正强大功能只有在增加量子比特数时才会显现出来。 单个量子比特具有一些反直觉功能,例如在给定时间处于多个状态的能力。 但是,如果你在量子计算机中拥有的只是单量子比特门,那么计算器和经典超级计算机就会使其计算能力相形见绌。

量子计算能力之所以能够实现,在某种程度上是因为量子状态向量的向量空间维度随着量子比特数的增加呈指数级增长。 这意味着,虽然可以对单个量子比特进行完全建模,但模拟具有 50 个量子比特的量子计算也许可以突破现有超级计算机的极限。 仅增加一个额外量子比特的计算大小,存储状态所需的内存将 增加一倍 ,计算时间大约 增加一倍 。 正是凭借计算能力的这一迅速翻倍,量子比特数相对较少的量子计算机对某些计算任务的处理能力才能远远超过当今和未来的功能最强大的超级计算机。

双量子比特状态

如果提供了两个单独的量子比特,一个处于 状态$\psi=\begin{bmatrix}\end{bmatrix}$\\\beta\alpha,另一个处于 状态$\phi=\begin{bmatrix}\\\delta\gamma\end{bmatrix}$,则相应的双量子比特状态由向量 (或克朗克积) 给出,定义如下

$$\psi\otimes\phi=\begin{bmatrix}\alpha\\\beta\end{bmatrix}\otimes\begin{bmatrix}\gamma\\\delta\end{bmatrix}=\begin{bmatrix}\alpha\begin{bmatrix}\gamma\\\delta\end{bmatrix}\\\beta\begin{bmatrix}\gamma\\\delta\end{bmatrix}\end{bmatrix}=\begin{bmatrix}\alpha\gamma\\\alpha\delta\\\beta\gamma\\\beta\delta\end{bmatrix}. $$

因此,如果两个单量子比特状态为 $\psi$ 和 $\phi$,并且它们都是二维,则对应的双量子比特状态 $\psi\otimes\phi$ 为四维。 向量

$$\begin{bmatrix}\alpha_{{00}\\\alpha_{{01}\\\alpha_{{10}\\\alpha_{{11}\end{bmatrix}$$

表示两个量子比特上的量子状态,前提是

$$|\alpha_{00}|^2+|\alpha_{01}|^2+|\alpha_{{10}|^2+|\alpha_{{11}|^2=1。$$

更概括地说,你可以看到,$n$ 个量子比特的量子状态由维数为 $2 \cdot 2 \cdot 2 \cdots= 2^n$ 的单位向量 $v_1 \otimes v_2 \otimes\cdots\otimes v_n$ 使用此构造表示。 与单个量子比特一样,多个量子比特的量子状态向量也保存描述系统行为所需的所有信息。 有关向量和张量积的详细信息,请参阅量子计算中的向量和矩阵

双量子比特状态的计算基础由单量子比特基态的张量积构成。 例如,你有

\begin{align}00 \equiv\begin{bmatrix}1 \\ 0\begin{bmatrix}\end{bmatrix}\otimes 1 \\ 0 \end{bmatrix}&=\begin{bmatrix}1 0 0 0 , 01 \equiv\begin{bmatrix}1 \\ 0 0 \\\begin{bmatrix}\end{bmatrix}\otimes1 \end{bmatrix}\begin{bmatrix}=0 \\\\ 0\\ 0 \end{bmatrix},\\ 10 \equiv\begin{bmatrix}0 \\ 1\begin{bmatrix}\end{bmatrix}\otimes 1 \\ 0 \end{bmatrix}&\begin{bmatrix}=\qquad\end{bmatrix}\\\\\\0 0 1 0 , 11\begin{bmatrix}\equiv 0 \\ 1\begin{bmatrix}\end{bmatrix}\otimes 0 \\\end{bmatrix}\begin{bmatrix}=0 \\ 0\\ 0\\ 1 。\end{bmatrix}\qquad\end{bmatrix}\\\\\\ \end{align}

请注意,虽然始终可以采用两个单量子比特状态的张量积来形成双量子比特状态,但并非所有双量子比特量子态都可以编写为两个单量子比特状态的张量积。 例如,没有状态$\psi=\begin{bmatrix}\alpha\beta\end{bmatrix}$\\,\gamma$\phi=\begin{bmatrix}\\\delta\end{bmatrix}$因此其张量乘积为状态

$$\psi\otimes\phi=\begin{bmatrix} 1/\sqrt{{2}\\ 0 \\ 0 \\ 1/\sqrt{{2}\end{bmatrix}.$$

此类双量子比特状态不能写为单量子比特状态的张量积,称为“纠缠状态”;我们将这两个量子比特视为纠缠在一起。 大致来说,由于量子状态不能视为单量子比特状态的张量积,因此状态所保存的信息并不仅限于单个量子比特。 相反,在两个状态之间的关联中,信息存储在非本地。 信息的非局部性是量子计算与经典计算的主要区别特征之一,对于包括量子误差更正在内的许多量子协议至关重要。

测量双量子比特状态

双量子比特状态测量与单量子比特测量非常相似。 如果测量状态

$$\begin{bmatrix}\alpha_{{00}\\\alpha_{{01}\\\alpha_{{10}\\\alpha_{{11}\end{bmatrix}$$

使用概率$|\alpha _^2$ 生成 $00$、$概率为 _{{01}|{00}|^2 的$|\alpha生成 01$、$概率为 _{{10}|^2$ 的$|\alpha生成 10$、$概率为{11}| _^2$$ 的 $|\alpha11。$ 我们有意命名了变量 $\alpha_{00}、\alpha_{{01}、\alpha_{{10},$ 和 $\alpha_{11}$,以使此连接清晰明了。 测量后,如果结果为 $00$,则双量子比特系统的量子状态已折叠,现在为

$$ 00 \equiv\begin{bmatrix} 1 \\ 0 \\ 0 \\ 0 \end{bmatrix}。 $$

也可以只测量两量子比特量子态的一个量子比特。 如果只测量两个量子比特状态的一个量子比特,则测量的影响与测量两个量子比特的影响略有不同。 这是因为整个状态不会折叠为计算基础状态,而是折叠为仅一个子系统。 换句话说,测量双量子比特状态的一个量子比特只会将相关子系统折叠为计算基态。

若要了解这一点,请考虑测量以下状态的第一个量子比特,该状态通过在最初设置为 " 的两个量子比特上应用 Hadamard 转换 $H$ 而形成:0" state:

$$H^{\otimes 2\left} ( \begin{bmatrix}1 \\ 0\begin{bmatrix}\end{bmatrix}\otimes 1 \\ 0\right\end{bmatrix}) \frac{{1}{2}\begin{bmatrix}= 1 & 1 & 1 \\&1 & -1 & 1 & -1 \\ 1 & 1 & -1 & -1 1 \\ amp; -1 1 & -1 & -1 amp; -1 & 1 \end{bmatrix}\begin{bmatrix}\\ 0\\ 0{1}{2}\begin{bmatrix}\frac{\end{bmatrix}\\= 1\\ 1\\ 1 }=\begin{cases}\text{\mapsto\end{bmatrix}\\ 结果 0 & \frac{{1}{\sqrt{2}}\begin{bmatrix}1\\ 1\\ 0\\ 0 \end{bmatrix}\\\text{结果 }=1 & \frac{{1}{\sqrt{{2}}\begin{bmatrix}0\\ 0\\ 1\\ 1 \end{bmatrix}\\\end{cases}。 $$ 这两种结果的发生概率均为 50%。 如果 $第一个量子比特上将 0$ 交换 $为 1$ ,则测量前的量子状态不会改变,这可以说明这一点。

用于测量第一个或第二个量子比特的数学规则很简单。 让e_k为第 k^{\rm 个}$计算基向量,$让 S$ 成为所有$e_k$的集合,以便有问题的量子比特获取 $k 的值$$的值 1$。$$$ 例如,如果有兴趣测量第一个量子比特,则 $S$ 将包含 $e_1\equiv 10$ 和 $e_3\equiv 11$。 同样,如果对第二个量子比特$感兴趣,则 S$ 由 e_2\equiv 01$ 和 $e_3 \equiv 11$ 组成$。 然后,将所选量子比特测量为 $1$ 的概率是状态向量 $\psi$

$$ P(\text{结果}=1)集 } S}\psi^\dagger e_k e_k^\dagger\psi 中的 =\sum_{e_k \text{。 $$

注意

本文使用 little-endian 格式来标记计算基础。 在 little endian 格式中,重要性最低的位在最前面。 例如在 little-endian 格式中,第四位由位 001 的字符串表示。

由于每个量子比特测量只会得出 $0$ 或 $1$,因此测量为 $0$ 的概率只有 $1-P(\text{结果}=1)$。 这就是为什么你只需要一个公式来测量 $1$ 的概率。

此类测量对状态的作用可以在数学上表示为

$$\psi\mapsto\frac{\sum_集 } S} e_k e_k^\dagger\psi}{\sqrt{ 中的 {e_k \text{P(\text{结果}=1)}}。 $$

谨慎的读者可能会担心分母为零时会发生什么情况。 虽然此类状态未定义,但无需担心此类可能性,因为概率为零!

如果你将 $\psi$ 设置为上面给出的统一状态向量,并且有兴趣测量第一个量子比特,则

$$ P(\text{第一个量子比特的测量}=1) = (\psi^\dagger e_1)(e_1^\dagger\psi)+(\psi^\dagger e_3)(e_3^\dagger\psi)=|e_1^\dagger\psi|^2+|e_3^\dagger\psi|^2。 $$

请注意,这只是预期测量结果 $10$ 和 11$ 的两个概率之和$。 对于我们的示例,其计算结果为

$$\frac{{1}{4}\left|\begin{bmatrix}0&0&1&安0\end{bmatrix}\begin{bmatrix}1\\ 1\\ 1\\ 1\end{bmatrix}\right|^2+\frac{1}{{4}\left|\begin{bmatrix}0&0&0&1\end{bmatrix}\begin{bmatrix}1\\ 1 1\\ 1\right|\end{bmatrix}\\^2=\frac{{1}{{2}。 $$

这完全符合我们的直觉。 同样,第一个量子比特测量为 $1$ 后的状态可以写入为

$$\frac{\frac{e_1}{2}+\frac{e_3}{2}}{\sqrt{\frac{1}{2}}}=\frac{1}{\sqrt{2}}\begin{bmatrix} 0\\ 0\\ 1\\ 1\end{bmatrix}$$

这同样与我们的直觉一致。

双量子比特运算

与单量子比特案例一样,任何酉变换都是对量子比特有效的运算。 一般来说,对 $n$ 个量子比特应用的酉变换是大小为 $2^n \times 2^n$ 的矩阵 $U$(因此它作用于大小为 $2^n$ 的向量),因此 $U^{-1}= U^\dagger$。 例如,受控反闸门 (CNOT) 是一个常用的双量子比特门,并由以下酉矩阵表示:

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

我们还可以通过对两个量子比特应用单量子比特门来构成双量子比特门。 例如,如果应用入口

$$\begin{bmatrix} a\ b\\ c\ d \end{bmatrix}$$

$$\begin{bmatrix} e\ f\\ g\ h \end{bmatrix}$$

分别应用于第一个和第二个量子比特,这等效于应用由其张量积给出的双量子比特酉位: $$\begin{bmatrix} a\ b\\ c\ d \end{bmatrix}\otimes\begin{bmatrix} e\ f\\ g\ h \end{bmatrix}=\begin{bmatrix} ae\ af\ be\ bf \\ ag\ ah\ bg\ bh \\ ce\ cf\ de\ df \\ cg\ ch\ dg\ dh 。\end{bmatrix}$$

因此,可以通过采用一些已知的单量子比特门的张量乘积来形成双量子比特门。 双量子比特门的一些例子包括 $H \otimes H$、$X \otimes\mathbf{1}$ 和 $X \otimes Z$。

请注意,虽然任意两个单量子比特门通过使用其张量积来定义一个双量子比特门,但反之并不成立。 并非所有双量子比特门都可以写为单量子比特门的张量积。 此类门称为纠缠门。 CNOT 门是纠缠门的一个示例。

受控非门背后的直觉可以泛化为任意门。 一般情况下,受控门是充当标识的门,除非特定量子比特为 $1$。 用 U) $_x (表示一个$\Lambda在标记为 $x$ 的量子比特上控制的受控酉酉。 例如 $\Lambda_0 (U) e_{1}\otimes{{\psi}= e_{1}\otimes U{\psi}$ 和$\Lambda _0 (U) e_{0}\otimes{\psi}={ e_{{0}\otimes{\psi}$,其中 $e_0$ 和 $e_1$ 是对应于值 $0$ 和 $1$ 的单个量子比特的计算基向量。 例如,请考虑以下受控$ Z$门,然后你可以将其表示为

$$\Lambda_0 (Z) =\begin{bmatrix}1&0&0&0\\0&1&安0&0\\0&0&1&安0\\0&0&0&-1 \end{bmatrix}= (\mathbf\mathbf{1}\otimes{ H) \operatorname{CNOT} (\mathbf{1}\otimes H) 。 $$

如何高效地构建受控么正运算是一项重大挑战。 实现此目标的最简单方法是:构建基本门的受控版本的数据库,并将原始么正运算中的每个基本门替换为其等效的受控版本。 通常,这很浪费时间,借助明智的见解,我们只需将几个门替换为受控版本即可获得相同的效果。 出于此原因,框架提供执行天真控制方法的功能,或者允许用户定义酉子的受控版本(如果已知优化的手动优化版本)。

门也可以使用经典信息进行控制。 例如,经典受控非门只是一个普通非门,但仅当经典位是 $1$ 而非量子比特时才会应用。 从这种意义上讲,可以将经典受控门视为量子代码中的 if 语句,其中的门仅应用于代码的一个分支。

与单量子比特案例一样,如果使用双量子比特门集中的门的积能够以任意精度准确计算任何 $4\times 4$ 酉矩阵,则该门集是通用的。 通用门集的示例包括阿达马门、T 门和 CNOT 门。 通过取这些门的乘积,可以近似于两个量子比特上的任何酉矩阵。

量子纠缠

考虑叠加中的两个量子比特 $A$ 和 $B$ ,以便全局系统的状态为

$$\ket{\psi}_{AB}=\frac1{\sqrt2}\ket{{00} + \frac1{\sqrt2}\ket{{11}$$

在这种情况下,在标准基数中测量两个量子比特的状态时,只有两个结果是可能的: $|00\rangle$ 和 $|11\rangle$。 请注意,每个结果的概率 $\frac{1}{2}$相同。 获得 $|01 和 $|10\rangle$\rangle$ 的概率为零。 如果测量第一个量子比特,并且发现它处于 $|0\rangle$ 状态,那么即使没有测量它,第二个量子比特也处于 $|0\rangle$ 状态,则可以肯定这一点。 测量结果是关联的,且量子位相互牵连。

备注

此示例使用两个量子比特,但量子纠缠不限于两个量子比特。 通常,多量子比特系统可能共享纠缠。

纠缠量子比特是相关的,因此它们无法相互独立描述。 也就是说,无论一个纠缠对中一个量子比特的状态发生什么操作,都会影响另一个量子比特的状态。

有关实际实现,请参阅使用 和 Azure Quantum 探索量子纠缠Q#的教程。

纯状态下的纠缠

纯量子状态是那些以单个 ket 向量或波函数为特征的状态,不能写成其他量子状态的统计混合物(或凸组合)。 在 Bloch 球体上,纯状态由球体表面的点表示,而混合状态由内部点表示。

如果无法将纯状态 _AB 编写为子系统(即 $\ket{\phi}_{AB}=\ket{a}_A \otimes\ket{b}_B$)的积状态组合,则会将其纠缠在一起。}${$\ket{\phi}

例如,请考虑状态 \ket{\psi}$$_{AB={1}{2}}\frac{ ({00}\ket{+ +{10}\ket{01}\ket{+) \ket{{11}$$

首先,状态 $\ket{\psi}_{AB}$ 看起来不像产品状态,但如果我们将状态重写为

$$\ket{\psi}_{AB}{2}}={1}{\sqrt{\frac{ (\ket{0}_A +{1}\ket{_A) \otimes\frac{1}{\sqrt{{2}} (\ket{{0}_B +{1}\ket{_B) =\ket{+}_A \ket{+_B}$$

状态 $\ket{\psi}_{AB}$ 是产品状态,因此它不会纠缠。

混合状态中的纠缠

混合量子态是纯态的统计系综。 如果混合状态 $\rho$ 对于某些密度矩阵$\rho^A 0$}{\geq 、 \rho^{B,它可以写为积状态 $\rho = \rho^{A}}\geq\otimes \rho^{B}$,则它既没有量子关联,也没有经典相关性。

如果混合状态 $\rho$ 可以编写为子系统的产品状态的凸组合,则它是可分离的,例如

$$\rho =\sum_j p_j \rho^{A}_{j\otimes} \rho^{B}_{j}$$

其中$,p_j \geq 0、 \sum p_j = 1$ 和 $\rho^{A}_{j\geq} 0、\rho^{B}_{j}\geq 0$。

如果混合状态 $不可$ 分离,则将其纠缠在一起,也就是说,不能将其编写为产品状态的凸组合。

提示

可分离状态仅包含经典相关性。

了解经典关联

经典相关性是由于我们缺乏对系统状态的了解。 也就是说,有一些与经典相关性相关的随机性,但可以通过获取知识来消除它。

例如,考虑两个盒子,每个盒子包含一个球。 我们知道两个球的颜色相同,蓝色或红色。 如果我们打开一个盒子,发现里面的球是蓝色的,那么我们知道另一个球也是蓝色的。 因此,它们是相关的。 然而,我们打开盒子时的不确定性是由于我们缺乏知识,这不是根本。 在我们打开盒子之前,球是蓝色的。 因此,这是一种经典相关性,而不是量子关联。

由两个框 $组成的系统的混合量子状态 \rho_{box}$ 可以编写为

$$\rho_{boxes{1}{2}=}\frac{ (\ket{red}\bra{}_{A\otimes}\ket{red}\bra{} red_B) +{1}{2}\frac{ (\ket{blue}}\bra{ blue_A\ket{\otimes blue}\bra{} blue_B) $$

请注意,状态 $\rho_{box 是可分离的}$ ,其中 $p_1 = p_2 =\frac{1}{2}$ 则仅包含经典相关性。 混合可分离状态的另一个示例是

$$\rho =\frac{{1}{2} ({0}\ket{0}\bra{ _A \otimes\ket{0}\bra{0}_B) +\frac{1}{2} (\ket{1}\bra{1}_A _B) \otimes\ket{{1}\bra{{1}$$

现在,请考虑以下状态:

$$\rho ={1}{4}\frac{ (\ket{{00}\bra{00} + \ket{{00}\bra{11} + \ket{11}\bra{00} + \ket{{11}{11}\bra{) =\ket{\phi^+}\bra{\phi^+}$$

在这种情况下,我们对状态的了解是完美的,我们确信系统 $AB$ 处于贝尔状态 $\ket{\phi^+}$ ,\ $rho$ 是一个纯状态。 因此,不存在经典相关性。 但是,如果我们测量子系统 $A$ 上的可观测值,则会获得一个随机结果,该结果提供有关子系统 $B$ 的状态的信息。 这种随机性是根本性的,即这些是量子关联。

同时包含经典关联和量子关联的量子状态的一个示例是

$$\rho ={1}{2}\frac{ (\ket{\phi^+}\bra{\phi^+} + \ket{\phi^-}\bra{\phi^-}) $$

提示

  • 如果纠缠状态 $\rho$ 是纯的,则它只包含量子相关性。
  • 如果纠缠状态 $\rho$ 是混合的,则它同时包含经典和量子相关性。

多量子比特系统

我们采用与双量子比特案例中所述完全相同的模式,基于较小的系统构建多量子比特量子状态。 此类状态通过构成较小状态的张量积来构建。 例如,考虑在量子计算机中编码位字符串 $1011001$。 可以将此编码为

$$ 1011001 \equiv\begin{bmatrix} 0 \\ 1 \end{bmatrix}\otimes\begin{bmatrix} 1 \\ 0 \end{bmatrix}\otimes\begin{bmatrix} 0 \\ 1 \end{bmatrix}\otimes\begin{bmatrix} 0 \\ 1 \end{bmatrix}\otimes\begin{bmatrix} 1 \\ 0 \end{bmatrix}\otimes\begin{bmatrix} 1 \\ 0 \end{bmatrix}\otimes\begin{bmatrix} 0 \\ 1 \end{bmatrix}。 $$

量子门的工作原理与此完全相同。 例如,如果希望将 X$ 门应用于$第一个量子比特,然后在第二个和第三个量子比特之间执行 CNOT,则可以将此转换表示为

\begin{\begin{align}& (X \otimes\operatorname{CNOT}_{{12}\otimes\mathbf{1}\otimes \mathbf\otimes{\mathbf{1} \mathbf\otimes{\mathbf{1} \mathbf{\mathbf{1}) \begin{bmatrix} 0 \\ 1 1\begin{bmatrix}\\\end{bmatrix}\otimes0 0 \\\begin{bmatrix}\end{bmatrix}\otimes1 \end{bmatrix}\otimes\begin{bmatrix} 0 \\ 1 \\\end{bmatrix}\begin{bmatrix}\otimes0 1 \\ 0 \end{bmatrix}\otimes\begin{bmatrix} 0 \end{bmatrix}\otimes\\\begin{bmatrix} 1 \end{bmatrix}\\&\qquad\qquad\equiv0011001. \end{align}

在许多量子比特系统中,通常需要分配和解除分配用作量子计算机的临时内存的量子比特。 这种量子比特称为“辅助”。 默认情况下,可以假定量子比特状态在分配时初始化为 $e_0$ 。 可以进一步假设在解除分配之前,它将再次 $返回到e_0$ 。 此假设很重要,因为如果辅助量子比特在解除分配时与另一个量子比特寄存器纠缠在一起,则解除分配过程会损坏辅助量子比特。 因此,你始终假设此类量子比特在释放之前还原到其初始状态。

最后,我们需要向门集添加新门才能为双量子比特量子计算机实现通用量子计算,而多量子比特案例不需要引入任何新门。 门 $H$、$T$ 和 CNOT 构成了针对多个量子比特的通用门集,因为任何通用酉变换都可以分为一系列双量子比特旋转。 然后,可以利用为双量子比特案例开发的理论,并在有许多量子比特时再次在此处使用它。

注意

虽然到目前为止已使用的线性代数表示法肯定可用于描述多量子比特状态,但随着状态大小的增加,它变得越来越繁琐。 例如,长度为 7 位的字符串的结果列向量为 $128$ 维,这导致使用前述表示法来表示该向量变得非常棘手。 相反,使用 Dirac 表示法(一种简化量子状态表示形式的符号速记)。 有关详细信息,请参阅 Dirac 表示法

后续步骤