量子コンピュータ入門 #1:量子コンピュータのための数学基礎
サイエンス

量子コンピュータ入門 #1:量子コンピュータのための数学基礎

量子コンピュータの動作原理は、量子力学という物理法則に基づいています。そして量子力学の言語は「線形代数」です。 本記事では、以降の「量子コンピューティング入門」シリーズを読み進めるにあたり、前提となる数学的知識を整理します。大学の教養課程(線形代数・微積分)程度の知識があれば読みこなせるように記述します。

1. 複素数(Complex Numbers)

量子力学では、確率は実数ですが、その元となる「確率振幅」は複素数で記述されます。

基本定義

虚数単位 iii2=1i^2 = -1 で定義します。複素数 zz は実部 xx と虚部 yy を用いて以下のように表されます。

z=x+iy(x,yR)z = x + iy \quad (x, y \in \mathbb{R})

極形式とオイラーの公式

量子ビットの位相を理解する上で、極形式は極めて重要です。 複素数 zz は、原点からの距離(絶対値)r=z=x2+y2r = |z| = \sqrt{x^2 + y^2} と、偏角 θ\theta を用いて表せます。

z=r(cosθ+isinθ)z = r(\cos\theta + i\sin\theta)

ここで、オイラーの公式 eiθ=cosθ+isinθe^{i\theta} = \cos\theta + i\sin\theta を用いると、以下の簡潔な表現が得られます。

z=reiθz = r e^{i\theta}

共役複素数と絶対値の二乗

z=x+iyz = x + iy に対し、虚部の符号を反転させたものを共役複素数 zz^*(または zˉ\bar{z})と呼びます。

z=xiy=reiθz^* = x - iy = r e^{-i\theta}

量子力学で確率を計算する際、絶対値の二乗が頻出します。

z2=zz=(x+iy)(xiy)=x2+y2|z|^2 = z z^* = (x+iy)(x-iy) = x^2 + y^2


2. ベクトル空間とブラケット記法(Bra-ket Notation)

量子力学では、ポール・ディラックが考案した「ブラケット記法」を用いてベクトルを扱います。これに慣れることが最初のステップです。

ケットベクトル(Ket Vector)

列ベクトルを「ケット」と呼び、v|v\rangle と書きます。例えば、2次元複素ベクトル空間 C2\mathbb{C}^2 のベクトルは:

v=(v0v1),v0,v1C|v\rangle = \begin{pmatrix} v_0 \\ v_1 \end{pmatrix}, \quad v_0, v_1 \in \mathbb{C}

ブラベクトル(Bra Vector)

行ベクトルであり、ケットベクトルのエルミート共役(随伴:転置して複素共役をとったもの)を「ブラ」と呼び、v\langle v| と書きます。

v=(v)=(v0v1)\langle v| = (|v\rangle)^\dagger = (v_0^* \quad v_1^*)

\dagger(ダガー)はエルミート共役を表す記号です。

内積(Inner Product)

ブラとケットを組み合わせると内積になります(ブラ・ケット)。 a=(a0a1),b=(b0b1)|a\rangle = \begin{pmatrix} a_0 \\ a_1 \end{pmatrix}, |b\rangle = \begin{pmatrix} b_0 \\ b_1 \end{pmatrix} のとき、

ab=(a0a1)(b0b1)=a0b0+a1b1\langle a | b \rangle = (a_0^* \quad a_1^*) \begin{pmatrix} b_0 \\ b_1 \end{pmatrix} = a_0^* b_0 + a_1^* b_1

内積の結果は複素数(スカラー)になります。 自分自身との内積 vv\langle v | v \rangle は、ベクトルの長さ(ノルム)の2乗となり、必ず正の実数になります(v0|v\rangle \neq 0 の場合)。

vv=v02+v12=v2\langle v | v \rangle = |v_0|^2 + |v_1|^2 = ||v||^2

正規直交基底

量子コンピューティングでは、計算基底(Computational Basis)として以下の2つのベクトルをよく用います。

0=(10),1=(01)|0\rangle = \begin{pmatrix} 1 \\ 0 \end{pmatrix}, \quad |1\rangle = \begin{pmatrix} 0 \\ 1 \end{pmatrix}

これらは互いに直交し、長さが1です(正規直交)。

  • 正規性:00=1,11=1\langle 0 | 0 \rangle = 1, \quad \langle 1 | 1 \rangle = 1
  • 直交性:01=0,10=0\langle 0 | 1 \rangle = 0, \quad \langle 1 | 0 \rangle = 0

これをクロネッカーのデルタ δij\delta_{ij} を用いて ij=δij\langle i | j \rangle = \delta_{ij} と書くこともあります。


3. 線形演算子と行列

量子ゲートは、ベクトル空間上の線形変換(行列)として表現されます。

外積(Outer Product)

ケットとブラを ab|a\rangle\langle b| の順で並べると、行列(演算子)になります。 例えば C2\mathbb{C}^2 の場合:

ab=(a0a1)(b0b1)=(a0b0a0b1a1b0a1b1)|a\rangle\langle b| = \begin{pmatrix} a_0 \\ a_1 \end{pmatrix} (b_0^* \quad b_1^*) = \begin{pmatrix} a_0 b_0^* & a_0 b_1^* \\ a_1 b_0^* & a_1 b_1^* \end{pmatrix}

特に射影演算子 P0=00P_0 = |0\rangle\langle 0|P1=11P_1 = |1\rangle\langle 1| は重要です。

00=(10)(10)=(1000)|0\rangle\langle 0| = \begin{pmatrix} 1 \\ 0 \end{pmatrix} (1 \quad 0) = \begin{pmatrix} 1 & 0 \\ 0 & 0 \end{pmatrix}

ユニタリ行列(Unitary Matrix)

量子ゲートを表す行列 UU は、必ず ユニタリ行列 です。 定義は以下の通りです。

UU=UU=IU^\dagger U = U U^\dagger = I

ここで II は単位行列です。 ユニタリ行列の重要な性質は、ベクトルの内積(長さや角度)を保つ ことです。 ψ=Uψ,ϕ=Uϕ|\psi'\rangle = U|\psi\rangle, |\phi'\rangle = U|\phi\rangle とすると、

ψϕ=(Uψ)(Uϕ)=ψUUϕ=ψIϕ=ψϕ\langle \psi' | \phi' \rangle = (U|\psi\rangle)^\dagger (U|\phi\rangle) = \langle \psi | U^\dagger U | \phi \rangle = \langle \psi | I | \phi \rangle = \langle \psi | \phi \rangle

これは、量子計算の過程で確率の総和(ベクトルのノルムの2乗)が常に1に保たれることを保証します。

エルミート行列(Hermitian Matrix)

観測量(オブザーバブル)やハミルトニアン(エネルギー)を表す行列 HH は、エルミート行列 です。 定義は H=HH^\dagger = H、つまり自分自身が随伴行列と等しい行列です。

エルミート行列の重要な性質:

  1. 固有値はすべて実数である(観測結果は実数値で得られるため)。
  2. 異なる固有値に属する固有ベクトルは直交する

4. テンソル積(Tensor Product)

複数の量子ビット(多体系)を扱う場合、ベクトル空間はテンソル積によって拡張されます。

ベクトルのテンソル積

2つのベクトル aC2|a\rangle \in \mathbb{C}^2bC2|b\rangle \in \mathbb{C}^2 のテンソル積 ab|a\rangle \otimes |b\rangle(または単に ab|a\rangle|b\rangle, ab|ab\rangle)は、4次元のベクトルになります。

ab=(a0a1)(b0b1)=(a0(b0b1)a1(b0b1))=(a0b0a0b1a1b0a1b1)|a\rangle \otimes |b\rangle = \begin{pmatrix} a_0 \\ a_1 \end{pmatrix} \otimes \begin{pmatrix} b_0 \\ b_1 \end{pmatrix} = \begin{pmatrix} a_0 \cdot \begin{pmatrix} b_0 \\ b_1 \end{pmatrix} \\ a_1 \cdot \begin{pmatrix} b_0 \\ b_1 \end{pmatrix} \end{pmatrix} = \begin{pmatrix} a_0 b_0 \\ a_0 b_1 \\ a_1 b_0 \\ a_1 b_1 \end{pmatrix}

行列のテンソル積

演算子も同様に拡張されます。AABB2×22 \times 2 行列の場合、ABA \otimes B4×44 \times 4 行列になります。

AB=(A00BA01BA10BA11B)A \otimes B = \begin{pmatrix} A_{00} B & A_{01} B \\ A_{10} B & A_{11} B \end{pmatrix}

この性質により、量子ビットの数 nn が増えると、状態空間の次元は 2n2^n で指数関数的に爆発します。これが量子コンピュータの潜在能力の源泉の一つです。


まとめ

本記事では、量子コンピューティングの理解に必要な「言語」を定義しました。

  1. 複素数: 確率振幅の記述に必要。
  2. ブラケット記法: ベクトル演算の見通しを良くする標準記法。
  3. ユニタリ行列: 量子ゲート(可逆な操作)の数学的表現。
  4. テンソル積: 複数の量子ビットを組み合わせるための演算。

量子コンピュータ入門 #2:情報のベクトル表現と量子ビット へ進む


参考資料

  • Nielsen, M. A., & Chuang, I. L. (2010). Quantum Computation and Quantum Information. Cambridge University Press.
  • Preskill, J. (2022). Lecture Notes for Physics 229: Quantum Information and Computation.
  • 渡辺 昇, & 荒木 不二洋. (2004). 量子情報・量子コンピュータの数理.

更新履歴

更新日 内容
2025-12-22 初版公開

ご注意: 本記事は2025年12月時点の情報に基づいています。最新情報は公式サイトをご確認ください。

この記事をシェア