量子コンピュータでイベントの開催を決める

はじめに

最近は新型コロナウィルスの影響で、イベントを開催するかどうかの判断が難しくなっています。この記事を書いている僕も、実は部署の送別会を企図していました。そこでIBM Qという量子コンピュータとそれをクラウド上から実行できるIBM Q Experienceを利用して、量子ビットが持つ確率的な性質を利用してイベントのやるやらを決定しようと思いました。量子ビットは誰かの都合や建前を忖度しません。

準備

IBMのアカウントを取得して、IBM Q Experienceへ移動すると、量子コンピュータを利用したい理由などいくつかの質問に解答すると使えるようになります。今回は送別会のやるやらを決めるために使いたいので、そのように書いておきます。

$$ \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}$でtruefalseみたいな1bitが得られればいいので、次のような簡単な回路となります。

circuit.png

$\ket{0}$にアダマールゲート($H$)をかけてからZ軸測定しているだけの超シンプルな回路となりました。

エミュレーター実行

まずはこれをシミュレーターで実行してみます。回路を保存したら、画面上のRUNボタンを押すと次のようにどういうバックエンドで実行するか?を選択する画面があらわれます。

このようにまずはシミュレーターにしておいて、実行回数はとりあえず1024にしておきます。

nijef25p.png

こういう感じで結果が出ました。01がほぼ50:50で出ているので成功のようです。

IBM Qで実行

いよいよ実機でやっていきます。同じ回路をIBM Qのibmq_16_melbourneという実機に投入してみます。偏りがないか見たいので、1024回実行します。

riw7hxivl.png

偏ってますね……。00000と表示されていることからも、測定ができる量子ビットは5個ありそうなので、片っ端からやっていって一番50:50に近いやつを使うことにするべきなんでしょうか……。とりあえずもう1回実行したところ、もうちょっと50:50に近付きました。

1ihyyrau.png

まあ多少はヨシ!ということでこのまま最下位ビットを使う方針でいきます。

判定プロトコル

まああとは簡単に次のようにすればいいと思います。

  1. Slackなどで「1ならやる、0ならやらない」といった1bitとやる・やらを対応させたものを公開する
  2. 上記の量子回路をIBM Qで実行する
  3. (2)の結果を(1)の対応と照合してやるやらを判定する

まとめ

こういった状況であると、なんでも中止にしておいた方がいいのかな?という気分になります。個々の判断は尊重されるべきですが、信念を持った判断をしたいとも思います。量子コンピュータに判断を委ねるというのも、運まかせですが運にまかせるという1つの信念かもしれません。 また僕の企図していた送別会のやるやらは、決まり次第ここに追記します。

追記 3/25

中止になってしまいましたー 😇

コメント