你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
量子计算中的 Dirac 表示法
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$ 的转置元素而获得的。 bra-ket 表示法直接表示 $\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 $\braket{0 | 1}$,这是 $0$ 和 $1$ 之间的内积。 这可表示为
$$\braket{0 | 1 1 }=\begin{bmatrix}& amp; 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$ 以 dirac 表示法编写为 $\ket{\psi}\otimes\ket{\phi}$。 按照惯例,你也可以将张量积写为$\ket{\psi}\ket{\phi}=\ket{\psi\phi}$。
例如,具有两个量子位初始化为零状态的态可以表示为 $\ket{{0}\otimes\ket{0}=\ket{0}\ket{0}=\ket{00}$。
示例:用狄拉克表示法描述叠加
作为介绍如何使用 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 或外积。 外部产品在 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}. $$
由于它们将量子态投影到固定值上,所以它们通常称为投影仪 (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(\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{我}=\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$ 都是非负值$
- $\rho$ 的所有特征值之和为 1
总之,这些条件保证了 $\rho$ 可以被视为一个集合体。 量子状态向量 $\ket{\psi}$ 的密度运算符采用 $\rho =\sum_i p_i \ket{\psi_i} 的形式,\bra{\psi_i}$ 是$\rho$ 的特征值分解,则 $\rho$ 描述概率为 $ p_i = 的集成 {\rho \ket{\psi}\text{_i}}$。
纯量子状态是那些以单个 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# 采用发出入口序列而不是量子态的设计。但是,从理论上讲,这两种观点是相同的。