量子コンピュータを使うときのコツ的な何か

前回量子コンピュータ量子テレポーテーションを実装したわけですがその時に記事で紹介したのとは別の回路でも実装していて,そこでこの量子コンピュータを使う時のコツのようなものについて考えたのでそれについてまとめようと思います.

別回路

前回量子テレポーテーションを実装した回路はこのような回路でした.

f:id:kadora:20160924102206p:plain

実はこれより先に理論的には同じ動作をする回路として実装したのが次の回路です.

f:id:kadora:20161008211336p:plain

これはこの量子コンピュータの仕様上CNOTゲートのNOTを作用させるビットが真ん中の Q_2のqubitに対してしか作用させることができず,用いるビットを Q_0,Q_1,Q_2としたためにqubitをスワップさせたりする必要が出てきているために回路のゲート数が増え複雑な回路となっています.

別回路での結果

こちらの別回路で前回と同じことを行った結果が次の様になります.上からAliceの持つ2つのqubitの測定結果, \left|\Phi^+\right\rangleの時, \left|\Phi^-\right\rangleの時, \left|\Psi^+\right\rangleの時, \left|\Psi^-\right\rangleの時の結果です.

f:id:kadora:20161008211926j:plain

f:id:kadora:20161008211942j:plain

f:id:kadora:20161008211956j:plain

f:id:kadora:20161008212011j:plain

f:id:kadora:20161008212021j:plain

これらの結果を元に前回と同様に量子テレポーテーションを行った後にBobの持つqubitを測定したときに \left|0\right\rangleを得る確率は, 0.5928となります.前回得られた結果と比べると随分とIdealの場合との誤差が大きくはないでしょうか?理論的には同じ回路であるので,IdealQuantumProccessorで実行すると,確かに前回と同じ結果を得ることが出来ます.何故実際に実行するとこれほどの差が生まれるのでしょうか?

現状の量子コンピュータの課題

量子誤り訂正の話をした時にも話しましたが,qubitの重ね合わせの状態をそのまま保つというのは非常に難しいのです.ただその状態に保つだけでも難しいので,その状態に正しくゲートを適用させるというのは更に難しくなります.つまりゲートを数多く適用させればさせるほど正しい結果が得られなくなる可能性というものが高くなっていくのです.ゲートが正しく動作しないという問題は量子コンピュータだけでなく古典の場合でもエラーの原因になるのですが,古典の場合は重ね合わせの状態を扱わないので量子の場合に比べて単純な作りでよく,またそれなりに長く改良が重ねられてきているので現在の古典のゲートはかなりの精度が出せるようになっているので量子の場合ほどこの問題は大きな問題とはなりません.

量子コンピュータを使うコツ

ではこのことから量子コンピュータを使うためのコツとしてどのようなことが考えられるでしょうか.ゲートを重ねることによって誤差が発生する確率が高くなるので,単純に回路につかうゲートの数を減らせばいいのです.等価な複数の回路が考えられたとしたら,それらの回路を自由に選択出来る場合には最も使用する回路の数が少ないものを選ぶ,といった感じです.また,IBMの5qubitの量子コンピュータにおいては,現在の仕様としてCNOTゲートのNOTを作用させるビットが真ん中の Q_2のqubitに対してしか作用させることができないという仕様になっているので,そのことを考慮したqubitの配置にすることで余計なスワップなどを行う必要がなくなり使用するゲートの数を減らすことが出来ます.実際に最初に考えた回路では Q_0,Q_1,Q_2のqubitを使用しましたが,前回の回路では Q_1,Q_2,Q_3のqubitを使用することでスワップさせる必要がなくなっていて使用するゲートを減らすことに成功しています.

まとめ

結論としては,出来るだけ少ないゲートで回路を実現するということがポイントとなります.それが有効な理由として量子の重ね合わせの状態を扱うことが難しく,量子ゲートがまだ十分な精度では実現できていないということがあげられます.今後技術の発展により量子ゲートを十分な精度で実現できるようになってくれば今回述べたようなことは考えなくても十分に量子コンピュータを使用することが出来るようになるかもしれませんが,そうなってくるまでは今回述べたことを考えながら量子コンピュータを使うことが,出来るだけ正しい結果を得るためには必要になってくることだと思います.