一方、これから議論する量子計算機、または量子コンピュータとは、
シュレディンガー方程式に従う原子や分子などの量子系をコンピュータとして用い、
量子力学の原理を計算に用いるものである。

古典計算機でのビットに対応するものを、量子ビットと呼び、
$|0\rangle , |1\rangle$、加えてその線形結合
\begin{align}
a|0 \rangle +b |1\rangle
\end{align}
の状態をとることができる。

これは物理的には、例えば1個の電子を考えて、
その電子のスピンが上向きの状態を$|\uparrow \rangle = |0 \rangle$、
下向きの状態を$|\downarrow \rangle = |1\rangle$とみなせば実現できる。

このような量子ビットなどの物理的な実現法については、
量子計算機の設計の章で詳しく述べる。

この量子ビットがいくつかあるとき、例えば2ビットあり、
一番目のビットが$|0\rangle$、二番目のビットが$|1\rangle$のときは、
\begin{align}
|0\rangle \otimes |1\rangle
\end{align}
と$|0\rangle$と$|1\rangle$の状態の直積で表現される。

これは、物理的には多粒子系、例えば2個の電子を考えることによって実現できる。
この後の表記では$\otimes$の表記を省略し、
例えば$|0\rangle \otimes |1\rangle $を$|0\rangle |1\rangle$と書く。

また量子ビットが数ビットあるときでも、それぞれのビットは
$|0\rangle$と$|1\rangle$の重ね合わせの状態をとることができる。

すなわち、一番目のビットが$a_1|0\rangle+b_1|1\rangle$、
二番目のビットが$a_2|0\rangle+b_2|1\rangle$のとき、2ビットの状態は
\begin{align}
&(a_1|0\rangle +b_1|1\rangle)(a_2|0\rangle +b_2|1\rangle) \\
= & a_1a_2|0\rangle |0\rangle +a_1b_2|0\rangle |1\rangle +b_1a_2|1\rangle |0\rangle
+b_1b_2|1\rangle |1\rangle
\end{align}
と表すことができる。

量子ビットの場合、2ビットの状態では00,01,10,11という
4つの状態を扱える、という点では古典ビットと同じであるが、
この4つの状態を同時に含んでいるということが大きな違いである。

一般に量子ビットが$n$個あるとき、$2^n$個の状態の重ね合わせを実現することが可能である。

このように重ねあわせが可能なことによって、
状態に操作をするとき、多ビットの系全体を操作できる。

古典計算機において計算とは、AND等の素子において、
入力側の配線から入ってきた値が素子の中で処理されて、
出力側に出て行く、といったものであった。

それに対して、量子計算機において演算とは必ずしも入力側と出力側の位置の区別がない。
すなわち、例えばある入力状態にあるスピンが、電磁場等による相互作用により、
一定時間の後に出力状態に変わる、という仕組みになっている場合がある。
(図1.2)

clip001.jpg

図1.1:量子ゲートの概念図

例えば、量子ビットとして電子1個を考え、初期状態を$|\uparrow \rangle =|0\rangle$とする。
これに光を一定時間照射すると(量子計算機の設計を参照)、
\begin{align}
|0\rangle \longrightarrow |1\rangle
\end{align}
というNOT演算を行うことができる。

もちろん量子計算機の特徴である重ね合わせの状態$|0\rangle +|1\rangle$
も初期値や変換後の状態として許される。

今の例のような演算は、量子力学に従う状態の変化であるから、
状態の時間発展はシュレディンガー方程式に従う。

よって、量子計算機における一般の$n$ビットの演算は
\begin{align}
|1\rangle |1\rangle \cdots |1\rangle = U |0\rangle |0\rangle \cdots |0\rangle
\end{align}
というように、ユニタリー変換によって表される。

そして上の式でわかるように、量子計算機の特徴の一つとして、
$n$個の量子ビットに対して同時にユニタリー変換を行うことができる、
ということがあげられる。

またシュレディンガー方程式は時間反転可能であるので、
演算、すなわちユニタリー変換は可逆となる。
したがって、量子ビットの入力端子の数と出力端子の数が必然的に同じになる。

以上のように初期値から幾つかのユニタリー変換で望ましい状態、
例えば多数の重ね合わせの状態を得たとする。
\begin{align}
a_1a_2|0\rangle |0\rangle +a_1b_2|0\rangle |1\rangle +b_1a_2|1\rangle |0\rangle
+b_1b_2|1\rangle |1\rangle
\end{align}

最後に行う出力とは、この系に対して観測を行うということである。
この観測結果も量子力学の原理に従うから、
観測される状態は確率でしかわからない。

よって、望ましい状態、望ましい答えが高い確率で得られるように、
ユニタリー変換をうまく組み合わせる必要がある。
これが量子計算機におけるアルゴリズム(設計方法)である。

任意の$n$ビットに対するユニタリー変換が、1ビットのユニタリー変換と、
後に述べる制御NOT演算と呼ばれる2ビットの変換によって作れることを、
ユニタリ-変換の構成の節で示す。

よって、1ビットのユニタリー変換と、制御NOT演算が物理的に実現できれば、
任意の$n$ビットのユニタリー変換ができることになり、
いろいろな状態を作り出すことができる。


1ビットのユニタリー変換と、制御NOT演算の物理的な実現法については、
量子計算機の設計の章で述べる。

続いて、1ビットのユニタリー変換と制御NOT、
さらに幾つかのユニタリー変換について詳しく述べる。