你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Dirac 表示法 是描述量子状态和运算的简洁而强大的方法。 它以物理学家保罗·迪拉克的名字命名,他在20世纪30年代发展了记号。 Dirac 表示法用于量子计算来描述量子状态、量子运算和量子测量。
本文介绍 Dirac 表示法,并演示如何使用它来描述量子状态和作。
Dirac 表示法中的向量
狄拉克符号中有两种类型的向量:bra 向量(对应于行向量)和 ket 向量(对应于列向量)。
如果 $\psi$ 是列向量,则可以将其以 Dirac 表示法编写为 $\ket{\psi}$,其中 $\ket{\cdot}$ 表示它是 ket 向量。
类似地,行向量 $\psi^\dagger$ 表示为$\bra{\psi}$,即bra向量。 换句话说,$\psi^\dagger$ 是通过将逐项复共轭 (entry-wise complex conjugation) 应用于 $\psi$ 的转置元素而获得的。 狄拉克表示法直接表示 $\braket{\psi|\psi}$ 是向量 $\psi$ 与其自身的内积,根据定义它等于 $1$。
笼统地讲,如果 $\psi$ 和 $\phi$ 是量子态向量,那么它们的内积为 $\braket{\phi|\psi}$。 该内积意味着将状态 $\ket{\psi}$ 测量为 $\ket{\phi}$ 的概率是 $|\braket{\phi|\psi}|^2$。
计算基础状态 $0$ 和 $1$ 分别表示为 $\begin{bmatrix} 1 \ 0 \end{bmatrix}=\ket{{0}$ 和 $\begin{bmatrix} 0 \ 1 \end{bmatrix}=\ket{1}$。
示例:用狄拉克表示法表示 Hadamard 运算
让我们使用 Dirac 表示法将 Hadamard 门 $H$ 应用到量子态 $\ket{0}$ 和 $\ket{1}$:
$$\frac{1}{\sqrt{2}}\begin{bmatrix} 1 \\ 1 \end{bmatrix}=H\ket{{0}=\ket{+}$$
$$\frac{1}{\sqrt{2}}\begin{bmatrix} 1 \\ -1 \end{bmatrix}=H\ket{{1}=\ket{-}$$
生成的状态对应于 Bloch 球面上在 $+x$ 和 $-x$ 方向的单位向量。 还可以使用狄拉克表示法将这些状态扩展为 $\ket{0}$ 和 $\ket{1}$ 的总和:
$$\ket{+}=\frac{{1}{\sqrt{2}}(\ket{0} + \ket{1}) $$
$$\ket{-}=\frac{1}{\sqrt{{2}}(\ket{0} - \ket{1}) $$
计算基向量
每个量子状态始终可以表示为计算基础向量的总和,此类总和很容易使用 Dirac 表示法来表示。 反之亦然,因为状态 $\ket{+}$ 和 $\ket{-}$ 也构成了量子态的基。 从事实中可以看到这一点
$$\ket{0}=\frac{1}{\sqrt{2}}(\ket{+} + \ket{-}) $$
$$\ket{1}=\frac{1}{\sqrt{2}}(\ket{+} - \ket{-}) $$
作为狄拉克表示法的一个例子,考虑括号记号 $\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 表示法可用于表达 张量积。 张量积在量子计算中非常重要,因为两个不相关的量子寄存器所描述的状态向量是两个状态向量的张量积。
任何两个量子态向量 $\psi 和 \otimes 的张量积 \phi$$\phi$$\psi$ 以 dirac 表示法编写为 $\ket{\psi}\otimes\ket{\phi}$。 按照惯例,你也可以将张量积写为$\ket{\psi}\ket{\phi}=\ket{\psi\phi}$。
例如,具有两个量子位初始化为零状态的态可以表示为 $\ket{{0}\otimes\ket{0}=\ket{0}\ket{0}=\ket{00}$。
示例:用狄拉克表示法描述叠加
作为另一个关于如何使用狄拉克表示法来描述量子态的例子,考虑以下几种等效的方式来书写量子态,该量子态是长度为 $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 或外积。 外部产品在 Dirac 表示法中表示为 $\ket{\psi}\bra{\phi}$。 对于量子态向量 $\ket{\psi} 和 \bra{\phi},外积通过矩阵乘法定义为 =\psi\phi\dagger$$\psi$^$\phi$。 此表示法最简单且可能最常见的示例是
$ \ket{0} \bra{ {0} = \begin{bmatrix}1\\ 0 \end{bmatrix}\begin{bmatrix}1&0 \end{bmatrix}=\begin{bmatrix}1 &0\\ 0 &0\end{bmatrix}\qquad\ket{1}\bra{1}=\begin{bmatrix}0\\ 1 \end{bmatrix}\begin{bmatrix}0&1 \end{bmatrix}=\begin{bmatrix}0 &0\\ 0 &1\end{bmatrix}。 $$
“Ketbra”常被称为投影算符,因为它们将一个量子态投影到一个固定的值上。 由于这些运算不是酉运算(甚至不能保持矢量的范数不变),所以量子计算机无法确定性地应用投影算符。 但是,投影仪在描述测量对量子态的操作方面做得很出色。 例如,如果将状态 $\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(\ket{{1}\bra{{1}\otimes\mathbf{\mathbf{1}^{\otimes n-1}\right) 。 \ket{\psi} $$
此处,标识矩阵可以方便地用狄拉克表示为
$ \mathbb{I}=\ket{{0}\bra{0}+\ket{{1}\bra{1}=\begin{bmatrix}1&0\\ 0&1 \end{bmatrix}。 $$
对于有两个量子比特的情况,投影算符可以展开为:
$ \ket{1} \bra{1} \otimes \mathbb{I}=\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$ 是 Hermitian)
- 每个特征值 $p$ 的 $\rho$ 都是非负值
- $\rho$ 的所有特征值之和为 1
总之,这些条件保证了 $\rho$ 可以被视为一个集合体。 对于一个量子态矢量 $\ket{\psi}$ 的密度算符,其形式为 $\rho =\sum_i p_i \ket{\psi_i}\bra{\psi_i}$ 是 $\rho$ 的一个本征值分解,那么 $\rho$ 描述了系综 $\rho ={\ket{\psi_i}\text{,其概率为} p_i }$。
纯量子态的特征是由单个右矢矢量或波函数来描述的,并且不能写成其他量子态的统计混合态,或者说凸组合。 混合量子状态是纯态的统计集合。
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# 中没有量子态的概念。 相反,Q# 仅通过用于准备它们的操作来描述所有状态。 上一个示例是此定义的出色插图。 与其在寄存器中的每个量子位串上表示统一的叠加,不如将结果表示为 $H^{\otimes n}\ket{0}$。 这种对状态的指数短描述具有一定的优势,你可以以经典方式推理它。 它还简明地定义它需要通过软件堆栈传播以实现算法的操作。 因此,Q# 采用发出入口序列而不是量子态的设计。但是,从理论上讲,这两种观点是相同的。