量子コンピュータでの量子計算 量子コンピュータについてのアイデアは、今のように量子コンピュータが認知されだす前の1982年、リチャード・ファインマンによって提案され、1985年、イギリスの物理学者ドイッチュによって計算の基礎理論がまとめられました。
先ほど説明したように、一般的なコンピュータでは「0」と「1」からなるビットによって計算を行っていますが、量子コンピュータは量子ビットという特別なビットを使って計算をします。量子ビットとは「0と1の重ねあわせ」の情報を表しており、例えば一般的なコンピュータでの「00」「01」「10」「11」の4つの状態は、量子ビットを2ビット使うことで同時に表現することができます。量子コンピュータの「量子」は英語で"Quantum"と言います。なので量子ビットのことを”Quantum Bits”、略して"Qubits"と言われます。
右側は今までの古典的コンピュータ、左側は量子コンピュータのそれぞれの一定の状態数を表すのに必要なビット数の比較です。量子ビットは見ての通り、古典的コンピュータに比べて指数関数的に性能が良くなるという事がわかります。
また、一般的な論理ゲートは使わず、量子版の論理ゲートによって、おおざっぱに言えば量子ビットの波の重ねあわせ具合を変えています。二重スリットの実験で壁にぶつかった瞬間に重ねあわせが壊れてどれか1つの可能性に決まったように、量子コンピュータの最後の測定では1つの答えしか読みだすことができません。そこで、量子の波の性質を使い、複数のパターンを並列に計算し、波と波をうまく干渉させて正しいパターンにだけ絞り込んでいく、ということを行っています。
現在、IBM Quantum Experience(通称IQX)によって、誰でもクラウド経由で量子コンピューターにアクセスして量子計算を実行することができます。(IQXのログインはGoogleアカウント、SNSなどから簡単に行えます)
これまでのコンピューターでは「0」と「1」のみで計算していましたが、量子は複数のパターンででを並列で計算することで、今までよりも圧倒的に早く計算し処理することが可能になったのです。
IBM Quantum Experience. "Get started with IBM Quantum Experience". https://quantum-computing.ibm.com/docs/ (IQXログインページ)
IBM developer. "IBM Quantum Experienceで体験するはじめての量子計算". https://developer.ibm.com/jp/articles/iqx-getstart/ (IQXの日本語チュートリアル)
ここでは、IQXの実行結果を示し、量子版の論理ゲートの役割を視覚的に表します。
量子ビットは|0〉, |1〉というようにベクトルとして表されています。初期状態は|00〉なので、以下のように2つの量子ビットのうち最初の量子ビットq[0]にX反転ゲートを適用して測定すると、
上のような結果を得ることができます。これは、右端のビットを 0 から 1 へ反転する操作、すなわち一般的なコンピュータの論理ゲートでのNOTです。
また、量子の重ね合わせは以下のようにアダマール(H)ゲートによって実現されます。Hゲートは、X反転ゲートのように一般の論理ゲートと同じような働きをするものではなく、量子コンピュータのための特別な論理ゲートです。
初期状態が|00〉だった2つの量子ビットのうち、最初の量子ビットq[0]にアダマール(H)ゲートを適用して測定すると、ほぼ半々の割合で|00〉と|01〉の量子状態が現れており、重ね合わせが実現されていることがわかります。
また、量子の重ね合わせだけでなく、量子もつれも実現することができます。
量子もつれとは、1つの粒子の重ね合わせが2つペアになった状態の特別な場合に起こることです。たとえば、ペアになった粒子Aと粒子Bのそれぞれのスピン(正確な表現ではないのですが、ある方向を向いた小さな矢印のようなものです)の向きが「Aが上向き・Bが下向き」と「Aが下向き・Bが上向き」との重ね合わせ状態を形成している場合を考えます。このとき、一方の粒子を観測してその状態が分かれば、もう一方の粒子の状態は観測するまでもなく、"瞬時に"決まってしまうのです。たとえば、Aが下向きだと観測されれば、その瞬間Bは上向き状態に決まります。重ね合わせ同様、このことも私たちの常識からは考えられないことですが、量子コンピュータで実現することができます。
量子ビットでは一度に様々な情報が内包されていますが、受け取る時は一意に定められます。
以下のように、先ほどのHゲートを置いたあとに、入力値(小さな●)が1の時だけターゲットの量子ビット(大きな●)を反転させるCNOTゲートを適用します。
すると、上の棒グラフが示すように結果は|00〉または|11〉となります。つまり、一方の量子ビットを測定した瞬間、100%の確率でもう片方が一方の量子ビットと同じ量子状態をとることを意味しています。
これらのゲートの働きなどを応用することで、量子アルゴリズムを組むことができます。量子アルゴリズムで有名なものには、グローバーのアルゴリズム、ショアのアルゴリズムが挙げられます。グローバーのアルゴリズムとは、探索アルゴリズムの一種です。たくさんの引き出しのある棚の中に探したいものがある状況を想像してください。どの引き出しに探しているものがあるのか調べるのはとても手間がかかることがわかると思います。グローバーのアルゴリズムはこのように手間のかかる”探索”を効率的に行うアルゴリズムです。また、ショアのアルゴリズムとは、素因数分解を行うアルゴリズムです。ショアが示したのは、量子コンピュータによって 15=3×5 に素因数分解できた、という中学生にもできるような簡単なことですが、今後、量子コンピュータの性能が上がっていくことによって、もっと大きな桁数の素因数分解を行うことが期待できます。それぞれのアルゴリズムが具体的にどのように動いているのか理解するためには、前提として数学の知識が必要となるため、ここでは説明しませんが、もっと詳しく知りたい方は、こちらのリンクが参考になるかもしれません。
Quantum Native Dojo. "Welcome to Quantum Native Dojo!". https://dojo.qulacs.org/ja/latest/index.html
また、現在、このように量子ビット、量子版の論理ゲートを実現するためのハードウェア開発が、超伝導、半導体、イオントラップ、冷却原子、光など様々な方式からのアプローチによって行われています。近年の「量子コンピュータブーム」はGoogle, IBMなどの巨大企業がこのハードウェア開発に参入したことから始まったとも言われています。どの大学、企業が、どのような方式からのアプローチを行っているのか詳しく知りたい方は、よろしければ下記のリンクを参考にしてください。
Qmedia. "量子コンピュータを実現するハードウェア(後編)". https://www.qmedia.jp/making-quantum-hardware-2/