こんにちは、量子コンピュータって大変ですよね。今回はもっと大変になる100量子ビット越え時代について紹介します。
最近IBMが超伝導で100量子ビット越えを発表した以外にも、Rigettiは80量子ビット、冷却原子マシンのpasqal, cold quanta, queraなどもこぞって100-1000量子ビットのマシンを発表したりロードマップを発表しています。
実は量子コンピュータの教科書は10-30量子ビットを想定して書かれていて、100量子ビット越えの世界は人類未踏領域なのであまりツールがありません。これに先駆けてblueqatでは100量子ビット越え時代にふさわしいSDKを開発していますが、やはり未踏領域だけあり今までと違います。
まずは軽く100量子ビットGHZ
実行してみました。状態ベクトルは取れないので、量子コンピュータみたいにサンプルがとれます。個人的には量子コンピュータの性能あまりよくないので、こんなに精度良くなくてもいいかなというきはします。
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
50量子ビットQAOA
実行してみましょう!今回はmaxcut問題で50量子ビットを準備してみました!そして、ノードは全体の10%(メモリの関係であまり増やしきれませんでした)でエッジを作成してグラフを作ります。これをQAOAにかけるには、
1,重ね合わせを50量子ビット作る。
2,エッジの数だけ時間発展のRZZをかける。
3,mixerをかける。今回はXmixerとして、RXを適用しました。
さっそくグラフを作ってみます。今回はN=50量子ビット準備しました。
RZZをかけたエッジについて全部描画してみます。
arrにはRZZの対応量子ビットのペアの配列を入れました。
plt.figure(figsize=(15,15))
G = nx.Graph()
G.add_edges_from(arr)
nx.draw_networkx(G, node_size=100, labels={})
plt.show()
これまでの量子ゲートマシンでは考えられないサイズですよね。実際にこれを解いてみましょう。今回は開発したばかりなので、最適化はせず、時間発展を準方向に実行してみます。
もはや状態ベクトルは取れない
ここでポイントですが、このサイズでは状態ベクトルを取ることはもはやできません。通常最速スパコンでも計算できる上限が50量子ビットといわれていますので、ベクトルの形で量子状態を取り出すのは不可能です。ですので、今回はサンプルを直接取ります。一回の計算でとれる答えは一つです。
depthに限界がある
状態ベクトルだとひたすらベクトルを維持すればいいので、depthに制限はありませんが、今回は新しい技術を使っているので深さに制限があります。あまり複雑な計算ができませんので、これは実機と同じで回路を最適化するなど工夫が今後必要になりそうです。
肝心の答えは?
50量子ビット程度だとあまり工夫しなくても計算できますね。
10000101011000011101010011010101110110111011111011
これだけでも2分くらいかかりました。。。今後は速度向上を目指したいとおもいます。
今後
実機に合わせて少し精度を落として速度を向上させようとおもいます。