はじめに
全世界で使われているOpenSSLの開発者は常勤1名のようです。
https://jp.wsj.com/articles/SB10001424052702303433504579501080000871574
人々はソフトウェアの中身が分からなくても使えれば全世界で使われて、有用にビジネスに応用できます。量子コンピュータは量子計算を学ぶのが基本となっていますが、それが変わりつつあります。
社会人にそんな時間はない
量子計算を学ぶのに数年という時間はなく、働き方改革でただでさえ時間が使えず、手っ取り早く使いたいところです。
現在の計算は変分計算が主流のハイブリッド方式
現在の量子コンピュータのアルゴリズムで現場で利用されているのは主にハイブリッド方式でかつ、本来の汎用計算とは異なるものです。現在変分計算のハイブリッドが本当に有用かどうか分からないので、覚えるのは研究者と開発者だけでいいかもしれません。
一から量子計算やハイブリッドの変分計算を学んだところで役に立つと言える人はほぼいないのではないでしょうか。開発者にお任せして、実際に何の計算ができるのかという利用者目線に立って、量子計算を学ばずに量子コンピュータを使ってみましょう。
ライブラリが揃ってきている
なぜそんなことが可能なのか?それはライブラリが揃ってきているからです。XとかHとか記号を学ばなくてもすぐに使えるツールが出てきていて、それはさらに加速するものと思われます。代表的なのはIBMの提供するQiskit Aquaです。
Qiskit Aquaを使えば、量子計算が分からなくても計算できます。
「IBMのQiskit Aquaで量子コンピュータ向けアルゴリズムを実装(maxcut)」
https://qiita.com/YuichiroMinato/items/5862d4feb8fa276a96b1
VQEというアルゴリズムを使って、組み合わせ最適化問題をときます。
Blueqatで、
Blueqatで同様にやってみます。インストールは、
pip install blueqat
上記と同様の問題を解くには、
#読み込み
from blueqat import vqe
from blueqat.pauli import *
#問題の設定。ハミルトニアンというものを作ります。社会問題に対応。
hamiltonian = Z(0)*Z(1)+Z(0)*Z(2)+Z(0)*Z(3)+Z(1)*Z(2)+Z(2)*Z(3)
#計算ステップを決める。精度と速度に影響。
step = 1
#計算を実行して、最後確率の高いものを取り出します。
result = vqe.Vqe(vqe.QaoaAnsatz(hamiltonian, step)).run()
print(result.most_common(12))
計算結果の例として、
(((1, 0, 1, 0), 0.17576928882910106), ((0, 1, 0, 1), 0.17576928882910106), ((0, 0, 1, 0), 0.0849804542665225), ((1, 1, 0, 1), 0.0849804542665225), ((1, 0, 0, 0), 0.08498045426652245), ((0, 1, 1, 1), 0.08498045426652245), ((0, 1, 0, 0), 0.06825746241665956), ((1, 1, 1, 0), 0.06825746241665956), ((0, 0, 0, 1), 0.06825746241665956), ((1, 0, 1, 1), 0.06825746241665956), ((0, 0, 0, 0), 0.015650862070110693), ((1, 1, 1, 1), 0.015650862070110693))
これは、1010と0101が比較的高い確率で現れることを示しています。上記の問題は回路を書く代わりに社会問題をグラフ問題というものに落とすことで、量子計算を覚えずにハイブリッド計算で答えが出ています。
今後はツールが充実するので、どんどん利用範囲が広がっていくことでしょう。