量子力学と線形代数(量子ビットの状態ベクトルとブロッホ球)
0と1の重ね合わせ、複素ヒルベルト空間の内積、そしてユニタリ行列による量子ゲート操作の数理
- 1
- 古典コンピュータの1ビットは0か1の2値だが、量子ビットは基底 と の複素線形結合(重ね合わせ)として表現される
- 2
- 量子状態の変形はノルム(確率の総和=1)を保存するユニタリ行列 ()の積に対応し、ブロッホ球上の回転幾何として直感化できる
- 3
- 量子アルゴリズム(Shorの素因数分解やGroverの検索)は、複素確率振幅の「干渉」を利用して正解の確率を増幅させる線形代数的最適化手法である
なぜこれを学ぶのか? — 現実社会とテクノロジーでの価値
なぜ生まれたのか?
古典コンピュータの1ビットは0か1の2値だが、量子ビットは基底 $|0\rangle$ と $|1\rangle$ の複素線形結合(重ね合わせ)として表現される
身につく武器・思考力
量子状態の変形はノルム(確率の総和=1)を保存するユニタリ行列 $U$($U^\dagger U = I$)の積に対応し、ブロッホ球上の回転幾何として直感化できる
実社会・ITでの活躍現場
- •量子回路シミュレータおよび量子暗号鍵配送(BB84プロトコル)
- •ITシステム・アルゴリズム実装における論理設計
- •データ分析やシミュレーションにおける数理モデリング
Layer 1 — 直感・シミュレーター
天頂角 と方位角 のスライダーを動かして、状態ベクトル がブロッホ球面上を自由に移動する様子を確認しよう。「H (アダマール)」ボタンを押すと北極()から赤道(重ね合わせ状態)へ状態が回転し、右側の観測確率がちょうど50:50に変化する。「測定を実行」ボタンで大数の法則による実測ヒストグラムを検証できる。
球面のあらゆる点が1量子ビットの純粋状態に対応(北極が $|0\rangle$、南極が $|1\rangle$)
状態 にアダマールゲート を作用させた後、基底測定を行ったとき、0と1が観測される確率はそれぞれいくらか?
Layer 2 — 定義・受験・証明
定義
1量子ビット(qubit)の状態空間は、2次元複素ヒルベルト空間 である。正規直交基底を と置くと、任意の状態ベクトル は次のように展開される。
全確率の保存則(正規化条件)は内積の公理より次のように要求される。
大域的位相を無視すると、2つの実数パラメータ(天頂角 、方位角 )を用いてブロッホ球座標表示できる。
公式・数理モデル
証明・導出
ユニタリ変換と観測の確率規則:
量子系の時間発展はシュレーディンガー方程式 に従う。ハミルトニアン がエルミート行列()であることから、時間発展演算子 は必ずユニタリ行列となる。
ユニタリ変換は内積を不変に保つため、状態ベクトルのノルム が常に保証される。
物理量の観測(測定)は、対応する自己共役演算子(エルミート行列) のスペクトル分解 によって記述される。ボルンの規則により、測定値として固有値 が得られる確率は内積の2乗で決定される。
観測直後、波束の収縮(Projection)が生じ、系の状態は即座に測定された固有状態 へと崩壊する。
押さえておきたいポイント
- 量子状態の計算は、すべて「複素ベクトルの内積」と「ユニタリ行列の積」という高校・大学の線形代数の枠組みで厳密に計算できる
- ブロッホ球の北極は 、南極は であり、赤道上のあらゆる点は と の観測確率がちょうど半分ずつの位相異なる重ね合わせ状態を表す
- 量子もつれ(Entanglement)は、2つ以上の量子ビットの合成空間 において、テンソル積の形で分離できない状態ベクトルとして定義される
本トピックの内容・数理モデルは、文部科学省学習指導要領(算数・数学・情報)および国際標準カリキュラムに準拠し、エンジニアリング現場の実装事例と照らし合わせてMath World Lab編集部により検証・作成されています。
Layer 3 — 工学応用・現場実装
量子回路シミュレータおよび量子暗号鍵配送(BB84プロトコル)
IBM Quantum Experience や Google Cirq などの量子SDKでは、量子アルゴリズムの回路を複素数テンソルネットワークとして内部シミュレートする。また、ブロッホ球上の異なる基底(Z基底・X基底)を用いた光子の偏光状態送信により、盗聴者の観測(波束の収縮)を検知して絶対に解読されない鍵を共有するBB84量子鍵配送が実用化されている。
1// 1量子ビットの複素数状態ベクトルと量子ゲート適用2type Complex = { re: number; im: number };34class Qubit {5 alpha: Complex; // |0> の振幅6 beta: Complex; // |1> の振幅78 constructor(theta: number = 0, phi: number = 0) {9 this.alpha = { re: Math.cos(theta / 2), im: 0 };10 this.beta = {11 re: Math.sin(theta / 2) * Math.cos(phi),12 im: Math.sin(theta / 2) * Math.sin(phi)13 };14 }1516 // アダマールゲート H = 1/sqrt(2) * [[1, 1], [1, -1]]17 hadamard(): void {18 const invSqrt2 = 1 / Math.SQRT2;19 const nextAlpha: Complex = {20 re: invSqrt2 * (this.alpha.re + this.beta.re),21 im: invSqrt2 * (this.alpha.im + this.beta.im)22 };23 const nextBeta: Complex = {24 re: invSqrt2 * (this.alpha.re - this.beta.re),25 im: invSqrt2 * (this.alpha.im - this.beta.im)26 };27 this.alpha = nextAlpha;28 this.beta = nextBeta;29 }3031 // 測定シミュレーション (0 または 1 を返す)32 measure(): 0 | 1 {33 const prob0 = this.alpha.re ** 2 + this.alpha.im ** 2;34 const isZero = Math.random() < prob0;35 // 波束の収縮36 this.alpha = isZero ? { re: 1, im: 0 } : { re: 0, im: 0 };37 this.beta = isZero ? { re: 0, im: 0 } : { re: 1, im: 0 };38 return isZero ? 0 : 1;39 }40}
次に学ぶならコレ!おすすめトピック
この単元と深い繋がりを持つ、あわせて学ぶと理解が深まるおすすめ単元