量子计算中的量子比特
量子计算中的量子比特
量子比特(qubit)是量子计算中信息的基本单位,类似于经典计算中的比特。但是,与只能表示0或1的经典比特不同,量子比特可以同时表示0和1的叠加态。这种特性使得量子计算机在处理某些问题时比经典计算机更强大。本文将介绍量子比特的基本概念、表示方法、测量以及单量子比特运算等核心内容。
表示一个量子比特
经典比特的值可以是0或1,而量子比特的值可以是0、1或0和1的量子叠加态。单个量子比特的状态可以用一个二维列向量来描述,这个向量被称为"量子态向量"。量子态向量必须满足单位范数条件,即其元素的平方和为1。
任何具有单位范数的实数或复数二维列向量都代表一个量子比特可能持有的量子态。具体来说,如果$\alpha$和$\beta$是满足$|\alpha|^2 + |\beta|^2 = 1$的复数,则向量
$$
\begin{bmatrix}
\alpha \
\beta
\end{bmatrix}
$$
表示一个量子比特状态。
表示量子比特的有效量子状态矢量的一些示例是
$$
\begin{bmatrix}
1 \
0
\end{bmatrix}
\quad \text{和} \quad
\begin{bmatrix}
0 \
1
\end{bmatrix}
$$
这两个向量构成了用于说明量子比特状态的向量空间的基础。这意味着,任何量子态向量都可以写为这些基础向量之和。具体来说,向量
$$
\begin{bmatrix}
x \
y
\end{bmatrix}
$$
可以写为
$$
x \begin{bmatrix}
1 \
0
\end{bmatrix} + y \begin{bmatrix}
0 \
1
\end{bmatrix}
$$
尽管这些向量的任何旋转都将作为量子比特的完全有效基础,但我们选择此特定基础,并将其命名为计算基础。
这两个量子态对应于经典位的两个状态,即0和1。标准约定是选择
$$
|0\rangle \equiv \begin{bmatrix}
1 \
0
\end{bmatrix}
\quad \text{和} \quad
|1\rangle \equiv \begin{bmatrix}
0 \
1
\end{bmatrix}
$$
但同样可以采取相反的选择。因此,在无限多可能的单量子比特量子态向量中,只有两个对应于经典位的状态;所有其他量子态都不对应。
测量量子比特
介绍了如何表示量子比特,接下来可以通过讨论测量的概念来了解这些状态的含义。测量对应于"查找"一个量子比特的非正式想法,它会立即将量子状态坍缩到两个经典状态之一
$$
\begin{bmatrix}
1 \
0
\end{bmatrix}
\quad \text{或} \quad
\begin{bmatrix}
0 \
1
\end{bmatrix}
$$
当测量由量子状态向量
$$
\begin{bmatrix}
\alpha \
\beta
\end{bmatrix}
$$
指定的量子比特时,将获得概率为$|\alpha|^2$的结果0,并获得概率为$|\beta|^2$的结果1。对于结果0,量子比特的新状态是
$$
\begin{bmatrix}
1 \
0
\end{bmatrix}
$$
;对于结果1,其状态是
$$
\begin{bmatrix}
0 \
1
\end{bmatrix}
$$
。请注意,由于规范化条件$|\alpha|^2 + |\beta|^2 = 1$,这些概率的总和为1。
测量的属性也表示量子态向量的整体符号是不相关的。取消向量等效于$\alpha \rightarrow -\alpha$和$\beta \rightarrow -\beta$。由于测量到0和1的概率取决于项的量级平方,因此插入此类符号无论如何都不会改变概率。此类相位通常称为全局相位,更常见的形式为$e^{i\phi}$,而不只是$\pm 1$。
测量的最后一个重要属性是它不一定损坏所有的量子态向量。如果以状态为
$$
\begin{bmatrix}
1 \
0
\end{bmatrix}
$$
的量子比特开始(它对应于经典状态0),则测量该状态将始终产生结果0,且量子态保持不变。在这种情况下,如果只有经典位(例如量子比特为
$$
\begin{bmatrix}
1 \
0
\end{bmatrix}
\quad \text{或} \quad
\begin{bmatrix}
0 \
1
\end{bmatrix}
$$
),则测量不会损坏系统。这意味着可以像在经典计算机上一样在量子计算机上复制经典数据并对其进行操作。不过,在两种状态下同时存储信息的能力使量子计算超越了经典计算的可能性,并进一步剥夺了量子计算机不加选择地复制量子数据的能力,另请参阅无克隆定理。
使用Bloch球可视化量子比特和转换
还可以使用Bloch球表示形式在3D中显示量子比特。Bloch球提供了一种将单量子比特量子态(二维复数向量)描述为三维实值向量的方法。这很重要,因为它允许我们将单量子比特状态可视化,从而发展出对于理解多量子比特状态非常有价值的推理(可惜的是,Bloch球表示法崩溃了)。Bloch球可以按如下所示可视化:
此图中的箭头显示了量子态向量指向的方向,每次箭头变换都可以被视为围绕一个基数轴的旋转。虽然将量子计算视为一系列旋转是一种强大的直觉,但是使用这种直觉来设计和描述算法非常困难。Q#通过提供一种描述此类旋转的语言来解决此问题。
单量子比特运算
量子计算机通过应用一组可以模拟任何量子态向量旋转的通用量子门来处理数据。这种通用性的概念类似于传统(例如,经典)计算的通用性概念,如果可以使用有限长度线路执行输入位的每次变换,则门集被视为是通用的。在量子计算中,允许对量子比特执行的有效变换是幺正变换和测量。adjoint运算或复杂的共轭转置对量子计算至关重要,因为需要它们才可反转量子变换。
单量子比特运算或单量子比特量子门可分为两类:克利福德门和非克利福德门。非克利福德门只包含T门(也称为$\pi/8$门):
$$
T = \begin{bmatrix}
1 & 0 \
0 & e^{i\pi/4}
\end{bmatrix}
$$
默认包含在Q#中的单量子比特Clifford门的标准集:
$$
H = \frac{1}{\sqrt{2}}\begin{bmatrix}
1 & 1 \
1 & -1
\end{bmatrix}, \qquad
S = \begin{bmatrix}
1 & 0 \
0 & i
\end{bmatrix} = T^2, \qquad
X = \begin{bmatrix}
0 & 1 \
1 & 0
\end{bmatrix} = HT^4H,
$$
$$
Y = \begin{bmatrix}
0 & -i \
i & 0
\end{bmatrix} = T^2HT^4HT^6, \qquad
Z = \begin{bmatrix}
1 & 0 \
0 & -1
\end{bmatrix} = T^4
$$
此处特别频繁地使用了$X$、$Y$和$Z$运算,并以其创造者Wolfgang Pauli的名字将其命名为Pauli运算。与非Clifford门($T$门)结合,可以编写这些运算来估算单量子比特上的任何幺正变换。
虽然前面构成了描述堆栈逻辑级别运算的最常用基元门(将逻辑级别看作是量子算法级别),但在算法级别考虑不那么基本的操作(例如更接近函数描述级别的运算)通常很方便。幸运的是,Q#还提供了实现更高级别的幺正性的方法,这反过来又允许实现高级算法,而不需要明确地将所有内容分解为Clifford和$T$门。
最简单的此类基元是单量子比特旋转。通常考虑三种单量子比特旋转:$R_x$、$R_y$和$R_z$。例如,若要可视化旋转$R_x(\theta)$的操作,想象你的右手拇指沿着Bloch球的$x$轴方向,用手将向量旋转$\theta/2$弧度的角度。$2$这个令人困惑的因素在于,在Bloch球上绘制时,正交向量相距$180^\circ$,但实际上在几何上相距$90^\circ$度。对应的幺正矩阵包括:
$$
\begin{align*}
&R_z(\theta) = e^{-i\theta Z/2} = \begin{bmatrix}
e^{-i\theta/2} & 0 \
0 & e^{i\theta/2}
\end{bmatrix}, \
&R_x(\theta) = e^{-i\theta X/2} = HR_z(\theta)H = \begin{bmatrix}
\cos(\theta/2) & -i\sin(\theta/2) \
-i\sin(\theta/2) & \cos(\theta/2)
\end{bmatrix}, \
&R_y(\theta) = e^{-i\theta Y/2} = SHR_z(\theta)HS^\dagger = \begin{bmatrix}
\cos(\theta/2) & -\sin(\theta/2) \
\sin(\theta/2) & \cos(\theta/2)
\end{bmatrix}.
\end{align*}
$$
正如任何三个旋转都可以组合在一起,在三个维度上进行任意旋转一样,可从Bloch球表示形式中看出,任何幺正矩阵也可以写成三个旋转的序列。具体而言,对于每个幺正矩阵$U$,都存在$\alpha,\beta,\gamma,\delta$,使得
$$
U = e^{i\alpha} R_x(\beta)R_z(\gamma)R_x(\delta)
$$
因此,$R_z(\theta)$和$H$也构成了一个通用门集,尽管它不是一个离散集,因为$\theta$可以取任何值。出于此原因,以及由于量子模拟中的应用程序,此类连续门对量子计算至关重要,尤其是在量子算法设计级别。为了实现容错硬件实现,它们最终将被编译成与这些旋转非常接近的离散门序列。