# 向量、矩阵 熟悉向量和矩阵对于理解量子计算是至关重要的。下面提供简要介绍,建议先阅读线性代数 。
一个 n n n 维列向量 v v v 是 n n n 个复数的集合,按以下方式排成一列:
v = [ v 1 v 2 ⋮ v n ] v=\begin{bmatrix}v_1\\ v_2\\ \vdots\\ v_n\end{bmatrix} v = ⎣ ⎢ ⎢ ⎢ ⎢ ⎡ v 1 v 2 ⋮ v n ⎦ ⎥ ⎥ ⎥ ⎥ ⎤
向量v v v 的范数被定义为 ∑ i ∣ v i ∣ 2 \sqrt{\sum_i |v_i|^2} ∑ i ∣ v i ∣ 2 。向量称为单位范数(或如果其范数为 1 1 1 ,则称为单位向量 )。向量 v v v 的伴随矩阵表示为 v † v^\dagger v † ,定义为以下行向量,其中 ∗ * ∗ 表示复共轭,
[ v 1 ⋮ v n ] † = [ v 1 ∗ ⋯ v n ∗ ] \begin{bmatrix}v_1\\ \vdots\\ v_n \end{bmatrix}^\dagger=\begin{bmatrix} v_1^* \cdots v_n^* \end{bmatrix} ⎣ ⎢ ⎢ ⎡ v 1 ⋮ v n ⎦ ⎥ ⎥ ⎤ † = [ v 1 ∗ ⋯ v n ∗ ]
将两个向量相乘的最常见方法是内积 (也叫点积 或标量积 ),两个向量的内部乘积是一个标量。内积给出了一个向量在另一向量上的投影,这在描述如何将一个向量表示为其他更简单向量的总和时很有用。列向量 u u u 和 v v v 之间的内积(表示为 ⟨ u , v ⟩ \langle u,v\rangle ⟨ u , v ⟩ ),定义为
⟨ u , v ⟩ = u † v = u 1 ∗ v 1 + ⋯ + u n ∗ v n \langle u,v\rangle=u^\dagger v=u_1^{*}v_1+\cdots+u_n^{*}v_n ⟨ u , v ⟩ = u † v = u 1 ∗ v 1 + ⋯ + u n ∗ v n
该表示法还允许将向量 v v v 的范数写为 ⟨ v , v ⟩ \sqrt{\langle v,v\rangle} ⟨ v , v ⟩ 。
可以将一个向量与数字 c c c 相乘 ,变成一个其项乘以 c c c 的新向量。还可以添加两个向量 u u u 和 v v v ,变成其项是 u u u 和 v v v 对应项数乘之和的新向量。若 u = [ u 1 u 2 ⋮ u n ] u=\begin{bmatrix}u_1\\ u_2\\ \vdots\\ u_n\end{bmatrix} u = ⎣ ⎢ ⎢ ⎢ ⎢ ⎡ u 1 u 2 ⋮ u n ⎦ ⎥ ⎥ ⎥ ⎥ ⎤ 和 v = [ v 1 v 2 ⋮ v n ] v=\begin{bmatrix}v_1\\ v_2\\ \vdots\\ v_n\end{bmatrix} v = ⎣ ⎢ ⎢ ⎢ ⎢ ⎡ v 1 v 2 ⋮ v n ⎦ ⎥ ⎥ ⎥ ⎥ ⎤ ,则 a u + b v = [ a u 1 + b v 1 a u 2 + b v 2 ⋮ a u n + b v n ] au+bv=\begin{bmatrix}au_1+bv_1\\ au_2+bv_2\\ \vdots\\ au_n+bv_n\end{bmatrix} a u + b v = ⎣ ⎢ ⎢ ⎢ ⎢ ⎡ a u 1 + b v 1 a u 2 + b v 2 ⋮ a u n + b v n ⎦ ⎥ ⎥ ⎥ ⎥ ⎤ ,m × n m \times n m × n 大小的矩阵 是 m n mn m n 个复数的集合排列成 m m m 行 n n n 列,如下:
M = [ M 11 M 12 ⋯ M 1 n M 21 M 22 ⋯ M 2 n ⋮ ⋮ ⋱ ⋮ M m 1 M m 2 ⋯ M m n ] M=\begin{bmatrix} M_{11} & M_{12} & \cdots & M_{1n} \\ M_{21} & M_{22} & \cdots & M_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ M_{m1} & M_{m2} & \cdots & M_{mn} \end{bmatrix} M = ⎣ ⎢ ⎢ ⎢ ⎢ ⎡ M 1 1 M 2 1 ⋮ M m 1 M 1 2 M 2 2 ⋮ M m 2 ⋯ ⋯ ⋱ ⋯ M 1 n M 2 n ⋮ M m n ⎦ ⎥ ⎥ ⎥ ⎥ ⎤
注意 n n n 维向量只是 n × 1 n \times 1 n × 1 维大小的矩阵。与向量一样,可以将矩阵与数字 c c c 相乘,以获得一个新矩阵,其中每项都与 c c c 相乘,并且可以将两个大小相同的矩阵相加以生成一个新矩阵,其项是两个矩阵对应项的总和。
# 矩阵乘法和张量积还可将 m × n m \times n m × n 维矩阵 M M M 和 n × p n \times p n × p 维矩阵 N N N 相乘,以得到如下一个新的 m × p m \times p m × p 维矩阵 P P P :
[ M 11 M 12 ⋯ M 1 n M 21 M 22 ⋯ M 2 n ⋮ ⋮ ⋱ ⋮ M m 1 M m 2 ⋯ M m n ] [ N 11 N 12 ⋯ N 1 p N 21 N 22 ⋯ N 2 p ⋮ ⋮ ⋱ ⋮ N n 1 N n 2 ⋯ N n p ] = [ P 11 P 12 ⋯ P 1 p P 21 P 22 ⋯ P 2 p ⋮ ⋮ ⋱ ⋮ P m 1 P m 2 ⋯ P m p ] \begin{aligned} \begin{bmatrix} M_{11} & M_{12} & \cdots & M_{1n} \\ M_{21} & M_{22} & \cdots & M_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ 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} \\ \vdots & \vdots & \ddots & \vdots \\ 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} \\ \vdots & \vdots & \ddots & \vdots \\ P_{m1} & P_{m2} & \cdots & P_{mp} \end{bmatrix} \end{aligned} ⎣ ⎢ ⎢ ⎢ ⎢ ⎡ M 1 1 M 2 1 ⋮ M m 1 M 1 2 M 2 2 ⋮ M m 2 ⋯ ⋯ ⋱ ⋯ M 1 n M 2 n ⋮ M m n ⎦ ⎥ ⎥ ⎥ ⎥ ⎤ ⎣ ⎢ ⎢ ⎢ ⎢ ⎡ N 1 1 N 2 1 ⋮ N n 1 N 1 2 N 2 2 ⋮ N n 2 ⋯ ⋯ ⋱ ⋯ N 1 p N 2 p ⋮ N n p ⎦ ⎥ ⎥ ⎥ ⎥ ⎤ = ⎣ ⎢ ⎢ ⎢ ⎢ ⎡ P 1 1 P 2 1 ⋮ P m 1 P 1 2 P 2 2 ⋮ P m 2 ⋯ ⋯ ⋱ ⋯ P 1 p P 2 p ⋮ P m p ⎦ ⎥ ⎥ ⎥ ⎥ ⎤
其中,P P P 的每项是 P i k = ∑ j M i j N j k P_{ik}=\sum_j M_{ij}N_{jk} P i k = ∑ j M i j N j k 。例如,P 11 P_{11} P 1 1 是 M M M 的第一行和 N N N 的第一列的内积。注意,由于向量只是矩阵的一种特殊情况,因此,此定义扩展到矩阵 - 向量乘法。
我们考虑的所有矩阵将是行数和列数相等的方阵,或者是仅对应一列的向量。一个特殊的方阵是单位矩阵,用 I I I 表示,其所有对角元素等于 1 1 1 ,其余元素等于 0 0 0 :
I = [ 1 0 ⋯ 0 0 1 ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ 1 ] I=\begin{bmatrix} 1 & 0 & \cdots & 0\\ 0 & 1 & \cdots & 0\\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & 1 \end{bmatrix} I = ⎣ ⎢ ⎢ ⎢ ⎢ ⎡ 1 0 ⋮ 0 0 1 ⋮ 0 ⋯ ⋯ ⋱ ⋯ 0 0 ⋮ 1 ⎦ ⎥ ⎥ ⎥ ⎥ ⎤
对于方阵 A A A ,如果 A B = B A = I AB=BA=I A B = B A = I ,则矩阵 B B B 是它的逆矩阵 。矩阵的逆不一定存在,但是当它存在时它是唯一的且用 A − 1 A^{-1} A − 1 表示。对于任何矩阵 M M M ,M M M 的伴随或共轭转置为矩阵 N N N ,使的 N i j = M j i ∗ N_{ij}=M_{ji}^* N i j = M j i ∗ 。M M M 的伴随也经常表示为 M † M^\dagger M † 。如果 U U † = U † U = I UU^\dagger = U^\dagger U = I U U † = U † U = I 或者等效成 U − 1 = U † U^{-1} = U^\dagger U − 1 = U † ,我们说矩阵 U U U 是么正矩阵 (酉矩阵)。么正矩阵最重要的特性也许是它们保持向量的范数。这是因为:
⟨ v , v ⟩ = v † v = v † U − 1 U v = v † U † U v = ⟨ U v , U v ⟩ \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 ⟨ v , v ⟩ = v † v = v † U − 1 U v = v † U † U v = ⟨ U v , U v ⟩
如果 M = M † M=M^\dagger M = M † ,矩阵 M M M 叫做厄密矩阵
另一个重要的运算是张量积 (或者克罗内克积、矩阵直积。在量子计算理论中,张量积通常用于表示克罗内克积)。张量积完全不同于矩阵乘法。
考虑两列向量 v = [ a b ] v=\begin{bmatrix}a\\ b\end{bmatrix} v = [ a b ] 和 u = [ c d e ] u=\begin{bmatrix}c\\ d\\ e\end{bmatrix} u = ⎣ ⎢ ⎡ c d e ⎦ ⎥ ⎤ ,其克罗内克积表示为 v ⊗ u v\otimes u v ⊗ u ,产生一个分块矩阵:
[ a b ] ⊗ [ c d e ] = [ a [ c d e ] b [ c d e ] ] = [ a c a d a e b c b d b e ] \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}ac\\ ad\\ ae\\ bc\\ bd\\ be\end{bmatrix} [ a b ] ⊗ ⎣ ⎢ ⎡ c d e ⎦ ⎥ ⎤ = ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎡ a ⎣ ⎢ ⎡ c d e ⎦ ⎥ ⎤ b ⎣ ⎢ ⎡ c d e ⎦ ⎥ ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎤ = ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎡ a c a d a e b c b d b e ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎤
克罗内克积是对任意大小的两个矩阵或向量进行的运算。m × n m \times n m × n 维矩阵 M M M 和 p × q p \times q p × q 维矩阵 N N N 的张量积是如下一个从 M M M 和 N N N 获得的更大的 m p × n q mp \times nq m p × n q 维矩阵 P = M ⊗ N P=M\otimes N P = M ⊗ N :
M ⊗ N = [ M 11 ⋯ M 1 n ⋮ ⋱ ⋮ M m 1 ⋯ M m n ] ⊗ [ N 11 ⋯ N 1 q ⋮ ⋱ ⋮ N p 1 ⋯ N p q ] = [ M 11 [ N 11 ⋯ N 1 q ⋮ ⋱ ⋮ N p 1 ⋯ N p q ] ⋯ M 1 n [ N 11 ⋯ N 1 q ⋮ ⋱ ⋮ N p 1 ⋯ N p q ] ⋮ ⋱ ⋮ M m 1 [ N 11 ⋯ N 1 q ⋮ ⋱ ⋮ N p 1 ⋯ N p q ] ⋯ M m n [ N 11 ⋯ N 1 q ⋮ ⋱ ⋮ N p 1 ⋯ N p q ] ] \begin{aligned} M \otimes N &= \begin{bmatrix} M_{11} & \cdots & M_{1n} \\ \vdots & \ddots & \vdots \\ M_{m1} & \cdots & M_{mn} \end{bmatrix} \otimes \begin{bmatrix} N_{11} & \cdots & N_{1q}\\ \vdots & \ddots & \vdots \\ N_{p1} & \cdots & N_{pq} \end{bmatrix}\\ &=\begin{bmatrix} M_{11} \begin{bmatrix} N_{11} & \cdots & N_{1q} \\ \vdots & \ddots & \vdots \\ N_{p1} & \cdots & N_{pq} \end{bmatrix} & \cdots & M_{1n} \begin{bmatrix} N_{11} & \cdots & N_{1q} \\ \vdots & \ddots & \vdots \\ N_{p1} & \cdots & N_{pq} \end{bmatrix}\\ \vdots & \ddots & \vdots \\ M_{m1} \begin{bmatrix} N_{11} & \cdots & N_{1q} \\ \vdots & \ddots & \vdots \\ N_{p1} & \cdots & N_{pq} \end{bmatrix} & \cdots & M_{mn} \begin{bmatrix} N_{11} & \cdots & N_{1q} \\ \vdots & \ddots & \vdots \\ N_{p1} & \cdots & N_{pq} \end{bmatrix} \end{bmatrix} \end{aligned} M ⊗ N = ⎣ ⎢ ⎢ ⎡ M 1 1 ⋮ M m 1 ⋯ ⋱ ⋯ M 1 n ⋮ M m n ⎦ ⎥ ⎥ ⎤ ⊗ ⎣ ⎢ ⎢ ⎡ N 1 1 ⋮ N p 1 ⋯ ⋱ ⋯ N 1 q ⋮ N p q ⎦ ⎥ ⎥ ⎤ = ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎡ M 1 1 ⎣ ⎢ ⎢ ⎡ N 1 1 ⋮ N p 1 ⋯ ⋱ ⋯ N 1 q ⋮ N p q ⎦ ⎥ ⎥ ⎤ ⋮ M m 1 ⎣ ⎢ ⎢ ⎡ N 1 1 ⋮ N p 1 ⋯ ⋱ ⋯ N 1 q ⋮ N p q ⎦ ⎥ ⎥ ⎤ ⋯ ⋱ ⋯ M 1 n ⎣ ⎢ ⎢ ⎡ N 1 1 ⋮ N p 1 ⋯ ⋱ ⋯ N 1 q ⋮ N p q ⎦ ⎥ ⎥ ⎤ ⋮ M m n ⎣ ⎢ ⎢ ⎡ N 1 1 ⋮ N p 1 ⋯ ⋱ ⋯ N 1 q ⋮ N p q ⎦ ⎥ ⎥ ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎤
通过一些示例可以更好地说明这一点:
[ a b c d ] ⊗ [ e f g h ] = [ a [ e f g h ] b [ e f g h ] c [ e f g h ] d [ e f g h ] ] = [ a e a f b e b f a g a h b g b h c e c f d e d f c g c h d g d h ] \begin{aligned} \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} \end{aligned} [ a c b d ] ⊗ [ e g f h ] = ⎣ ⎢ ⎢ ⎢ ⎡ a [ e g f h ] b [ e g f h ] c [ e g f h ] d [ e g f h ] ⎦ ⎥ ⎥ ⎥ ⎤ = ⎣ ⎢ ⎢ ⎢ ⎡ a e a g c e c g a f a h c f c h b e b g d e d g b f b h d f d h ⎦ ⎥ ⎥ ⎥ ⎤
关于张量积的最后一个有用的符号约定是,对于任何向量 v v v 或矩阵 M M M ,v ⊗ n v^{\otimes n} v ⊗ n 或 M ⊗ n M^{\otimes n} M ⊗ n 是 n n n 倍重复张量积的简写。例如:
[ 1 0 ] ⊗ 1 = [ 1 0 ] [ 1 0 ] ⊗ 2 = [ 1 0 0 0 ] [ 1 − 1 ] ⊗ 2 = [ 1 − 1 − 1 1 ] [ 0 1 1 0 ] ⊗ 1 = [ 0 1 1 0 ] [ 0 1 1 0 ] ⊗ 2 = [ 0 0 01 0 0 1 0 0 1 0 0 1 0 0 0 ] \begin{aligned} &\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} \\[2em] &\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{aligned} [ 1 0 ] ⊗ 1 = [ 1 0 ] [ 1 0 ] ⊗ 2 = ⎣ ⎢ ⎢ ⎢ ⎡ 1 0 0 0 ⎦ ⎥ ⎥ ⎥ ⎤ [ 1 − 1 ] ⊗ 2 = ⎣ ⎢ ⎢ ⎢ ⎡ 1 − 1 − 1 1 ⎦ ⎥ ⎥ ⎥ ⎤ [ 0 1 1 0 ] ⊗ 1 = [ 0 1 1 0 ] [ 0 1 1 0 ] ⊗ 2 = ⎣ ⎢ ⎢ ⎢ ⎡ 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0 ⎦ ⎥ ⎥ ⎥ ⎤
# 哈达玛矩阵及哈达玛变换# 哈达玛矩阵在数学中,哈达马( Hadamard ) 矩阵 是一个方阵,每个元素都是 + 1 +1 + 1 或 − 1 -1 − 1 ,每行都是互相正交的。哈达马矩阵常用于纠错码,如 Reed-Muller 码。哈达马矩阵的命名来自于法国数学家雅克・哈达马。
# 性质n n n 阶的哈达马矩阵 H H H 满足下面的式子
H H T = n I n HH^T=nI_n H H T = n I n
这里 I n I_n I n 是 n × n n×n n × n 的单位矩阵 。
假设 M 是一个 n n n 阶的实矩阵,它的每个元素都是有界的
∣ M i j ∣ ≤ 1 |M_{ij}|≤1 ∣ M i j ∣ ≤ 1
则存在哈达马不等式 :
∣ d e t ( M ) ∣ ⩽ n n / 2 |det(M)|\leqslant n^{n/2} ∣ d e t ( M ) ∣ ⩽ n n / 2
当且仅当 M M M 是哈达马矩阵式上式取等号。
哈达马矩阵的阶数必须是 1 1 1 、2 2 2 ,或者是 4 4 4 的倍数。
# 西尔维斯特构造法哈达马矩阵最初的构造的例子是由詹姆斯・西尔维斯特 给出的。假设 H H H 是一个 n n n 阶的哈达马矩阵,则下面的矩阵:
[ H H H − H ] \begin{bmatrix} H & H \\ H & -H \end{bmatrix} [ H H H − H ]
给出一个 2 n 2n 2 n 阶的哈达马矩阵。连续使用这个方法,我们可以给出下面的一系列矩阵:
H 1 = [ 1 ] H 2 = [ 1 1 1 − 1 ] H 4 = [ 1 1 1 1 1 − 1 1 − 1 1 1 1 1 1 − 1 1 − 1 ] ⋮ \begin{aligned} H_1&=[1]\\[0.5em] H_2&=\begin{bmatrix} 1 & 1 \\ 1 & -1 \end{bmatrix} \\[0.5em] H_4&=\begin{bmatrix} 1 & 1 & 1 & 1 \\ 1 & -1 & 1 & -1 \\ 1 & 1 & 1 & 1 \\ 1 & -1 & 1 & -1 \end{bmatrix} \\[0.5em] &\;\;\vdots \end{aligned} H 1 H 2 H 4 = [ 1 ] = [ 1 1 1 − 1 ] = ⎣ ⎢ ⎢ ⎢ ⎡ 1 1 1 1 1 − 1 1 − 1 1 1 1 1 1 − 1 1 − 1 ⎦ ⎥ ⎥ ⎥ ⎤ ⋮
利用这种方法,西尔维斯特成功地构造了任何 2 k 2^k 2 k 阶哈达马矩阵,其中 k k k 为非负整数。
西尔维斯特给出的矩阵有些特殊的性质。他们都是对称矩阵 ,并且这些矩阵的迹 都是 0 0 0 。第一行和第一列的元素都是 + 1 +1 + 1 ,其他各行各列的元素都是一半 + 1 +1 + 1 ,一半 − 1 -1 − 1 。这些矩阵和沃尔什函数 有密切的关系。
# 哈达马猜想在哈达马矩阵理论最重要的开放性问题 (即尚且无法判断对错的问题) 是存在性的问题,即 哈达马猜想 :对于每个 4 4 4 的倍数 n = 4 k n=4k n = 4 k ,k k k 为自然数,都存在 n n n 阶的哈达马矩阵。
西尔维斯特构造法给出了阶数为 1 , 2 , 4 , 8 , 16 , 32 1, 2, 4, 8, 16, 32 1 , 2 , 4 , 8 , 1 6 , 3 2 等等的哈达马矩阵,之后哈达马本人给出了阶数为 12 12 1 2 和 20 20 2 0 的哈达马矩阵。雷蒙・巴雷 随后给出了任何 q + 1 q+1 q + 1 阶的哈达马矩阵的方法,其中 q q q 是任何模 4 4 4 为 3 3 3 的质数 任意次幂。他也给出了形式为 2 ( q + 1 ) 2(q+1) 2 ( q + 1 ) 的阿达马矩阵的方法,其中 q q q 是任何模 4 4 4 为 1 1 1 的质数 任意次幂。他使用了有限域 的办法得出了这些结论。哈达马猜想很可能就是 Paley 提出的。现在有了更多的构造哈达马矩阵的办法。
2004 年 6 月 21 日,Hadi Kharaghani 和 Behruz Tayfeh-Rezaie 宣布构造出了 428 428 4 2 8 阶的哈达马矩阵。现在最小的尚未被构造出来的 4 k 4k 4 k 阶哈达马矩阵是 668 668 6 6 8 阶。
# 哈达马变换哈达马( Hadamard ) 变换( transform ) ,或称 沃尔什 - 哈达玛转换 ,是一种广义傅立叶( Fourier ) 变换( transform ) ,作为变换编码 的一种在影片编码当中使用有很久的历史。在近来的影片编码标准中,哈达马变换多被用来计算 SATD(一种影片残差 信号大小的衡量)。
在数字信号处理 大型集成电路算法的领域中,哈达马变换是一种简单且重要的算法 之一,主要能针对频谱 做快速的分析。
# 变换矩阵在 H.264 中使用了 4 4 4 阶和 8 8 8 阶的哈达马变换来计算 SATD ,其变换矩阵为:
H 4 = [ 1 1 1 1 1 − 1 1 − 1 1 1 1 1 1 − 1 1 − 1 ] H 8 = [ 1 1 1 1 1 1 1 1 1 − 1 1 − 1 1 − 1 1 − 1 1 1 − 1 − 1 1 1 − 1 − 1 1 − 1 − 1 1 1 − 1 − 1 1 1 1 1 1 − 1 − 1 − 1 − 1 1 − 1 1 − 1 − 1 1 − 1 1 1 − 1 − 1 1 − 1 1 1 − 1 ] \begin{aligned} H_4=\begin{bmatrix} 1 & 1 & 1 & 1 \\ 1 & -1 & 1 & -1 \\ 1 & 1 & 1 & 1 \\ 1 & -1 & 1 & -1 \end{bmatrix} \\[1em] H_8=\begin{bmatrix} 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\ 1 & -1 & 1 & -1 & 1 & -1 & 1 & -1 \\ 1 & 1 & -1 & -1 & 1 & 1 & -1 & -1 \\ 1 & -1 & -1 & 1 & 1 & -1 & -1 & 1 \\ 1 & 1 & 1 & 1 & -1 & -1 & -1 & -1 \\ 1 & -1 & 1 & -1 & -1 & 1 & -1 & 1 \\ 1 & -1 & -1 & 1 & -1 & 1 & 1 & -1 \end{bmatrix} \end{aligned} H 4 = ⎣ ⎢ ⎢ ⎢ ⎡ 1 1 1 1 1 − 1 1 − 1 1 1 1 1 1 − 1 1 − 1 ⎦ ⎥ ⎥ ⎥ ⎤ H 8 = ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎡ 1 1 1 1 1 1 1 1 − 1 1 − 1 1 − 1 − 1 1 1 − 1 − 1 1 1 − 1 1 − 1 − 1 1 1 − 1 1 1 1 1 1 − 1 − 1 − 1 1 − 1 1 − 1 − 1 1 1 1 1 − 1 − 1 − 1 − 1 1 1 − 1 − 1 1 − 1 1 − 1 ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎤
# SATD 计算方法当计算 4 × 4 4 \times 4 4 × 4 块 [ L 4 ] \begin{bmatrix}L_{4}\end{bmatrix} [ L 4 ] 的 SATD 时,先使用下面的方法进行二维的阿达马变换:
[ L 4 ′ ] = [ H 4 ] × [ L 4 ] × [ H 4 ] \begin{bmatrix}L_{4}^{\prime}\end{bmatrix} =\begin{bmatrix}H_{4}\end{bmatrix} \times\begin{bmatrix}L_{4}\end{bmatrix} \times\begin{bmatrix}H_{4}\end{bmatrix} [ L 4 ′ ] = [ H 4 ] × [ L 4 ] × [ H 4 ]
然后计算 [ L 4 ′ ] {\begin{bmatrix}L_{4}^{\prime}\end{bmatrix}} [ L 4 ′ ] 所有系数绝对值 之和并归一化 。
类似的,当计算 8 × 8 8 \times 8 8 × 8 块 [ L 8 ] \begin{bmatrix}L_{8}\end{bmatrix} [ L 8 ] 的 SATD 时,先使用下面的方法进行二维的 Hadamard 变换:
[ L 8 ′ ] = [ H 8 ] × [ L 8 ] × [ H 8 ] \begin{bmatrix}L_{8}^{\prime}\end{bmatrix} =\begin{bmatrix}H_{8}\end{bmatrix} \times\begin{bmatrix}L_{8}\end{bmatrix} \times\begin{bmatrix}H_{8}\end{bmatrix} [ L 8 ′ ] = [ H 8 ] × [ L 8 ] × [ H 8 ]
然后计算 [ L 8 ′ ] \begin{bmatrix}L_{8}^{\prime}\end{bmatrix} [ L 8 ′ ] 所有系数绝对值 之和并归一化 。
# 构建哈达马变换哈达马变换转换主要型式为 2 k 2^{k} 2 k 点的转换矩阵 ,其最小单位矩阵 为 2 × 2 2 \times 2 2 × 2 的哈达马变换矩阵,以下分别为二点、四点与如何产生 2 k 2^{k} 2 k 点的哈达马变换转换步骤。
二点哈达马变换转换:W 2 = [ 1 1 1 − 1 ] W_{2}=\begin{bmatrix}1&1\\1&-1\end{bmatrix}\\[-1em]\, W 2 = [ 1 1 1 − 1 ] 四点哈达马变换转换:W 4 = [ 1 1 1 1 1 1 − 1 − 1 1 − 1 − 1 1 1 − 1 1 − 1 ] W_{4}=\begin{bmatrix}1&1&1&1\\1&1&-1&-1\\1&-1&-1&1\\1&-1&1&-1\end{bmatrix}\, W 4 = ⎣ ⎢ ⎢ ⎢ ⎡ 1 1 1 1 1 1 − 1 − 1 1 − 1 − 1 1 1 − 1 1 − 1 ⎦ ⎥ ⎥ ⎥ ⎤ 产生2 k 2^{k} 2 k 点哈达马变换的步骤: 步骤一:V 2 k + 1 = [ W 2 k W 2 k W 2 k − W 2 k ] V_{2^{k+1}}=\begin{bmatrix}W_{2^k} & W_{2^k}\\W_{2^k} & -W_{2^k}\end{bmatrix}\, V 2 k + 1 = [ W 2 k W 2 k W 2 k − W 2 k ] 步骤二:根据正负号次序(正负号改变次数)将矩阵( Matrix ) 内的列向量做顺序上的重新排列V 2 k + 1 → W 2 k + 1 V_{2^{k+1}} \rightarrow W_{2^{k+1}} V 2 k + 1 → W 2 k + 1 。 # 范例V 4 = [ W 2 W 2 W 2 − W 2 ] = [ 1 1 1 1 1 − 1 1 − 1 1 1 − 1 − 1 1 − 1 − 1 1 ] V_{4}=\begin{bmatrix} W_{2} & W_{2} \\ W_{2} & -W_{2} \end{bmatrix} =\begin{bmatrix} 1 & 1 & 1 & 1 \\ 1 & -1 & 1 & -1 \\ 1 & 1 & -1 & -1 \\ 1 & -1 & -1 & 1 \end{bmatrix} V 4 = [ W 2 W 2 W 2 − W 2 ] = ⎣ ⎢ ⎢ ⎢ ⎡ 1 1 1 1 1 − 1 1 − 1 1 1 − 1 − 1 1 − 1 − 1 1 ⎦ ⎥ ⎥ ⎥ ⎤
W 4 = [ 1 1 1 1 1 1 − 1 − 1 1 − 1 − 1 1 1 − 1 1 − 1 ] W_{4}=\begin{bmatrix} 1 & 1 & 1 & 1 \\ 1 & 1 & -1 & -1 \\ 1 & -1 & -1 & 1 \\ 1 & -1 & 1 & -1 \end{bmatrix} W 4 = ⎣ ⎢ ⎢ ⎢ ⎡ 1 1 1 1 1 1 − 1 − 1 1 − 1 − 1 1 1 − 1 1 − 1 ⎦ ⎥ ⎥ ⎥ ⎤
V 8 = [ 1 1 1 1 1 1 1 1 1 1 − 1 − 1 1 1 − 1 − 1 1 − 1 − 1 1 1 − 1 − 1 1 1 − 1 1 − 1 1 − 1 1 − 1 1 1 1 1 − 1 − 1 − 1 − 1 1 1 − 1 − 1 − 1 − 1 1 1 1 − 1 − 1 1 − 1 1 1 − 1 1 − 1 1 − 1 − 1 1 − 1 1 ] V_{8}=\begin{bmatrix} 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\ 1 & 1 & -1 & -1 & 1 & 1 & -1 & -1 \\ 1 & -1 & -1 & 1 & 1 & -1 & -1 & 1 \\ 1 & -1 & 1 & -1 & 1 & -1 & 1 & -1 \\ 1 & 1 & 1 & 1 & -1 & -1 & -1 & -1 \\ 1 & 1 & -1 & -1 & -1 & -1 & 1 & 1 \\ 1 & -1 & -1 & 1 & -1 & 1 & 1 & -1 \\ 1 & -1 & 1 & -1 & -1 & 1 & -1 & 1 \end{bmatrix} V 8 = ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎡ 1 1 1 1 1 1 1 1 1 1 − 1 − 1 1 1 − 1 − 1 1 − 1 − 1 1 1 − 1 − 1 1 1 − 1 1 − 1 1 − 1 1 − 1 1 1 1 1 − 1 − 1 − 1 − 1 1 1 − 1 − 1 − 1 − 1 1 1 1 − 1 − 1 1 − 1 1 1 − 1 1 − 1 1 − 1 − 1 1 − 1 1 ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎤
W 8 = [ 1 1 1 1 1 1 1 1 1 1 1 1 − 1 − 1 − 1 − 1 1 1 − 1 − 1 − 1 − 1 1 1 1 1 − 1 − 1 1 1 − 1 − 1 1 − 1 − 1 1 1 − 1 − 1 1 1 − 1 − 1 1 − 1 1 1 − 1 1 − 1 1 − 1 − 1 1 − 1 1 1 − 1 1 − 1 1 − 1 1 − 1 ] W_{8}=\begin{bmatrix} 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\ 1 & 1 & 1 & 1 & -1 & -1 & -1 & -1 \\ 1 & 1 & -1 & -1 & -1 & -1 & 1 & 1 \\ 1 & 1 & -1 & -1 & 1 & 1 & -1 & -1 \\ 1 & -1 & -1 & 1 & 1 & -1 & -1 & 1 \\ 1 & -1 & -1 & 1 & -1 & 1 & 1 & -1 \\ 1 & -1 & 1 & -1 & -1 & 1 & -1 & 1 \\ 1 & -1 & 1 & -1 & 1 & -1 & 1 & -1 \end{bmatrix} W 8 = ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎡ 1 1 1 1 1 1 1 1 1 1 1 1 − 1 − 1 − 1 − 1 1 1 − 1 − 1 − 1 − 1 1 1 1 1 − 1 − 1 1 1 − 1 − 1 1 − 1 − 1 1 1 − 1 − 1 1 1 − 1 − 1 1 − 1 1 1 − 1 1 − 1 1 − 1 − 1 1 − 1 1 1 − 1 1 − 1 1 − 1 1 − 1 ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎤
特性
正交性 :∑ n = 0 N − 1 W [ h , n ] W [ m , n ] = 0 , 如果 h ≠ m \sum_{n=0}^{N-1}W[h,n]W[m,n]=0,\quad \text{如果}\,h\neq m\, ∑ n = 0 N − 1 W [ h , n ] W [ m , n ] = 0 , 如果 h = m # 特征值和特征向量 现在,我们将矩阵操作扩展到特征值、特征向量 和指数 ,这构成了我们需要描述和实现量子算法的一组基本工具。
设 M M M 是一个方阵,v v v 是一个非全零向量。对于数字 c c c ,如果 M v = c v Mv = cv M v = c v ,我们说 v v v 是 M M M 的一个特征向量 ,c c c 是相应特征向量的特征值。一般而言,矩阵 M M M 可以将向量转换为任何其他向量,但是特征向量是特殊的,因为除了乘以一个数字外,它保持不变。如果 v v v 是特征值为 c c c 的特征向量,那么 a v av a v 也是相同特征值的特征向量(对于任何非零的 a a a )。
例如,对于单位矩阵,每个向量 v v v 是一个特征值为 1 1 1 的特征向量。
再如,考虑一个对角线上只有非零项的对角矩阵 :
D = [ d 1 0 0 0 d 2 0 0 0 d 3 ] D=\begin{bmatrix} d_1 & 0 & 0 \\ 0 & d_2 & 0 \\ 0 & 0 & d_3 \end{bmatrix} D = ⎣ ⎢ ⎡ d 1 0 0 0 d 2 0 0 0 d 3 ⎦ ⎥ ⎤
向量 [ 1 0 0 ] \begin{bmatrix}1\\0\\0\end{bmatrix} ⎣ ⎢ ⎡ 1 0 0 ⎦ ⎥ ⎤ 、[ 0 1 0 ] \begin{bmatrix}0\\1\\0\end{bmatrix} ⎣ ⎢ ⎡ 0 1 0 ⎦ ⎥ ⎤ 和 [ 0 0 1 ] \begin{bmatrix}0\\0\\1\end{bmatrix} ⎣ ⎢ ⎡ 0 0 1 ⎦ ⎥ ⎤ 是特征值分别是 d 1 d_1 d 1 ,d 2 d_2 d 2 和 d 3 d_3 d 3 的矩阵的特征向量。如果 d 1 d_1 d 1 ,d 2 d_2 d 2 和 d 3 d_3 d 3 是不同的数字,那么这些向量(及其倍数)是矩阵 D D D 的唯一特征向量。通常,对于对角矩阵,很容易读取特征值和特征向量。特征值是出现在对角线上的所有数字,它们各自的特征向量是单位向量,其中一个项等于 1 1 1 ,其余项等于 0 0 0 。
注意上面的例子中 D D D 的特征向量构成一个 3 3 3 维向量的基底。基底是一组向量,这样任何向量都可以写成它们的线性组合。更明确地说,对于任何数字 a 1 a_1 a 1 ,a 2 a_2 a 2 和 a 3 a_3 a 3 ,如果向量 v v v 可以被写成是 v = a 1 v 1 + a 2 v 2 + a 3 v 3 v=a_1v_1+a_2v_2+a_3v_3 v = a 1 v 1 + a 2 v 2 + a 3 v 3 ,则 v 1 v_1 v 1 ,v 2 v_2 v 2 和 v 3 v_3 v 3 构成一个基底。
当么正矩阵是一个复方阵,其逆等于其伴随或复共轭转置,回想一个厄米矩阵(也被叫做自伴随)是一个等于其自身的复共轭转置的复方阵。对于厄米矩阵和么正矩阵,它们本质上是量子计算中遇到的唯一矩阵,有一个一般的结果称为谱定理 ,其断言如下:对于任何厄米矩阵或么正矩阵,存在一个么正矩阵 U U U 关于任何对角矩阵 D D D 满足 M = U † D U M=U^\dagger DU M = U † D U 。此外,D D D 对角线上的各项将是 M M M 的特征值。
我们已经知道如何计算对角矩阵 D D D 的特征值和特征向量。利用这个定理,我们知道如果 v v v 是 D D D 的一个特征值为 c c c 的特征向量,即,D v = c v Dv = cv D v = c v ,然后 U † v U^\dagger v U † v 是 M M M 的一个特征值为 c c c 的特征向量。这是因为
M ( U † v ) = U † D U ( U † v ) = U † D ( U U † ) v = U † D v = c U † v M(U^\dagger v) = U^\dagger D U (U^\dagger v) =U^\dagger D (U U^\dagger) v = U^\dagger D v = c U^\dagger v M ( U † v ) = U † D U ( U † v ) = U † D ( U U † ) v = U † D v = c U † v
# 矩阵指数矩阵指数也可以完全类比于指数函数。矩阵 A A A 的矩阵指数可以表示为
e A = I + A + A 2 2 ! + A 3 3 ! + ⋯ e^A=I+A+\frac{A^2}{2!}+\frac{A^3}{3!}+\cdots e A = I + A + 2 ! A 2 + 3 ! A 3 + ⋯
这很重要,因为量子力学时间演化描述为关于厄米矩阵 B B B 的 e i B e^{iB} e i B 形式的么正矩阵。因此,执行矩阵指数是量子计算的基本部分,因此 Q# 提供了描述这些操作的内部例程。实际上,有许多方法可以在经典计算机上计算矩阵指数,并且通常在数值上近似于这样的指数充满了危险。
理解如何计算矩阵指数的最简单方法是通过该矩阵的特征值和特征向量。具体来说,上面讨论的谱定理表明,对于每个厄米矩阵或么正矩阵 A A A ,存在一个么正矩阵 U U U 和一个对角矩阵 D D D 满足 A = U † D U A=U^\dagger DU A = U † D U 。因为么正矩阵的性质,我们有 A 2 = U † D 2 U A^2=U^\dagger D^2U A 2 = U † D 2 U ,类似地,对于任何幂运算,A p = U † D p U A^p = U^\dagger D^pU A p = U † D p U 。如果将其替换为算符指数的算符定义,我们将获得:
e A = U † ( I + D + D 2 2 ! + ⋯ ) U = U † [ exp ( D 11 ) 0 ⋯ 0 0 exp ( D 22 ) ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ exp ( D N N ) ] U e^A=U^\dagger\left(I+D+\frac{D^2}{2!}+\cdots\right)U =U^\dagger\begin{bmatrix} \exp(D_{11}) & 0 & \cdots & 0 \\ 0 & \exp(D_{22}) & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \exp(D_{NN}) \end{bmatrix}U e A = U † ( I + D + 2 ! D 2 + ⋯ ) U = U † ⎣ ⎢ ⎢ ⎢ ⎢ ⎡ exp ( D 1 1 ) 0 ⋮ 0 0 exp ( D 2 2 ) ⋮ 0 ⋯ ⋯ ⋱ ⋯ 0 0 ⋮ exp ( D N N ) ⎦ ⎥ ⎥ ⎥ ⎥ ⎤ U
换言之,如果你转换为矩阵 A A A 的特征基底,则计算矩阵指数等效于计算矩阵特征值的普通指数。由于量子计算中的许多运算都涉及执行矩阵指数运算,因此转换为矩阵特征基底以简化运算符指数运算的技巧经常出现,并且是许多量子算法(如 Trotter–Suzuki 量子仿真方法)背后的基础。
另一个有用的性质是,如果 B B B 既是么正矩阵又是厄米矩阵,即 B = B − 1 = B † B=B^{-1}=B^\dagger B = B − 1 = B † 也就是 B 2 = 1 B^2=1 B 2 = 1 。通过将此规则应用于矩阵指数的上述展开式,并通过 1 1 1 和 B B B 项组合在一起,可以看出对于任何实数值 x x x ,恒等式
e i B x = 1 cos ( x ) + i B sin ( x ) e^{iBx}=1\cos(x)+iB\sin(x) e i B x = 1 cos ( x ) + i B sin ( x )
都成立。这个技巧特别有用,因为在 B B B 既是么正矩阵又是厄米矩阵的特殊情况下,即使 B B B 的维度呈指数增长,它可以推断矩阵指数所具有的行为。
# 参考链接