足し算から始めよう
前回の記事では、キュービットを導入した。この記事ではキュービットでの足し算を考えてみよう。
足し算といっても、ここでは2進数の繰り上がりのない計算を考える。
(mod2 の足し算とよんでも良い)
その演算を
となる。最後の部分だけ普通の足し算と異なるが、これは繰り上がりした部分を無視して
下の桁だけ見たと思えば良い。
古典回路
まずこれを古典回路で作るにはどうすればいいだろうか?
上の演算ルールは、xor= exclusive or= 排他的論理和 と呼ばれるものと同じになっている。
排他的論理和とは2つの入力が同じ時に0、異なるときに1を返す論理演算である。
そのため、
2つのビットの入力に対して1つの演算素子で実現できる (もちろん等価な回路はNANDから構成できる)。
Wikipedia から図を借りると、
とかける。ここで
量子回路
さて、これに対応する量子回路は、少し考えなければならない。
なぜなら前の記事でも触れたとおり、量子状態を操作できるのは、測定を別にすると
基本的にユニタリー変換だけであるからだ。
ユニタリー変換はベクトルの回転のようなものであり、状態を変化させたあと、もとに戻すことも可能である。つまり、結果から入力がいつでも追跡できる。
一方で上の古典回路は、入力が2つ、出力が1つなので、出力をみても入力が何だったかを知ることはできない (エントロピーが増大している)。
量子回路では、足し算もユニタリーにするために、補助ビットをつけて情報の喪失を防ぐ。
つまり、2つのキュービットを入力して2つのキュービットを出力、片方のキュービットに結果が格納されるようにする。図的には、
という感じである。ここで
黒い箱はブラックボックスで今から考える。
このような動作をするものは、制御Not (controled not = CNOT)とよばれ、
の様に図示される。これは、以下のように動作する。
-
のとき、何もせず、入力がそのまま出力になるa=0 -
のとき、a=1 のビットが反転する。すなわち、b なら1、b=0 なら0b=1
つまり、
的(まと)のような記号になってる。exlusive or の記号とも言う)。
このときに、下側に結果が格納される。
4パターンすべて確かめてみよう。
-
、a=0 のとき。このときには、何もしない約束だったので出力は、上から順にb=0 と0 である。上で見た繰り上がりのない足し算の結果も0なので合っている。0 -
、a=0 のとき。このときには、何もしない約束だったので出力は、上から順にb=1 と0 である。上で見た繰り上がりのない足し算の結果も1なので合っている。1 -
、a=1 のとき。このときには、bのビットを反転するので出力は、上から順にb=0 と1 である。上で見た繰り上がりのない足し算の結果も1なので合っている。1 -
、a=1 のとき。このときには、bのビットを反転するので出力は、上から順にb=1 と1 である。上で見た繰り上がりのない足し算の結果も0なので合っている。0
以上により、
と書いても良いことになる。
この様に古典回路でできることは、量子回路でも同様のことができるが、一方で基本的にユニタリー演算しかできないために、制約があることに注意しなければならない。
Discussion