🏟️

量子回路を理解しよう!part1(量子ビットまで)

2023/01/15に公開

はじめに

初めまして、寅太郎と申します!
これまで勉強した学術チックな話題を投稿していく予定ですので、何卒よろしくお願いします!
本トピックはpart2までの予定で、ゼロから量子コンピュータを理解するための記事です。

そもそも量子コンピュータって?

量子コンピュータは大きく二種類に分類されます。

  • 量子アニーリング方式
  • 量子ゲート方式

量子アニーリング方式

最適化問題を解くのに特化した計算方式で、日本人が考案しました。ざっくりいえばこの方式のQPU(量子コンピュータ版のCPU)がイジングモデルという物性科学でよく使われる物理モデルとみなすことができ、その最小エネルギーを探索することで解を得るものです。2011年にD-Wave社が量子コンピュータを発表しましたが、本方式になります。

量子ゲート方式

量子ゲートの組み合わせで多様な量子アルゴリズム[1]を実装でき、汎用的に計算させられる方式です。我々が量子コンピュータと言われて想像するのはこちらでしょうか?量子ゲート方式の中でも超伝導方式、光量子方式など提案されており、IBM, Google, 理研などさまざまな企業、研究機関が研究開発に取り組んでいます。

量子アニーリング方式について「ふーん」って感じでしょうが深入りする必要はありません。なぜなら量子回路は量子ゲート方式でのお話なるので、知識として覚えていただければ大丈夫です。

量子力学の考え方

量子コンピュータは計算速度が速い!という話を聞いたことがあるでしょうか?それは量子コンピュータが「状態の重ね合わせ[2]」と「重ね合わせ状態を観測すると確率的に状態が一つに決まる」という量子力学の原理を用いているからです。これら二つの不思議な原理を説明します。

状態の重ね合わせ

量子力学は我々の目で直接見ることのできないミクロな世界の物理学です。我々が認識できる世界の物理は量子に対して古典物理学と呼ばれ、ボールなどの物体が100%そこに存在している前提で展開されます。しかし量子の世界では実際に観測してみないとそこに物体が存在しているかわからないし、観測するまでの間はいろんな状態が重ね合わさっていると考えます。
古典物理学と量子力学の違い
例として電子スピンを挙げます。電子はただの粒子という印象を与えますが、実は向きを持っています。この向きは磁石が発するような磁場に対して応答します。

量子力学ではエネルギーなどの物理量が離散的に観測されます。だから"量子"と言われるのですが、この電子の向きに関してはどこか任意な方向を向いているのではなく、上向きか下向きに"量子化"されています。これをスピンと呼びます。

詳しく見ていきます。静止した電子に対してz軸方向に磁場を与えます。このとき取りうる状態が上向きまたは下向きのスピンに限られます。ここでz軸方向ではなくz軸に垂直なx軸方向に磁場を与えてみましょう。このとき上向きと下向きのスピンが重ね合わさります。
スピンの重ね合わせの図
これが重ね合わせの一つの例で、あたかも各スピンが同時に存在するような状態を作ることができるのです。なぜそうなるのかと思うのかもしれませんがそのように解釈するのです。(重ね合わせそのものを観測した人はいないので。。。)

重ね合わせ状態の観測

先ほど作った重ね合わせを何らかの方法で観測してみましょう。するとあるときには上向きのスピンが、またあるときには下向きのスピンが観測されます。どのような条件で各スピンが観測されるのか突き詰めようとしても気まぐれで規則性が見当たりません。
観測と状態の決定
最終的に観測できたのは何回中何回が上向きで何回が下向きのスピンということで、それぞれが出現する確率のみです。とりあえずこれまでの議論を何とか数式に落とし込んでみましょう。

まず上向きのスピンですが上向きって言ってるくらいなので""で表現するのがよいでしょう。下向きも同様に""です。そして重ね合わせ状態はそのシンボルを\psi、重ね合わせ自体はそのままの意味をこめて足し算"+"で表現しましょう。あとは適当に係数a,bをつけると、

|\psi\rangle = a|↑\rangle + b|↓\rangle

となります。これが重ね合わせの表現ですが唐突に出てきた"|"、"\rangle"は何者か!?と思うかもしれません。安心してください、後で説明します。

その前に疑問が残るのはさっきの観測で得られた確率はどこにいった?という話です。実はその正体が係数a,b[3]で、これらの大きさ二乗、つまり\lvert a \rvert^{2}, \lvert b \rvert^{2}を計算すると上向きと下向きのスピンを観測する確率が計算できます。例えばa=1/\sqrt{2}の場合、\lvert a \rvert^{2}=1/2なので50%の確率で上向きのスピンが観測されます。

ただ↑で表現するのは少し抽象的な気がします。数値か何かで具体的に表したいところです。実は量子力学で扱われる任意の状態はベクトルで表現されます。先ほど謎だった"|"、"\rangle"という記号は量子力学上のベクトルの書き方でブラケット記法と呼びます。スピンに適したベクトルの表現ですが、たかだか上向きか下向きのみなので二つの要素を持つベクトルで十分そうです。なので、

|↑\rangle=\begin{pmatrix}1 \\ 0 \end{pmatrix} , |↓\rangle=\begin{pmatrix} 0 \\ 1\end{pmatrix}

と新たに定義してしまいましょう。そうすると|\psi\rangleは、

|\psi\rangle=a\begin{pmatrix} 1 \\ 0 \end{pmatrix} + b \begin{pmatrix} 0 \\ 1 \end{pmatrix}=\begin{pmatrix} a \\ b \end{pmatrix}

と具体的に記述することができます。これでようやく本題に入ることができます。

量子ビット

量子ビットとは?

我々が普段使うコンピュータ(古典コンピュータ)ではメモリに0または1が格納されており、これはビットと呼ばれるのでした。また何かしらの計算について、入力を変化させない限り必ず同じ結果が返ってくるのも古典コンピュータの特徴です。

しかし量子コンピュータでは一つのビットに対して0と1両方重ね合わせた状態を格納します。これが量子ビットまたはキュービット(qubit)と呼ばれるものです。また計算結果を観測してもあるときはAというビット列、あるときにはBというビット列が確率的に返ってきます。
古典コンピュータと量子コンピュータの違い
0と1の重ね合わせと計算結果が確率的に返ってくるのは、これまで紹介した量子力学の原理そのものです。量子ゲート方式ではとある計算結果が出力されるためにその確率を大きくしたり、または目的の確率分布なるように計算させていきます。

具体的に量子ビットを表すのに何を使えばよいでしょうか?0と1の二値だけなのでこれまで議論してきたスピンが使えそうです。なので量子コンピュータでの0と1を次で定義してしまいましょう。

|0\rangle=|↑\rangle, |1\rangle=|↓\rangle

そして、量子ビットはそのシンボルをqでおいてやると、

|q\rangle=a|0\rangle+b|1\rangle=\begin{pmatrix} a \\ b \end{pmatrix}

で書けました!ここで定義したのは1つの量子ビットなのでこれは1量子ビットと言われます。たった一つだけですが、ゲート方式における量子計算を少し体験しましょう。

1量子ビットでの計算

量子ゲート方式でははじめに紹介した通り、量子ゲートの組み合わせで計算処理を行います。量子ゲートは数学的には行列です。この行列を量子ビットに作用させることで量子ビットの状態を変化させます。例としてアダマールゲートHを紹介します。アダマールゲートは次の行列です。

H=\frac{1}{\sqrt{2}}\begin{pmatrix} 1 & 1 \\ 1 & -1 \end{pmatrix}

ここで先ほど定義した|q\rangleにアダマールゲートを作用させてみましょう。

H|q\rangle=\frac{1}{\sqrt{2}}\begin{pmatrix} 1 & 1 \\ 1 & -1 \end{pmatrix} \begin{pmatrix} a \\ b \end{pmatrix} =\frac{1}{\sqrt{2}}\begin{pmatrix} a+b \\ a-b \end{pmatrix} =\frac{a+b}{\sqrt{2}}|0\rangle+\frac{a-b}{\sqrt{2}}|1\rangle

|0\rangleの係数がaから(a+b)/\sqrt{2}へ、|1\rangleの係数がbから(a-b)/\sqrt{2}に変化しました。このように量子コンピュータは、0の場合と1の場合を同時に計算させてしまいます。これが量子コンピュータの高速性につながっていくわけです。さらに|q\rangle=|0\rangleとして、再度アダマールゲートを作用させてみましょう。

H|0\rangle=\frac{1}{\sqrt{2}}\begin{pmatrix} 1 & 1 \\ 1 & -1 \end{pmatrix} \begin{pmatrix} 1 \\ 0 \end{pmatrix} =\frac{1}{\sqrt{2}}\begin{pmatrix} 1 \\ 1 \end{pmatrix} =\frac{1}{\sqrt{2}}|0\rangle+\frac{1}{\sqrt{2}}|1\rangle

実はアダマールゲートは|q\rangle=|0\rangleという何も重ね合わさってない状態から0と1の重ね合わせ状態を生成することができるのです。さらに|q\rangle=|1\rangleとしたり、H|0\rangleの結果にさらにHを作用させてみて下さい。興味深い結果が返ってきます。

ここから複数の量子ビットに拡張させるためにはどうすればよいでしょうか?この続きはpart2に書いていこうと思います。ありがとうございました!part2へ

脚注
  1. 例えば素因数分解を実行するショアのアルゴリズム、連立方程式を解くためのHHLアルゴリズムなどがあります。 ↩︎

  2. 言うまでもないですが状態の重ね合わせと重ね合わせ状態は同じ意味で書いています。その時の都合で言い方を変えてます。 ↩︎

  3. a,bは複素数です。なぜ複素数かというと量子力学において任意の状態は波動として解釈されており、波動を数学的に記述するものが複素数だからです。 ↩︎

Discussion