common.title

Docs
Quantum Circuit
TYTAN CLOUD

QUANTUM GAMING


Desktop RAG

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化できました。

© 2025, blueqat Inc. All rights reserved