量子コンピューティングのベクトルと行列
量子コンピューティングを理解するには、線形代数に関する知識が不可欠です。 この記事では、線形代数の基本的な概念と、量子コンピューティングでベクトルと行列を操作する方法について説明します。
ベクトル
次元 (またはサイズ) $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$の場合unit ベクトルと呼ばれます。
列ベクトル $v$ の adjoint は、$v^\dagger$ として示される行ベクトルであり、$v$ のコンジュゲートトランスポーズとして定義されます。 次元 $n$ の列ベクトル $v$ の場合、隣接する要素は次元 $1 \times n$の行ベクトルです。
$\begin{bmatrix}v_1 \ \vdots \ v_n \end{bmatrix}^\dagger=\begin{bmatrix}v_1^* & \cdots& v_n^* \end{bmatrix}$
ここで、 $v_i^*$ は、 $v_i$の複素共役を表します。
線形代数を使用すると、量子ビット $\psi= a \ket{0} + b \ket{1}$ の状態は量子状態ベクトル$\begin{bmatrix} a \ b \end{bmatrix}$ として記述されます ($|a|^2 + |b|^2 = 1$)。 詳細については、「 量子ビット」を参照してください。
スカラー積
2 つのベクトルは、 scalar product ( dot product または inner product とも呼ばれます) を介して乗算できます。 名前が示すように、2 つのベクトルのスカラー積の結果はスカラーです。 スカラー積は、あるベクトルを別のベクトルに投影し、1 つのベクトルを他のより単純なベクトルの合計として表現するために使用されます。 2 つの列ベクトル $u$ と $v$ の間のスカラー積は、 $\left\langle u、v\right\rangle= u^\dagger v $ として定義されます。
$$\left\langle u、v\right\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}$ として書き込むことができます。
ベクトルに数値 $a$ を乗算して、エントリに $a$を乗算する新しいベクトルを形成できます。 2 つのベクトル $u$ と $v$ を追加して、新しいベクトルを形成することもできます。この新しいベクトルの成分は、$u$ と $v$ の成分の合計です。 これらの操作を次に示します。
$ au+bv =\begin{bmatrix} au_1+bv_1\\ au_2+bv_2\\ \vdots\\ au_n+bv_n \end{bmatrix}$
マトリックス
サイズ $m \times n$ のmatrixは、次に示すように、$m$行と$n$列に配置された$m\cdot 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}$
Note
$n$ 次元のベクトルは、単にサイズ $n \times 1$ の行列であることに注意してください。
量子演算は、 二乗行列、つまり行と列の数が等しいによって表されます。 たとえば、単一量子ビット演算は、Pauli $X などの $2 \times 2$ 行列で表$
$$X =\begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix}$$
ヒント
Q#では、Pauli $X$ 操作はX
操作によって表されます。
ベクトルと同様に、行列に数値 $c$ を乗算して、すべてのエントリに $c$を乗算する新しい行列を取得し、同じサイズの 2 つの行列を追加して、エントリが 2 つの行列のそれぞれのエントリの合計である新しい行列を生成できます。
行列乗算
次のように、次元 $m \times n$ の M$$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}$は、$N$ の最初の列を持つ$M$の最初の行のスカラー積です。 ベクトルは単に行列の特殊なケースであるため、この定義は行列ベクトル乗算に拡張されることに注意してください。
特殊な種類のマトリックス
1 つの特殊な正方行列は、$\mathbb{\mathbb{I}$ で表される恒等行列です。この行列は、すべての対角要素が $1$ に等しく、残りの要素は $0$ に等しくなります。
$\mathbb{\mathbb{I}=\begin{bmatrix} 1 0 \cdots 0\\ 0 1 \cdots 0\\\ddots\\ 0 0 \cdots 1 \end{bmatrix}。$
正方形の行列$A$の場合、AB = BA =\mathbb{\mathbb{I}$$場合$行列$Bはそのinverseです。 行列 $A$ に逆行列がある場合、逆行列は一意であり、 $A^{-1}$として書き込まれます。
任意の行列 $M$ に関して、$M$ の随伴または共役転置は行列 $N$ であり、$N_{ij}= M_{ji}^*$ のようになります。 $M$の隣接部分は、$M^\dagger$で示されます。
$UU^\dagger= U^\dagger U =\mathbb{I}$ (または等価的に $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$
Note
量子演算は、隣接する行列が逆行列と等しい二乗行列であるユニタリ行列によって表されます。
$M=^\dagger$の場合、行列$M$はHermitianと呼ばれます。
量子コンピューティングでは、基本的に 2 つの行列 (エルミートとユニタリ) のみ使用されます。
テンソル積
もう 1 つの重要な操作は、 tensor 製品、 matrix 直接製品 または Kronecker 製品とも呼ばれます。
2 つのベクトル $v=\begin{bmatrix}a \\ b \end{bmatrix}$ と $u =\begin{bmatrix} c \\ d \end{bmatrix}$について考えます。 それらのテンソル積は $v \otimes u$ と表され、結果はブロック行列になります。
$$\begin{bmatrix} a \\ b \end{bmatrix}\otimes\begin{bmatrix} c \\ d \end{bmatrix}=\begin{bmatrix} a \begin{bmatrix} c \\ d \end{bmatrix} b \begin{bmatrix} c \\ d \end{bmatrix}\end{bmatrix}=\begin{bmatrix} a c \\ a d \\ b c \\ b d \end{bmatrix}$$
Note
テンソル積は行列乗算と区別され、これはまったく異なる演算であることに注意してください。
テンソル積は、複数の量子ビットの結合状態を表すために使用されます。 量子コンピューティングの真のパワーは、計算を実行するために複数の量子ビットを利用することによって生まれます。 詳細については、「 Operations on multiple qubits」を参照してください。