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

狄拉克表示法

狄拉克表示法是一种语言,专为满足在量子力学中表达状态的精确需求。 本文中的示例是可用于简洁表达量子思想的建议。

列向量表示法的限制

虽然列向量表示法在 线性代数中很常见,但在量子计算中通常很麻烦,尤其是在处理多个量子比特时。 例如,当你将 $\psi$ 定义为向量时,并不确定 $\psi$ 是行向量还是列向量。 因此,如果 $\phi$ 和 $\psi$ 是向量,则同样不确定是否已定义 $\phi\psi$,因为 $\phi$ 和 $\psi$ 的形状在上下文中可能不清楚。 除了关于向量形状的歧义之外,使用线性代数表示法来表达简单的向量甚至也可能很麻烦。 例如,如果要描述一个 $n$ 量子比特状态,其中每个量子比特取值为 $0$,则可以将状态正式表示为

$$\begin{bmatrix}1 \\ 0 \end{bmatrix}\otimes\cdots\otimes\begin{bmatrix}1 \\ 0 \end{bmatrix}。 $$

由于向量位于指数级大的空间中,因此计算该张量积是不切实际的。 因此,该表示法实际上是使用之前的表示法可给出的状态的最佳描述。

狄拉克表示法中的向量类型

狄拉克表示法中有两种类型的向量:bra 向量和 ket 向量,之所以这样命名,是因为将它们组合在一起便形成 braket 或内积。 如果 $\psi$ 是列向量,那么可以用狄拉克表示法将其写为 $\ket{\psi}$,其中 $\ket{\cdot}$ 表示它是一个单位列向量,例如 ket 向量。 同理,行向量 $\psi^\dagger$ 表示为 $\bra{\psi}$。 换句话说,$\psi^\dagger$ 是通过将逐项复共轭 (entry-wise complex conjugation) 应用于 $\psi$ 的转置元素而获得的。 bra-ket 表示法直接表示 $\braket{\psi|\psi}$ 是向量 $\psi$ 与其自身的内积,根据定义为 $1$。

笼统地讲,如果 $\psi$ 和 $\phi$ 是量子态向量,那么它们的内积为 $\braket{\phi|\psi}$。 该内积意味着将状态 $\ket{\psi}$ 测量为 $\ket{\phi}$ 的概率是 $|\braket{\phi|\psi}|^2$。

以下约定用于描述编码零值和一值的量子态(单量子位计算基态):

$$\begin{bmatrix} 1 \\ 0 \end{bmatrix}=\ket{{0},\qquad\begin{bmatrix} 0 \\ 1 \end{bmatrix}=\ket{{1}。 $$

示例:用狄拉克表示法表示 Hadamard 运算

以下表示法通常用于描述将 Hadamard 门应用于 $\ket{0}$ 和 $\ket{1}$ 所生成的状态。 这些状态对应于布洛赫球上 $+x$ 和 $-x$ 方向的单位向量:

$$\frac{1}{\sqrt{{2}}\begin{bmatrix} 1 \\ 1 \end{bmatrix}=H\ket{0}=\ket{+},\qquad\frac{1}{\sqrt{{2}}\begin{bmatrix} 1 \\ -1 \end{bmatrix}=H\ket{{1}=\ket{{-} 。 $$

还可以使用狄拉克表示法将这些状态扩展为 $\ket{0}$ 和 $\ket{1}$ 的总和:

$$\ket{+}=\frac{{1}{\sqrt{2}}(\ket{0} + \ket{1}),\qquad\ket{{-}=\frac{{1}{\sqrt{{2}}(\ket{{0} - \ket{1}). $$

计算基向量

这说明了为什么这些状态通常称为计算基:每个量子态始终可以表示为计算基向量的和,并且可以使用狄拉克表示法轻松表示这些和。 反之亦然,因为状态 $\ket{+}$ 和 $\ket{-}$ 也构成了量子态的基。 可以从以下事实中得出这一点

$$\ket{{0}=\frac{1}{\sqrt{2}}(\ket{+} + \ket{-}),\qquad\ket{{1}=\frac{{1}{\sqrt{{2}}(\ket{+} - \ket{-}). $$

举例说明狄拉克表示法,假设 braket $\braket{0 | 1}$,这是 $0$ 和 $1$ 之间的内积。 这可表示为

$$\braket{0 | 1}=\begin{bmatrix} 1 & 0 \end{bmatrix}\begin{bmatrix}0\\ 1\end{bmatrix}=0. $$

此示例表示 $\ket{{0}$ 和 $\ket{{1}$ 是正交向量,这意味着 $\braket{0 | 1}=\braket{1 | 0}=0$。 同样根据定义 $\braket{0 | 0}=\braket{1 | 1}=1$,这意味着两个计算基向量也可以称为正交。

以下示例使用这些正交属性。 假设状态 $\ket{\psi}={\frac{3}{5}}\ket{{1} + {\frac{{4}{5}}\ket{0}$,然后因为 $\braket{1 | 0}=0$ 测量 $1$ 的概率为

$$\big|\braket{1 |\psi}\big|^2=\left|\frac{{3}{5}\braket{1 | 1} +\frac{{4}{5}\braket{1 | 0}\right|^2=\frac{{9}{{25}。 $$

张量积表示法

Dirac 表示法还包括隐式 张量乘积 结构。 此结构很重要,因为在量子计算中,由两个不相关的量子寄存器描述的状态向量是两个状态向量的张量积。 如果要解释量子计算,准确描述张量积结构(或缺少张量积结构)至关重要。 张量积结构意味着可以将任意两个量子态向量 $\phi$ 和 $\psi$ 的 $\psi\otimes\phi$ 写为 $\ket{\psi}\otimes\ket{\phi}$。 但是,按照惯例,不需要在向量之间写入 $\otimes$,可改为写入 $\ket{\psi}\ket{\phi}=\ket{\psi\phi}$。 有关向量和张量积的详细信息,请参阅量子计算中的向量和矩阵。 例如,两个量子比特初始化为零状态的状态为:

$$\ket{0}\otimes\ket{0}=\ket{{0}\ket{{0}=\ket{{00}=\begin{bmatrix} 1 \\ 0 \end{bmatrix}\otimes\begin{bmatrix} 1 \\ 0 \end{bmatrix}=\begin{bmatrix} 1 \\ 0 \\ 0 \\ 0 \end{bmatrix}. $$

类似地,整数 $p$ 的状态 $\ket{p}$ 表示量子状态,该状态以二进制表示形式编码整数 $p$。 例如,如果需要使用无符号二进制编码表示数字 $5$,则可以将其表示为

$$\ket{1}\ket{0}\ket{1}=\ket{101}=\ket{5}. $$

在此表示法之内,$\ket{0}$ 无需引用单量子比特状态,而需要引用存储 $0$ 的二进制编码的量子比特寄存器。 这两个表示法之间的差异从上下文中看得很清楚。 此约定可用于简化第一个示例,该示例可通过以下任一方式编写:

$$\begin{bmatrix}1 \\ 0 \end{bmatrix}\otimes\cdots\otimes\begin{bmatrix}1 \\ 0 \end{bmatrix}=\ket{{0}\otimes\cdots\otimes\ket{0}=|0\cdots 0\rangle=\ket{{0}^{\otimes n}$$

其中 $\ket{0}^{\otimes n}$ 表示 $n$$\ket{0}$ 量子状态的张量积。

示例:用狄拉克表示法描述叠加

作为有关如何使用 Dirac 表示法描述量子状态的另一个示例,请考虑以下等效方式来编写量子状态,该量子态是与长度 $n 的每个可能位字符串相等的叠加$

$$ H^{\otimes n}\ket{0}=\frac{1}{2^{n/2}}\sum_{j=0}^{2^n-1}\ket{j}=\ket{+}^{\otimes n}。 $$

此时你可能想知道为什么对于 $n$ 位,总和从 $0$ 变为 $2^{n}-1$。 首先请注意,$n$ 位可以采用 $2^{n}$ 个不同的配置。 你可以基于以下事实认识到这一点:一位可以接受 $2$ 个值,而两位可以接受 $4$ 个值,依此类推。 通常,这意味着存在 $2^n$ 个可能的不同位字符串,但其中最大的编码值是 $1\cdots 1=2^n-1$因此,这是总和的上限。 顺便提一下,在此示例中,未使用 $\ket{+}^{\otimes n}=\ket{+}$ 来类比 $\ket{{0}^{\otimes n}=\ket{{0}$。 此表示法约定是为计算基状态保留的,每个量子比特初始化为零。 虽然这种约定在这种情况下是明智的,但它在量子计算文献中没有采用。

用狄拉克表示法表示线性

狄拉克表示法的另一个特性是它是线性的。 例如,对于两个复数 $\alpha$ 和 $\beta$,可以写为

$$\ket{\psi}\otimes ( \alpha\ket{\phi} + \beta\ket{\chi})=\alpha\ket{\psi}\ket{\phi} + \beta\ket{\psi}\ket{\chi}.$$

也就是说,你可以狄拉克表示法分布张量积表示法,这样获得状态向量之间的张量积就会像普通乘法一样。

bra 向量遵循与 ket 向量相似的约定。 例如,向量 $\bra{\psi}\bra{\phi}$ 等效于状态向量 $\psi^\dagger\otimes\phi^\dagger=(\psi\otimes\phi)^\dagger$。 如果 ket 向量 $\ket{\psi}$ 为 $\alpha\ket{0} + \beta\ket{1}$,则该向量的 bra 向量版本为 $\bra{\psi}=\ket{\psi}^\dagger= (\bra{{0}\alpha^* +\bra{1}\beta^*)$。

例如,假设需要计算使用用于测量状态的量子程序测量状态 $\ket{\psi}=\frac{3}{5}\ket{{1} + \frac{4}{5}\ket{0}$ 为 $\ket{+}$ 或 $\ket{{-}$ 的概率。 那么设备将输出状态为 $\ket{-}$ 的概率为

$$|\braket{- |\psi}|^2=\left|\frac{{1}{\sqrt{{2}}(\bra{0} - \bra{{1})(\frac{3}{5}\ket{{1} + \frac{{4}{5}\ket{0}) \right|^2=\left|-\frac{3}{5\sqrt{{2}} + \frac{{4}{5\sqrt{2}}\right|^2=\frac{{1}{{50}。$$

在概率计算中出现负号这一事实是量子干扰的体现,这是量子计算相较于传统计算具有优势的机制之一。

ketbra 或外积

狄拉克表示法中值得讨论的最后一项是ketbra 或外积。 外积在狄拉克表示法中表示为 $\ket{\psi}\bra{\phi}$,有时也称为 ketbra,因为 bra 和 ket 的顺序与 braket 相反。 对于量子态向量 $\psi$ 和 $\phi$,外积通过矩阵乘法定义为 $\ket{\psi}\bra{\phi}=\psi\phi^\dagger$。 此表示法最简单且可能最常见的示例是

$$\ket{0}\bra{{0}=\begin{bmatrix}1\\ 0 \end{bmatrix}\begin{bmatrix}1&安0 \end{bmatrix}=\begin{bmatrix}1 &安0\\ 0 &安0\end{bmatrix}\bra{1}=\qquad\ket{1}\begin{bmatrix}0\\ 1 \end{bmatrix}\begin{bmatrix}0 安&1 \end{bmatrix}=\begin{bmatrix}0 &安0\\ 0 &安1\end{bmatrix}. $$

由于它们将量子态投影到固定值上,所以它们通常称为投影仪 (projector)。 由于这些操作不是酉(甚至不保留向量的范数),因此量子计算机无法确定性地应用投影仪。 但是,投影仪在描述测量对量子态的操作方面做得很出色。 例如,如果将状态 $\ket{\psi}$ 测量为 $0$,则该状态由于测量所经历的结果转换为

$$\ket{\psi}\right箭头 \frac{(\ket{{0}\bra{{0})\ket{\psi}}{|\braket{0 |\psi}|}=\ket{{0},$$

如果测量了状态并发现状态为 $\ket{0}$,则如预期的那样。 重申一下,这样的投影仪不能确定性地应用于量子计算机中的状态。 相反,它们最多只能随机应用,会出现 $\ket{0}$ 结果且概率固定。 这种测量成功的概率可以写为处于该状态的量子投影仪的期望值

$$\bra{\psi} (\ket{0}\bra{0})\ket{\psi}=|\braket{\psi| 0}|^2, $$

这说明投影仪提供了一种表示测量过程的新方法。

相反,如果考虑将多个量子比特状态的第一个量子比特测量为 $1$,则也可以使用投影仪和狄拉克表示法方便地描述此过程:

$$P (\text{第一个量子比特 = 1}) =\bra{\psi}\left ({1}\otimes\ket{{1}\bra{\mathbf{\mathbf{1}^{\otimes n-1}\right) 。\ket{\psi} $$

此处,标识矩阵可以方便地用狄拉克表示为

$$\mathbf{1}=\ket{0}\bra{0}+\ket{1}\begin{bmatrix}\bra{{1}=1&0\\ 0&1 \end{bmatrix}. $$

对于有两个量子位的情况,投影仪可以扩展为

$$\ket{1}\bra{1}\otimes\id=\ket{{1}\bra{1}\otimes (\ket{{0}\bra{{0}+\ket{1}\bra{{1})=\ket{10}\bra{{10} + \ket{{11}\bra{{11}. $$

然后可以看到,这与使用列向量表示法对多个量子比特状态的测量似然性的讨论是一致的:

$$ P(\text{第一个量子比特 = 1})=\psi^\dagger (e_{10}e_{10}^\dagger + e_{{11}e_{{11}^\dagger)\psi=|e_{{10}^\dagger\psi|^2 + |e_{11}^\dagger\psi|^2, $$

这符合多量子位测量的讨论。 但是,使用狄拉克表示法将该结果通用化到多量子位的情况比使用列向量表示法更直接,并且完全等同于先前的处理方法。

密度运算符

使用狄拉克符号表示的另一个有用的运算符是密度运算符,有时也称为状态运算符。 作为量子状态向量,密度运算符描述系统的量子状态。 然而,虽然量子状态向量只能表示“纯态”,但密度运算符也可以表示“混合态”。

更一般地说,如果满足以下条件,则给定矩阵 $\rho$ 是有效的密度运算符:

  • $\rho$ 是复数矩阵
  • $\rho = \rho^{\dagger}$(即 $\rho$是厄密)
  • $\rho$ 的每个特征值 $p$ 都是 $0 <= p <= 1$
  • $\rho$ 的所有特征值之和为 1

总之,这些条件保证了 $\rho$ 可以被视为一个集合体。 量子状态向量 $\ket{\psi}$ 的密度运算符采用 $\rho =\sum_i p_i \ket{\psi_i} 的形式,\bra{\psi_i}$ 是$\rho$ 的特征值分解,则 $\rho$ 描述概率为 } p_i }$ 的集成 $\rho ={\ket{\psi_i}\text{。

纯量子状态是那些以单个 ket 向量或波函数为特征的状态,不能写成其他量子状态的统计混合物(或凸组合)。 混合量子状态是纯态的统计集合。

在 Bloch 球体上,纯状态由球体表面的点表示,而混合状态由内部点表示。 单个量子比特的混合状态由球体的中心表示,由对称性表示。 状态的纯洁度可以可视化为它接近球体表面的程度。

这种将状态表示为矩阵而不是矢量的概念通常很方便,因为它提供了一种表示概率计算的便捷方法,还允许你在同一形式内描述统计不确定性和量子不确定性。

密度运算符 $\rho$ 表示纯状态,当且仅当:

  • $\rho$ 可以写为状态向量的外积 $\rho=\ket{\psi}\bra{\psi}$
  • $\rho =\rho^2$
  • $tr(\rho^2)=1$

要判断给定的密度运算符 $\rho$ 与纯值有多接近,可以查看 $\rho^2$ 的轨迹(即对角线元素的总和)。 密度运算符表示纯状态,当且仅当 $tr(\rho ^{2})=1$。

等效于量子态的 Q# 入口序列

关于量子表示法和 Q# 编程语言最后值得提及的一点:本文开头部分提到了量子态是量子计算中信息的基本对象。 然后可能会感到惊讶的是,在 Q# 中没有量子态的概念。 而是仅通过用于准备状态的操作来描述所有状态。 前面的示例很好地说明了这一点。 可以将结果表示为 $H^{\otimes n}\ket{0}$,而不是在寄存器中的每个量子位串上表示统一的叠加。 状态的这种指数式简短描述不仅具有可以使用经典方式对其进行推理的优势,而且还可以简洁地定义通过软件堆栈传播以实现算法所需的操作。 因此,Q# 采用发出入口序列而不是量子态的设计。但是,从理论上讲,这两种观点是相同的。

后续步骤