量子ビット

量子コンピュータの計算の基本となるのが量子ビットです。この記事では量子ビットについて,従来のビットと比較しながら解説します。以下では,量子コンピュータに対し,私たちが従来用いているコンピュータを古典コンピュータと呼びます。

量子ビットとは

古典コンピュータでは,0と1の2つの数を用いて計算を行っています。このように,古典コンピュータが扱うことのできる情報の最小単位をビットと呼んでいます。1ビットは0または1のいずれかの値を取ります。この0と1とはアナログの情報であり,例えば電圧の高低によって表現されます。

量子力学では,1つの原子が,基底状態と励起状態というエネルギーが異なるいくつかの状態を取りうることで知られています。このような量子状態のうちエネルギーが小さい方の2つ(例えば,基底状態と第一励起状態の2つ)を取りうるような情報の単位を量子ビット(qubit,キュービット)と呼び,量子コンピュータの計算に用いています。

ディラックのブラケット記法

量子力学の状態の表し方として,ブラケット記法が知られています。(こちらは別記事にて解説予定です。)

これを用いると,これらの量子状態は 0,1| 0 \rangle, | 1 \rangle,| \uparrow \rangle, | \downarrow \rangleのように表されます。古典コンピュータの0に対応するのが 0| 0 \rangle (あるいは | \uparrow \rangle),1に対応するのが 1| 1 \rangle (あるいは | \downarrow \rangle) となっています。

量子ビットの重ね合わせ

量子ビットとビットの最も大きな違いは,情報のアナログ/デジタル性です。

古典コンピュータに用いられているビットは,0か1の2つの値しか取りうることはできません。

一方,量子ビットは,量子力学の重ね合わせの原理により,0| 0 \rangle1| 1 \rangle を重ね合わせたような状態をとることが許されます(重ね合わせの原理については別記事にて解説予定です)。これは数式では

α0+β1 \alpha | 0 \rangle + \beta | 1 \rangle

のように表現されます。α,β\alpha, \beta は複素数を表しており,複素確率振幅と呼ばれます(別記事にて解説予定です)。

この重ね合わせの原理により,量子コンピュータはある種の問題に対し,古典コンピュータよりも早く解くことができることが知られています。

ただし,全ての問題に対し,量子コンピュータの方が古典コンピュータより速く解けるというわけではありません。誤解が生じやすい内容なので,注意してください。

量子ビットとベクトルとの関係

量子ビットは複素ベクトルを用いて表すことができます。

ここでは簡単のため,1量子ビットの系を考えます。このとき,状態ベクトル 0| 0 \rangle および 1| 1 \rangle

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

のように表現できます。

また,これらの重ね合わせ Ψ=α0+β1| \Psi \rangle = \alpha | 0 \rangle + \beta | 1 \rangle は,

Ψ=α(10)+β(01)=(αβ) | \Psi \rangle = \alpha \begin{pmatrix} 1 \\ 0 \end{pmatrix} + \beta \begin{pmatrix} 0 \\ 1 \end{pmatrix} = \begin{pmatrix} \alpha \\ \beta \end{pmatrix}

のように表すことができます。

扱う量子ビットが2個以上になっても,同様にベクトルで表現することができます。例えば,量子ビットが2つの2量子ビットの系を考えると,この系の状態空間は以下の4つのベクトルによって張られると考えることができます。

00=(1000),01=(0100),10=(0010),11=(0001) | 0 0 \rangle = \begin{pmatrix} 1 \\ 0 \\ 0 \\ 0 \end{pmatrix}, | 0 1 \rangle = \begin{pmatrix} 0 \\ 1 \\ 0 \\ 0 \end{pmatrix}, | 1 0 \rangle = \begin{pmatrix} 0 \\ 0 \\ 1 \\ 0 \end{pmatrix}, | 1 1 \rangle = \begin{pmatrix} 0 \\ 0 \\ 0 \\ 1 \end{pmatrix}

詳細な計算の仕方は別記事にて解説します。

【補足】量子ビットを現実で扱うには?

量子ビットを現実で扱う方法は,現在盛んに研究されている分野の一つになっています。有名なものとしては,超伝導体量子ビットや光量子ビットなどが知られています。

量子コンピュータを扱えるようなオープンソフトウェアもいくつか存在していますので,興味のある方はぜひ調べてみてください。

量子コンピュータ・量子情報の分野においても,線形代数が非常に重要になってきます。逆に,線形代数がわかれば,量子コンピュータの計算の大部分は理解可能になっています!