正如位是经典计算中信息的基础对象一样,
量子比特
(量子位)是量子计算中信息的基础对象。 为了理解这种对应关系,本文介绍了一个最简单的示例:单个量子比特。
表示一个量子比特
位(或称为二进制数)的值可以为 $0$ 或 $1$,而量子比特的值可以是 $0$、$1$ 或 $0$ 和 $1$ 的量子叠加。
单个量子比特的状态可由单元规范的二维列向量描述,也就是说,其条目的平方值总和必须为 $1$。 此向量(称为“量子态向量”)包含描述一个量子比特量子系统所需的所有信息,就像单个位包含描述二进制变量的状态所需的所有信息一样。 有关量子计算中向量和矩阵的基础知识,请参阅
用于量子计算的线性代数
和
向量和矩阵
。
任何具有标准 $1$ 的实数或复数的二维列向量都代表一个量子比特可能持有的量子态。 因此,如果 $\alpha$ 和 $\beta$ 是满足 $|\alpha|^2 + |\beta|^2 = 1$ 的复数,则 $\begin{bmatrix}\alpha\\\beta\end{bmatrix}$ 表示一个量子比特状态。 表示量子比特的有效量子态向量的一些示例包括
$$\begin{bmatrix} 1 \\ 0 \end{bmatrix}, \begin{bmatrix} 0 \\ 1 \end{bmatrix}, \begin{bmatrix}\frac{{1}{\sqrt{2}}\\\frac{{1}{\sqrt{2}}\end{bmatrix}, \begin{bmatrix}\frac{1}{\sqrt{{2}}\\\frac{{-1}{\sqrt{2}}\end{bmatrix}, \text{ 和 }\begin{bmatrix}\frac{1}{\sqrt{{2}}\\\frac{i}{\sqrt{2}}\end{bmatrix}。$$
量子状态向量 $\begin{bmatrix} 1 \\ 0 \end{bmatrix}$ 和 $\begin{bmatrix} 0 \\ 1 \end{bmatrix}$ 扮演一个特殊角色。 这两个向量构成了用于说明量子比特状态的向量空间的基础。 这意味着,任何量子态向量都可以写为这些基础向量之和。 具体来说,向量 $\begin{bmatrix}\\\end{bmatrix}$ 可以写为 $x \begin{bmatrix} 1 \\ 0 \end{bmatrix} + y \begin{bmatrix} 0 \\ 1 \end{bmatrix}$。 尽管这些向量的任何旋转都将作为量子比特的完全有效基础,但我们选择此特定基础,并将其命名为计算基础。
这两个量子态对应于经典位的两个状态,即 $0$ 和 $1$。 标准约定是选择
$$0\equiv\begin{bmatrix} 1 \\ 0 \end{bmatrix}, \qquad 1 \equiv\begin{bmatrix} 0 \\ 1 \end{bmatrix},$$
但同样可以采取相反的选择。 因此,在无限多可能的单量子比特量子态向量中,只有两个对应于经典位的状态;所有其他量子态都不对应。
测量量子比特
介绍了如何表示量子比特,接下来可以通过讨论
测量
的概念来了解这些状态的含义。 测量对应于“查找”一个量子比特的非正式想法,它会立即将量子状态坍缩到两个经典状态之一 $\begin{bmatrix} 1 \\ 0 \end{bmatrix}$ or $\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}$ 或 $\begin{bmatrix}0 \\ 1 \end{bmatrix}$),则测量不会损坏系统。 这意味着可以像在经典计算机上一样在量子计算机上复制经典数据并对其进行操作。 不过,在两种状态下同时存储信息的能力使量子计算超越了经典计算的可能性,并进一步剥夺了量子计算机不加选择地复制量子数据的能力,另请参阅
无克隆定理
。
还可以使用
Bloch 球
表示形式在 $3$D 中显示量子比特。 Bloch 球提供了一种将单量子比特量子态(二维复数向量)描述为三维实值向量的方法。 这很重要,因为它允许我们将单量子比特状态可视化,从而发展出对于理解多量子比特状态非常有价值的推理(可惜的是,Bloch 球表示法崩溃了)。 可按如下所示可视化 Bloch 球:
此图中的箭头显示了量子态向量指向的方向,每次箭头变换都可以被视为围绕一个基数轴的旋转。
虽然将量子计算视为一系列旋转是一种强大的直觉,但是使用这种直觉来设计和描述算法非常困难。 Q# 通过提供一种描述此类旋转的语言来解决此问题。
单量子比特运算
量子计算机通过应用一组可以模拟任何量子态向量旋转的通用量子门来处理数据。
这种通用性的概念类似于传统(例如,经典)计算的通用性概念,如果可以使用有限长度线路执行输入位的每次变换,则门集被视为是通用的。
在量子计算中,允许对量子比特执行的有效变换是幺正变换和测量。
adjoint 运算或复杂的共轭转置对量子计算至关重要,因为需要它们才可反转量子变换。
单量子比特运算或单量子比特量子门可分为两类:Clifford 门和非 Clifford 门。 非克利福德门仅 $包含 T$ 门 (也称为 $\pi/8$ 门) 。
$$T 1 0 0 e^{i\pi/4}\end{bmatrix}。&\\&=\begin{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^4 HT^6, \qquad Z=\begin{bmatrix}1&0\\ 0&-1 \end{bmatrix}=T^4。
此处特别频繁地使用了 $X$、$Y$ 和 $Z$ 运算,并以其创造者 Wolfgang Pauli 的名字将其命名为
Pauli 运算
。 与非 Clifford 门($T$ 门)结合,可以编写这些运算来估算单量子比特上的任何幺正变换。
关于这些运算、它们的 Bloch 球表示形式和 Q# 实现的详细信息,请参阅
内部运算和函数
。
虽然前面构成了描述堆栈逻辑级别运算的最常用基元门(将逻辑级别看作是量子算法级别),但在算法级别考虑不那么基本的操作(例如更接近函数描述级别的运算)通常很方便。 幸运的是,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$ 可以取任何值。 出于此原因,以及由于量子模拟中的应用程序,此类连续门对量子计算至关重要,尤其是在量子算法设计级别。 为了实现容错硬件实现,它们最终将被编译成与这些旋转非常接近的离散门序列。
多个量子位
狄拉克表示法
T 门和 T 工厂