common.title
Cloud support

Nobisuke

Dekisugi

RAG


autoQAOA
RAG for dev
Fortune telling app
Annealing
DEEPSCORE
Translation

Overview
Service overview
Terms of service

Privacy policy

Contact
Research

Sign in
Sign up
common.title

blueqat0.4.6で量子コンピュータの量子回路をJSON化する

Yuichiro Minato

2021/08/06 13:40

#blueqat #json

1

量子コンピュータの量子回路をJSON化する

最近量子回路をウェブのUIで利用する機会が増えてきました。 blueqatの新バージョン0.4.6で量子回路のJSON化できる機能が追加されたみたいなので見てみたいと思います。

まずは、普通に回路を作ってみます。GHZという回路を作ってみます。

from blueqat import Circuit a = Circuit().h[0].cx[0,1].cx[1,2] a.m[:].run(shots=100)
Counter({'111': 56, '000': 44})

このように000と111と答えがでました。これをそのままJSONにしてみます。

from blueqat.circuit_funcs import json_serializer json_serializer.serialize(a)
{'schema': {'name': 'blueqat-circuit', 'version': '1'},

 'n_qubits': 3,

 'ops': [{'name': 'h', 'params': [], 'targets': [0]},

  {'name': 'cx', 'params': [], 'targets': [0, 1]},

  {'name': 'cx', 'params': [], 'targets': [1, 2]},

  {'name': 'measure', 'params': [], 'targets': [0]},

  {'name': 'measure', 'params': [], 'targets': [1]},

  {'name': 'measure', 'params': [], 'targets': [2]}]}

いい感じですね。続いてQAOAもやってみます。

QAOAの量子回路をJSON化する

続いて、QAOAの回路もJSONにしてみます。

from blueqat import vqe from blueqat.pauli import qubo_bit as q hamiltonian = -3*q(0)-3*q(1)-3*q(2)-3*q(3)-3*q(4)+2*q(0)*q(1)+2*q(0)*q(2)+2*q(0)*q(3)+2*q(0)*q(4)+2*q(1)*q(2)+2*q(1)*q(3)+2*q(1)*q(4)+2*q(2)*q(3)+2*q(2)*q(4)+2*q(3)*q(4) step = 2 result = vqe.Vqe(vqe.QaoaAnsatz(hamiltonian, step)).run() print(result.most_common(12))
(((0, 1, 0, 0, 1), 0.0731599141347431), ((1, 0, 0, 0, 1), 0.07315991413474307), ((0, 1, 1, 0, 0), 0.07315991413474306), ((0, 1, 0, 1, 0), 0.07315991413474306), ((0, 0, 1, 1, 0), 0.07315991413474306), ((0, 0, 1, 0, 1), 0.07315991413474306), ((0, 0, 0, 1, 1), 0.07315991413474306), ((1, 0, 1, 0, 0), 0.07315991413474303), ((1, 0, 0, 1, 0), 0.07315991413474303), ((1, 1, 0, 0, 0), 0.07315991413474299), ((1, 1, 0, 0, 1), 0.016525308363087545), ((0, 1, 1, 1, 0), 0.01652530836308754))
json_serializer.serialize(result.circuit)
{'schema': {'name': 'blueqat-circuit', 'version': '1'},

 'n_qubits': 5,

 'ops': [{'name': 'h', 'params': [], 'targets': [0]},

  {'name': 'h', 'params': [], 'targets': [1]},

  {'name': 'h', 'params': [], 'targets': [2]},

  {'name': 'h', 'params': [], 'targets': [3]},

  {'name': 'h', 'params': [], 'targets': [4]},

  {'name': 'cx', 'params': [], 'targets': [0, 1]},

  {'name': 'rz', 'params': [-6.051465271712881], 'targets': [1]},

  {'name': 'cx', 'params': [], 'targets': [0, 1]},

  {'name': 'cx', 'params': [], 'targets': [0, 2]},

  {'name': 'rz', 'params': [-6.051465271712881], 'targets': [2]},

  {'name': 'cx', 'params': [], 'targets': [0, 2]},

  {'name': 'cx', 'params': [], 'targets': [0, 3]},

  {'name': 'rz', 'params': [-6.051465271712881], 'targets': [3]},

  {'name': 'cx', 'params': [], 'targets': [0, 3]},

  {'name': 'cx', 'params': [], 'targets': [0, 4]},

  {'name': 'rz', 'params': [-6.051465271712881], 'targets': [4]},

  {'name': 'cx', 'params': [], 'targets': [0, 4]},

  {'name': 'rz', 'params': [6.051465271712881], 'targets': [0]},

  {'name': 'cx', 'params': [], 'targets': [1, 2]},

  {'name': 'rz', 'params': [-6.051465271712881], 'targets': [2]},

  {'name': 'cx', 'params': [], 'targets': [1, 2]},

  {'name': 'cx', 'params': [], 'targets': [1, 3]},

  {'name': 'rz', 'params': [-6.051465271712881], 'targets': [3]},

  {'name': 'cx', 'params': [], 'targets': [1, 3]},

  {'name': 'cx', 'params': [], 'targets': [1, 4]},

  {'name': 'rz', 'params': [-6.051465271712881], 'targets': [4]},

  {'name': 'cx', 'params': [], 'targets': [1, 4]},

  {'name': 'rz', 'params': [6.051465271712881], 'targets': [1]},

  {'name': 'cx', 'params': [], 'targets': [2, 3]},

  {'name': 'rz', 'params': [-6.051465271712881], 'targets': [3]},

  {'name': 'cx', 'params': [], 'targets': [2, 3]},

  {'name': 'cx', 'params': [], 'targets': [2, 4]},

  {'name': 'rz', 'params': [-6.051465271712881], 'targets': [4]},

  {'name': 'cx', 'params': [], 'targets': [2, 4]},

  {'name': 'rz', 'params': [6.051465271712881], 'targets': [2]},

  {'name': 'cx', 'params': [], 'targets': [3, 4]},

  {'name': 'rz', 'params': [-6.051465271712881], 'targets': [4]},

  {'name': 'cx', 'params': [], 'targets': [3, 4]},

  {'name': 'rz', 'params': [6.051465271712881], 'targets': [3]},

  {'name': 'rz', 'params': [6.051465271712881], 'targets': [4]},

  {'name': 'rx', 'params': [5.043183193995812], 'targets': [0]},

  {'name': 'rx', 'params': [5.043183193995812], 'targets': [1]},

  {'name': 'rx', 'params': [5.043183193995812], 'targets': [2]},

  {'name': 'rx', 'params': [5.043183193995812], 'targets': [3]},

  {'name': 'rx', 'params': [5.043183193995812], 'targets': [4]},

  {'name': 'cx', 'params': [], 'targets': [0, 1]},

  {'name': 'rz', 'params': [-12.818051168284407], 'targets': [1]},

  {'name': 'cx', 'params': [], 'targets': [0, 1]},

  {'name': 'cx', 'params': [], 'targets': [0, 2]},

  {'name': 'rz', 'params': [-12.818051168284407], 'targets': [2]},

  {'name': 'cx', 'params': [], 'targets': [0, 2]},

  {'name': 'cx', 'params': [], 'targets': [0, 3]},

  {'name': 'rz', 'params': [-12.818051168284407], 'targets': [3]},

  {'name': 'cx', 'params': [], 'targets': [0, 3]},

  {'name': 'cx', 'params': [], 'targets': [0, 4]},

  {'name': 'rz', 'params': [-12.818051168284407], 'targets': [4]},

  {'name': 'cx', 'params': [], 'targets': [0, 4]},

  {'name': 'rz', 'params': [12.818051168284407], 'targets': [0]},

  {'name': 'cx', 'params': [], 'targets': [1, 2]},

  {'name': 'rz', 'params': [-12.818051168284407], 'targets': [2]},

  {'name': 'cx', 'params': [], 'targets': [1, 2]},

  {'name': 'cx', 'params': [], 'targets': [1, 3]},

  {'name': 'rz', 'params': [-12.818051168284407], 'targets': [3]},

  {'name': 'cx', 'params': [], 'targets': [1, 3]},

  {'name': 'cx', 'params': [], 'targets': [1, 4]},

  {'name': 'rz', 'params': [-12.818051168284407], 'targets': [4]},

  {'name': 'cx', 'params': [], 'targets': [1, 4]},

  {'name': 'rz', 'params': [12.818051168284407], 'targets': [1]},

  {'name': 'cx', 'params': [], 'targets': [2, 3]},

  {'name': 'rz', 'params': [-12.818051168284407], 'targets': [3]},

  {'name': 'cx', 'params': [], 'targets': [2, 3]},

  {'name': 'cx', 'params': [], 'targets': [2, 4]},

  {'name': 'rz', 'params': [-12.818051168284407], 'targets': [4]},

  {'name': 'cx', 'params': [], 'targets': [2, 4]},

  {'name': 'rz', 'params': [12.818051168284407], 'targets': [2]},

  {'name': 'cx', 'params': [], 'targets': [3, 4]},

  {'name': 'rz', 'params': [-12.818051168284407], 'targets': [4]},

  {'name': 'cx', 'params': [], 'targets': [3, 4]},

  {'name': 'rz', 'params': [12.818051168284407], 'targets': [3]},

  {'name': 'rz', 'params': [12.818051168284407], 'targets': [4]},

  {'name': 'rx', 'params': [0.4581402395326511], 'targets': [0]},

  {'name': 'rx', 'params': [0.4581402395326511], 'targets': [1]},

  {'name': 'rx', 'params': [0.4581402395326511], 'targets': [2]},

  {'name': 'rx', 'params': [0.4581402395326511], 'targets': [3]},

  {'name': 'rx', 'params': [0.4581402395326511], 'targets': [4]}]}

このようにパラメータ付きで変分量子回路がJSON化できました。

© 2024, blueqat Inc. All rights reserved