次の方法で共有


量子コンピューティングのベクトルと行列

量子コンピューティングを理解するには、線形代数に関する知識が不可欠です。 この記事では、線形代数の基本的な概念と、量子コンピューティングでベクトルと行列を操作する方法について説明します。

ベクトル

次元 (またはサイズ) $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$の複素共役を表します。

線形代数を使用して、\ket{0} + b \ket{1}$$\psi=量子ビットの状態は、量子状態ベクトル$\begin{bmatrix} \\ 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$ の成分の合計です。 これらの操作を次に示します。

$$\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$ の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\timesmの行列$M$$と次元$n\timesp$の行列$N$を乗算して、次元$m\timesp$の新しい行列$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_{n1}\\\ddots\\ N_{}~~ 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}\\[1.5em] b \begin{bmatrix} c \\ d \end{bmatrix}\end{bmatrix}=\begin{bmatrix} a d \\ a d \\ b c \\ b d \end{bmatrix}$$

Note

テンソル積は行列乗算と区別され、これはまったく異なる演算であることに注意してください。

テンソル積は、複数の量子ビットの結合状態を表すために使用されます。 量子コンピューティングの真のパワーは、計算を実行するために複数の量子ビットを利用することによって生まれます。 詳細については、「 Operations on multiple qubits」を参照してください。

サイズ $n\times n$ の 2 つの正方形行列$M$と$N$のテンソル積は、サイズ $n^2 \times n^$2 の大きい行列 $P=M\otimes N$ です。 次に例を示します。

$$\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}。 $$

固有値と固有ベクトル

正方形の行列 $M$ ベクトル $v$を考えてみましょう。 $Mv = cv$ ($c$ には何らかの数値が入ります) である場合に、ベクトル $v$ が $M$ の "固有ベクトル" です。 整数 $c$ は固有ベクトル $v$ に対応する "固有値" です。

一般に、行列 $M$ により、ベクトルを他のベクトルに変換できます。 固有ベクトルは、数値を乗算する以外は変更されないため、特殊です。 $v$が固有値$c$を持つ固有ベクトルの場合、$av$も同じ固有値を持つ固有ベクトル (0 以外の$a$) になります。 たとえば、ID 行列の場合、すべてのベクトル $v$ は固有値 $1$ を持つ固有ベクトルになります。

もう 1 つの例として、対角線に 0 以外のエントリのみを持つ "対角行列"$ D$ を考えてみます。

$$\begin{bmatrix} d_1 & 0 & 0 \\ 0 & d_2 & 0 \\ 0 & 0 & d_3 \end{bmatrix}。 $$

ベクトル

$$\begin{bmatrix}1 \\ 0 \\ 0 \end{bmatrix}、\begin{bmatrix}0 \\ 1 \\ 0\end{bmatrix}\text{、}\begin{bmatrix}0 \\ 0 \\ 1\end{bmatrix}$$ は、

それぞれ $d_1$、$d_2$、$d_3$ という固有値を持つこの行列の固有ベクトルとなります。 $d_1$、$d_2$、$d_3$ が個別の数値の場合、これらのベクトル (およびその倍数) は行列 $D$ の唯一の固有ベクトルとなります。

通常、対角行列の場合は、固有値と固有ベクトルを簡単に読み取ることができます。 固有値は対角線上に表示されるすべての数値であり、それぞれの固有ベクトルは、1 つのエントリが $1$ に等しく、残りのエントリが $0$ に等しい単位ベクトルになります。

この例では、 $D$ の固有ベクトルが $3次元ベクトルの基礎$形成されることに注意してください。 ベースはベクトルのセットであり、それらを線形の組み合わせとして書き込むことができます。 より明確にすると、ベクトル $v$ を $v=a_1 v_1 + a_2 v_2 + a_3 v_3$ ($a_1$、$a_2$、$a_3$ には何らかの数値が入ります) として記述することができる場合、$v_1$、$v_2$、$v_3$ がベースを形成します。