はじめに
最近は新型コロナウィルスの影響で、イベントを開催するかどうかの判断が難しくなっています。この記事を書いている僕も、実は部署の送別会を企図していました。そこでIBM Qという量子コンピュータとそれをクラウド上から実行できるIBM Q Experienceを利用して、量子ビットが持つ確率的な性質を利用してイベントのやるやらを決定しようと思いました。量子ビットは誰かの都合や建前を忖度しません。
準備
IBMのアカウントを取得して、IBM Q Experienceへ移動すると、量子コンピュータを利用したい理由などいくつかの質問に解答すると使えるようになります。今回は送別会のやるやらを決めるために使いたいので、そのように書いておきます。
“I am planning to our division's farewell party but considering a new corona virus infection I want to use a qubit to determine if the party will be held or not.” pic.twitter.com/WFMxzXDleY
— 吉村 優 / YOSHIMURA Yuu (@_yyu_) March 2, 2020
$$
\def\bra#1{\mathinner{\left\langle{#1}\right|}}
\def\ket#1{\mathinner{\left|{#1}\right\rangle}}
\def\braket#1#2{\mathinner{\left\langle{#1}\middle|#2\right\rangle}}
$$
回路づくり
IBM Q Experienceの画面でどんどん回路を作っていきます。といっても今回は$\frac{1}{2}$でtrue
かfalse
みたいな1bitが得られればいいので、次のような簡単な回路となります。
$\ket{0}$にアダマールゲート($H$)をかけてからZ軸測定しているだけの超シンプルな回路となりました。
エミュレーター実行
まずはこれをシミュレーターで実行してみます。回路を保存したら、画面上のRUN
ボタンを押すと次のようにどういうバックエンドで実行するか?を選択する画面があらわれます。
このようにまずはシミュレーターにしておいて、実行回数はとりあえず1024
にしておきます。
こういう感じで結果が出ました。0
と1
がほぼ50:50で出ているので成功のようです。
IBM Qで実行
いよいよ実機でやっていきます。同じ回路をIBM Qのibmq_16_melbourne
という実機に投入してみます。偏りがないか見たいので、1024回実行します。
偏ってますね……。00000
と表示されていることからも、測定ができる量子ビットは5個ありそうなので、片っ端からやっていって一番50:50に近いやつを使うことにするべきなんでしょうか……。とりあえずもう1回実行したところ、もうちょっと50:50に近付きました。
まあ多少はヨシ!ということでこのまま最下位ビットを使う方針でいきます。
判定プロトコル
まああとは簡単に次のようにすればいいと思います。
- Slackなどで「1ならやる、0ならやらない」といった1bitとやる・やらを対応させたものを公開する
- 上記の量子回路をIBM Qで実行する
- (2)の結果を(1)の対応と照合してやるやらを判定する
まとめ
こういった状況であると、なんでも中止にしておいた方がいいのかな?という気分になります。個々の判断は尊重されるべきですが、信念を持った判断をしたいとも思います。量子コンピュータに判断を委ねるというのも、運まかせですが運にまかせるという1つの信念かもしれません。
また僕の企図していた送別会のやるやらは、決まり次第ここに追記します。
追記 3/25
中止になってしまいましたー