量子回路を理解しよう!part1(量子ビットまで)
はじめに
初めまして、寅太郎と申します!
これまで勉強した学術チックな話題を投稿していく予定ですので、何卒よろしくお願いします!
本トピックはpart2までの予定で、ゼロから量子コンピュータを理解するための記事です。
そもそも量子コンピュータって?
量子コンピュータは大きく二種類に分類されます。
- 量子アニーリング方式
- 量子ゲート方式
量子アニーリング方式
最適化問題を解くのに特化した計算方式で、日本人が考案しました。ざっくりいえばこの方式のQPU(量子コンピュータ版のCPU)がイジングモデルという物性科学でよく使われる物理モデルとみなすことができ、その最小エネルギーを探索することで解を得るものです。2011年にD-Wave社が量子コンピュータを発表しましたが、本方式になります。
量子ゲート方式
量子ゲートの組み合わせで多様な量子アルゴリズム[1]を実装でき、汎用的に計算させられる方式です。我々が量子コンピュータと言われて想像するのはこちらでしょうか?量子ゲート方式の中でも超伝導方式、光量子方式など提案されており、IBM, Google, 理研などさまざまな企業、研究機関が研究開発に取り組んでいます。
量子アニーリング方式について「ふーん」って感じでしょうが深入りする必要はありません。なぜなら量子回路は量子ゲート方式でのお話なるので、知識として覚えていただければ大丈夫です。
量子力学の考え方
量子コンピュータは計算速度が速い!という話を聞いたことがあるでしょうか?それは量子コンピュータが「状態の重ね合わせ[2]」と「重ね合わせ状態を観測すると確率的に状態が一つに決まる」という量子力学の原理を用いているからです。これら二つの不思議な原理を説明します。
状態の重ね合わせ
量子力学は我々の目で直接見ることのできないミクロな世界の物理学です。我々が認識できる世界の物理は量子に対して古典物理学と呼ばれ、ボールなどの物体が100%そこに存在している前提で展開されます。しかし量子の世界では実際に観測してみないとそこに物体が存在しているかわからないし、観測するまでの間はいろんな状態が重ね合わさっていると考えます。
例として電子スピンを挙げます。電子はただの粒子という印象を与えますが、実は向きを持っています。この向きは磁石が発するような磁場に対して応答します。
量子力学ではエネルギーなどの物理量が離散的に観測されます。だから"量子"と言われるのですが、この電子の向きに関してはどこか任意な方向を向いているのではなく、上向きか下向きに"量子化"されています。これをスピンと呼びます。
詳しく見ていきます。静止した電子に対してz軸方向に磁場を与えます。このとき取りうる状態が上向きまたは下向きのスピンに限られます。ここでz軸方向ではなくz軸に垂直なx軸方向に磁場を与えてみましょう。このとき上向きと下向きのスピンが重ね合わさります。
これが重ね合わせの一つの例で、あたかも各スピンが同時に存在するような状態を作ることができるのです。なぜそうなるのかと思うのかもしれませんがそのように解釈するのです。(重ね合わせそのものを観測した人はいないので。。。)
重ね合わせ状態の観測
先ほど作った重ね合わせを何らかの方法で観測してみましょう。するとあるときには上向きのスピンが、またあるときには下向きのスピンが観測されます。どのような条件で各スピンが観測されるのか突き詰めようとしても気まぐれで規則性が見当たりません。
最終的に観測できたのは何回中何回が上向きで何回が下向きのスピンということで、それぞれが出現する確率のみです。とりあえずこれまでの議論を何とか数式に落とし込んでみましょう。
まず上向きのスピンですが上向きって言ってるくらいなので"
となります。これが重ね合わせの表現ですが唐突に出てきた"
その前に疑問が残るのはさっきの観測で得られた確率はどこにいった?という話です。実はその正体が係数
ただ↑で表現するのは少し抽象的な気がします。数値か何かで具体的に表したいところです。実は量子力学で扱われる任意の状態はベクトルで表現されます。先ほど謎だった"
と新たに定義してしまいましょう。そうすると
と具体的に記述することができます。これでようやく本題に入ることができます。
量子ビット
量子ビットとは?
我々が普段使うコンピュータ(古典コンピュータ)ではメモリに0または1が格納されており、これはビットと呼ばれるのでした。また何かしらの計算について、入力を変化させない限り必ず同じ結果が返ってくるのも古典コンピュータの特徴です。
しかし量子コンピュータでは一つのビットに対して0と1両方重ね合わせた状態を格納します。これが量子ビットまたはキュービット(qubit)と呼ばれるものです。また計算結果を観測してもあるときはAというビット列、あるときにはBというビット列が確率的に返ってきます。
0と1の重ね合わせと計算結果が確率的に返ってくるのは、これまで紹介した量子力学の原理そのものです。量子ゲート方式ではとある計算結果が出力されるためにその確率を大きくしたり、または目的の確率分布なるように計算させていきます。
具体的に量子ビットを表すのに何を使えばよいでしょうか?0と1の二値だけなのでこれまで議論してきたスピンが使えそうです。なので量子コンピュータでの0と1を次で定義してしまいましょう。
そして、量子ビットはそのシンボルを
で書けました!ここで定義したのは1つの量子ビットなのでこれは1量子ビットと言われます。たった一つだけですが、ゲート方式における量子計算を少し体験しましょう。
1量子ビットでの計算
量子ゲート方式でははじめに紹介した通り、量子ゲートの組み合わせで計算処理を行います。量子ゲートは数学的には行列です。この行列を量子ビットに作用させることで量子ビットの状態を変化させます。例としてアダマールゲート
ここで先ほど定義した
実はアダマールゲートは
ここから複数の量子ビットに拡張させるためにはどうすればよいでしょうか?この続きはpart2に書いていこうと思います。ありがとうございました!part2へ
Discussion