こんにちは、前回の重ね合わせに続いて、量子もつれです。
wikipediaから説明を拾ってこようかとも思いましたが、混乱するのでやめました。
前回は鉛筆を立てることによって重ね合わせが実現できることがわかりました。
しかし、重ね合わせだけでは効率的な計算をすることはできません。解の可能性を増やすとどれが答えかわからなくなります。量子もつれは重ね合わせと組み合わせて使うことで効率的な計算を可能とするようです。
上記2量子ビットがあった場合、ひだりとみぎのえんぴつを両方重ね合わせ状態にすると、得られる答えは4通りに増えます。これが鉛筆をどんどん増やすと解の可能性はふえますが、結局どの答えが正解なのかを見失いやすくなります。量子もつれでは、二つの鉛筆をつなげることができます。
えんぴつ1を重ね合わせにした後に、えんぴつ2をえんぴつ1に合わせて連動させることができます。量子回路としてはCXとかCNOTと呼ばれる量子ゲートです。これは条件付きの操作で、えんぴつ1が0の時は何もしないけど、えんぴつ1が1の時だけえんぴつ2を1にするという操作です。
これを実行すると、00と11の答えの二種類しか出ません。えんぴつ2は完全にえんぴつ1と連動していて、重ね合わせの機能も兼ね備えています。
blueqatでこれを実行するのも簡単です。
from blueqat import Circuit
Circuit().h[0].cx[0,1].m[:].run(shots=100)
実機で行う場合には、
from bqcloud import load_api
from blueqat import Circuit
from bqcloud import Device
api = load_api()
task_rigetti = api.execute(Circuit().h[0].cx[0,1], Device.Aspen11, 100)
と、投げることができます。
hで重ね合わせを作った後に、条件付きのcxを操作します。0と1番目の量子ビットに作用させますが、順番も大事です。最初に指定した量子ビットのほうの条件を次の量子ビットに適用させます。今回は0番目の数字を見て、1番目の量子ビットの操作をします。
これによって、2つの量子ビットが連動します。両方が重ね合わせ状態になりますので、0と1の重ね合わせを維持したまま、二つの量子ビットの計算をすることができます。この連動させたものをもつれといいます。
もつれは量子コンピュータのプログラミングでとても役に立ちます。今後は実用的な問題でも量子もつれを実感してもらいたいですね。以上です。