
5分で触れる量子コンピュータ
2019.03.15
「量子コンピュータ」って聞いたことあるけど実機を触るのは何十年後か・・・ と考えている皆さん
クラウド上で公開されているIBM Quantum Computingを使って一足先に「量子コンピュータ」に触れてみてはいかがですか?
はじめに
本記事では私の中で現在ホットワードである”量子コンピュータ”について書きたいと思います。
誰でも5分で量子コンピュータを体験できるよう
量子コンピュータのなんたるか といった説明を極力省き
まず、クラウド上で公開されているIBM Quantum Computingにアクセスして
基本的な動作を実施することを目的とした記事となっております。

IBM Quantum Computingにアクセスしてみよう
IBM Q Experience へログインするためにIBM Q Experience の右上の「Sign in」をクリックし

ログイン画面で「Sign Up」を押してアカウント登録を実施するか
下に記載のSNSのIDを使うことでログインが可能です。

ログイン後上部「Learn」をクリックし、「Composer」を選択します。

下のような五線譜に似た画面が表示されたら準備完了。
量子コンピュータへ処理を実行させることができます。

[X]の演算子を使って結果を出力してみよう
画面右側のGATESに複数演算子があり、五線譜の上にドラッグ&ドロップすることで演算子を設置することができ
設置後[simulate]でシミュレート実行、「Run」で実際の量子コンピュータで演算することができます。
今回は基本的な演算子である[X] [H] を使用して実行してみましょう。
[X]はビット反転を行う演算子となります。
五線譜左のq[0] |0>~q[4]|0>の 初期ビットは0となり
[X]の演算子を置くことで反転し1となります。
下記画像のように[X]の演算子と実行結果を確認する演算子[OPERATIONS]を配置してください。

[simulate]を押した際に名前を付けるか聞かれますので任意に入力し、OKをクリックします。

下画像のような結果が出力されます。

処理結果の内容を確認していきましょう。
画面下部Number of shotsは試行回数を表し、今回は100回実行した状態です。
上部1.000 の部分は確率を表し、今回は100%同様の結果がでている状態です。
q[1] |0> を確認すると0ビットから1ビットへ反転し2桁目が1となっていることが確認できます。
今回100回試行した結果は100% q[1]が1ビットとなっていることが分かります。
ここまでの試行は現在の論理回路などで同様の確認が可能です。

[H]の演算子を使って結果を出力してみよう
さて、ここから量子コンピュータの特性を確認するため
先ほどの[X]を[H]に置き換えます。

先ほどの[X]の演算子はビット反転ですので0ビットの場合1ビットとなりますが
今回使用する[H]という演算子は0ビットと1ビットの重ね合せの状態が入ります。
0ビットと1ビットの重ね合せの状態とは コインの表が1ビット コインの裏が0ビットと仮定した場合
回転が終わるまでどちらの面になるかが分からない、 重ねあわされた状態と言えます。

通常0と1が起こりうる確率は50%ですが
試行回数を少ない条件に設定し、実行することで
[H]という演算子の特性が確認できます。
[simulate]の右側をクリックしEdit parametersを選択することで
試行回数をデフォルトの100回から 1 ~8192の範囲で変更することができます。
今回は3回へ変更します。

この状態で[simulate]を押し 結果を確認したうえで
何度か繰り返し試行し結果の推移を確認します。
3回試行した結果は以下の通りです。
0と1の結果が一定でなく試行する度に変化していることが分かります。

試行回数を最大値近くまで上げることにより
50%に近い値をとることが確認できます。

おわりに
以上、IBM Quantum Computing を使うことで、量子コンピュータに処理を投げることができたかと思います。
このように量子コンピュータを使用すると「組合せ最適化問題」等の特定のアルゴリズムは
他のプログラムを使用するより高速で分析を行うことが可能になります。
本記事は量子コンピュータの知識を0から1へ進められればと思い執筆致しました。
何事も最初はとっつきにくいとは思います。ですがこれが誰かのきっかけになればと思います。
次回は重ね合わせの状態を用いることで既存のPCより遥かに高速に探索できる
グローバーのアルゴリズム(データベースの検索)をご紹介できればと考えております。
それでは
