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

使用量子计算中的向量和矩阵

熟悉矢量和矩阵对于了解量子计算至关重要。 本文提供了简介,并建议读者阅读有关线性代数的标准参考(如 Strang, G. (1993). Introduction to linear algebra (Vol. 3). Wellesley, MA: Wellesley-Cambridge Press)或联机参考(如线性代数)。

向量

维度 $n$ 的(或大小)列向量(或简称为向量)$v$ 为$ n $个复数 $(v_1,v_2,\ldots,v_n)$ 的集合,按以下方式排为一列:

$$v=\begin{bmatrix} v_1\\ v_2\\ \vdots\\ v_n \end{bmatrix}$$

向量 $v$ 的范数定义为 $\sqrt{\sum_i |v_i|^2}$。 向量称为单位范数(或如果其范数为 1,则称为单位向量$$)。 向量 $v$ 的伴随表示为 $v^\dagger$,并定义为以下行向量,其中 $*$ 表示共轭复数,

$$\begin{bmatrix}v_1 \\ \vdots \\ v_n \end{bmatrix}^\dagger=\begin{bmatrix}v_1^* &\cdots& v_n^* \end{bmatrix}$$

请注意,列向量$ v $与行向量$ v^ \dagger$之间有区别。

inner_product

两个矢量可以通过内积(也称为点积标量积)相乘。 顾名思义,两个向量的内部乘积的结果是一个标量。 内积提供了一个向量的投影到另一个向量,这在描述如何将一个向量表示为其他更简单的向量的总和方面非常有用。 两列向量 $u=(u_1 , u_2 , \ldots , u_n)$ 和 $v=(v_1 , v_2 , \ldots , v_n)$ 之间的内积(表示为 $\left\langle u, v\right\rangle$)定义为:

$$\langle u, v\rangle= u^\dagger v=\begin{bmatrix}u_1^* &\cdots& u_n^* \end{bmatrix}\begin{bmatrix} v_1\\ \vdots\\ v_n \end{bmatrix}= u_1^{*} v_1 + \cdots + u_n^{*} v_n。 $$

此表示法还允许将向量 $v$ 的范数写成 $\sqrt{\langle v, v\rangle}$。

一个向量可以与数字 $c$ 相乘,以形成一个新向量,其每项乘以 $c$。 还可以添加两个向量 $u$ 和 $v$,以形成新的向量,其每项是 $u$ 和 $v$ 的总和。 这些运算如下:

$$\mathrm{If}~u =\begin{bmatrix} u_1\\ u_2\\ \vdots\\ u_n \end{bmatrix}~\mathrm{and}~ v =\begin{bmatrix} v_1\\ v_2\\ \vdots\\ v_n \end{bmatrix},~\mathrm{then}~ au+bv =\begin{bmatrix} au_1+bv_1\\ au_2+bv_2\\ \vdots\\ au_n+bv_n \end{bmatrix}。 $$

$m \times n$ 大小的矩阵是 $mn$ 复数的集合,其中有 $m$ 行和 $n$ 列,如下所示:

$$M =\begin{bmatrix} M_{11}~~ M_{12}~~\cdots~~ M_{1n}\\ M_{{21}~~ M_{22}~~\cdots~~ M_{2n}\\\ddots\\ M_{m1}~~ M_{m2}~~\cdots~~ M_{mn}\\\end{bmatrix}。$$

请注意,维度$ n $ 的向量只是一个$ n \times 1 $ 大小的矩阵。 对于向量,矩阵可以与数字 $c$ 相乘,以获取一个新矩阵,其中每项都与 $c$ 相乘,并且可以添加两个相同大小的矩阵,以生成一个新矩阵,其中每项是两个矩阵的相应项的总和。

矩阵乘法

还可将 $m\times n$ 维度的 $M$ 矩阵和 $n \times p$ 维度的 $N$ 矩阵这两个矩阵相乘,生 $m \times p$ 维度的 $P$ 矩阵,如下所示:

\begin{\begin{align}&\begin{bmatrix} M_{{11}~~ M_{12}~~\cdots~~ M_{1n}\\ M_{21}~~ M_{22}~~\cdots~~ M_{2n}\\\ddots\\ M_{m1}~~ M_{m2}~~\cdots~~ M_{mn}\end{bmatrix}\begin{bmatrix} N_{{11}~~ N_{12}~~\cdots~~ N_{1p}\\ N_{{21}~~ N_{{22}~~\cdots~~ N_{2p}\\\ddots\\ N_{n1}~~ N_{n2}~~\cdots~~ N_{np}\end{bmatrix}=\begin{bmatrix} P_{{11}~~ P_{{12}~~\cdots~~ P_{1p}\\ P_{{21}~~ P_{22}~~\cdots~~ P_{2p}\\\ddots\\ P_{m1}~~ P_{m2}~~\cdots~~ P_{mp}\end{bmatrix}\end{align}

其中 $P$ 的每项为 $P_{ik}=\sum_j M_{ij}N_{jk}$。 其中,$P_{11}$ 项是 $M$ 的第一行与 $N$ 的第一列的内积。 请注意,由于向量只是矩阵的一种特殊情况,因此此定义可延伸到矩阵向量乘法。

我们考虑的所有矩阵均为行数和列数相等的方块矩阵,或者只有$ 1 $列的向量。 一个特殊的方块矩阵是表示为 $\boldone$ 的单位矩阵,其中所有对角线元素均等于 $1$,剩余元素等于 $0$:

$$\boldone=\begin{bmatrix} 1 ~~ 0 ~~\cdots~~ 0\\ 0 ~~ 1 ~~\cdots~~ 0\\~~\ddots\\ 0 ~~ 0 ~~\cdots~~ 1 \end{bmatrix}.$$

对于方块矩阵 $A$,如果 $AB = BA =\boldone$,则矩阵 $B$ 是其可逆矩阵。 矩阵的逆矩阵未必存在,但如果它存在,则它是唯一的,并且我们将其表示为 $A^{-1}$。

对于任意矩阵 $M$,$M$ 的伴随或共轭矩阵是 $N$ 矩阵,例如 $N_{ij}= M_{ji}^*$。 $M$ 的伴随矩阵通常表示为 $M^\dagger$。 如果 $UU^\dagger= U^\dagger U =\boldone$ 或者 $U^{-1}= U^\dagger$,则 $U$ 是幺正矩阵。 幺正矩阵最重要的一个属性是它们保留向量的范数。 发生这种情况的原因如下:

$$\langle v,v \rangle=v^\dagger v = v^\dagger U^{{-1} U v = v^\dagger U^\dagger U v =\langle U v, U v\rangle。$$

如果 $M=M^\dagger$,则认为 $M$ 为厄米矩阵

张量积

另一个重要的运算是克罗内克积,也称为矩阵直积张量积。 请注意,克罗内克积可与矩阵乘法区分开,这是一个完全不同的运算。 在量子计算理论上,张量积产品通常用于表示克罗内克积。

考虑使用两个向量 $v=\begin{bmatrix}a \\ b \end{bmatrix}$ 和 $u =\begin{bmatrix} c \\ d \\ e \end{bmatrix}$。 它们的克罗内克积表示为 $v \otimes u$,并生成一个分块矩阵。 $$\begin{bmatrix} a \\ b \end{bmatrix}\otimes\begin{bmatrix} c \\ d \\ e \end{bmatrix}=\begin{bmatrix} a \begin{bmatrix} c \\ d \\ e \end{bmatrix}\\[1.5em] b \begin{bmatrix} c \\ d \\ e\end{bmatrix}\end{bmatrix}=\begin{bmatrix} a c \\ a d \\ a e \\ b c \\ b d \\ be\end{bmatrix}$$

请注意,克罗内克积是对任意大小的两个矩阵或矢量进行的运算。 矩阵 $M$($m\times n$ 大小)和矩阵 $N$($p \times q$ 大小)是更大的矩阵 $P=M\otimes N$($mp \times nq$ 大小),由 $M$ 和 $N$ 按以下方式运算所得:

\begin{align} M \otimes N &=\begin{bmatrix} M_{11}~~\cdots~~ M_{1n}\\\ddots\\ M_{m1}~~\cdots~~ M_{mn}\end{bmatrix}\otimes\begin{bmatrix} N_{{11}~~\cdots~~ N_{1q}\\\ddots\\ N_{p1}~~\cdots~~ N_{pq}\end{bmatrix}\\&=\begin{bmatrix} M_{{11}\begin{bmatrix} N_{{11}~~\cdots~~ N_{1q}\\\ddots\\ N_{p1}~~\cdots~~ N_{pq}\end{bmatrix}~~\cdots~~ M_{1n}\begin{bmatrix} N_{11}~~\cdots~~ N_{1q}\\\ddots\\ N_{p1}~~\cdots~~ N_{pq}\end{bmatrix}\\\ddots\\ M_{m1}\begin{bmatrix} N_{{11}~~\cdots~~ N_{1q}\\\ddots\\ N_{p1}~~\cdots~~ N_{pq}\end{bmatrix}~~\cdots~~ M_{mn}\begin{bmatrix} N_{{11}~~\cdots~~ N_{1q}\\\ddots\\ N_{p1}~~\cdots~~ N_{pq}\end{bmatrix}\end{bmatrix}。 \end{align}

下面的示例对此进行了更好的演示:$$\begin{bmatrix} a\ b \\ c\ d \end{bmatrix}\otimes\begin{bmatrix} e\ f\\g\ h \end{bmatrix}=\begin{bmatrix} a\begin{bmatrix} e\ f\\ g\ h \end{bmatrix} b\begin{bmatrix} e\ f\\ g\ h \end{bmatrix}\\[1em] c\begin{bmatrix} e\ f\\ g\ h \end{bmatrix} d\begin{bmatrix} e\ f\\ g\ h \end{bmatrix}\end{bmatrix}=\begin{bmatrix} ae\ af\ be\ bf \\ ag\ ah\ bg\ bh \\ ce\ cf\ de\ df \\ cg\ ch\ dg\ dh \end{bmatrix}。 $$

最后一个关于张量积的实用表示法约定是:对于任意向量 $v$ 或矩阵 $M$,$v^{\otimes n}$ 或 $M^{\otimes n}$ 是 $n$ 分之一张量积的速记。 例如:

\begin{\begin{align}&\begin{bmatrix} 1 \\ 0 \end{bmatrix}^{\otimes 1}=\begin{bmatrix} 1 \\ 0 \end{bmatrix}, \qquad\begin{bmatrix} 1 \\ 0 \end{bmatrix}^{\otimes 2}=\begin{bmatrix} 1 \\ 0 \\0 \\0 \end{bmatrix}, \qquad\begin{bmatrix} 1 \\ -1 \end{bmatrix}^{\otimes 2}=\begin{bmatrix} 1 \\ -1 \\-1 \\1 \end{bmatrix}, \\&\begin{bmatrix} 0 & 1 \\ 1& 0 \end{bmatrix}^{\otimes 1}=\begin{bmatrix} 0& 1 \\ 1& 0 \end{bmatrix}, \qquad\begin{bmatrix} 0 & 1 \\ 1& 0 \end{bmatrix}^{\otimes 2}=\begin{bmatrix} 0 &0&0&1 \\ 0 &0&1&0 \\ 0 &1&0&0\\ 1 &0&0&0\end{bmatrix}。 \end{align}

后续步骤