common.title

Docs
Quantum Circuit
TYTAN CLOUD

Quantum Apps

Quantum Business Magazine


Overview
Contact
Event
Project
Research

Terms of service (Web service)

Terms of service (Quantum and ML Cloud service)

Privacy policy


Sign in
Sign up
common.title

blueqatSDKを使って量子回路をjson化する

Yuichiro Minato

2022/03/12 07:49

blueqatで量子回路をjsonで取り出す

量子回路をjsonで取り出し、フロントのGUIと接続するためのjsonモジュールの使い方を見ます。関数が準備されています。

json_serializer.serialize()で量子回路を囲みます。

from blueqat import Circuit
from blueqat.circuit_funcs import json_serializer

json_serializer.serialize(Circuit().h[0].cx[0,1].cx[1,2].cx[2,3].h[4])
{'schema': {'name': 'blueqat-circuit', 'version': '1'},
 'n_qubits': 5,
 'ops': [{'name': 'h', 'params': [], 'targets': [0]},
  {'name': 'cx', 'params': [], 'targets': [0, 1]},
  {'name': 'cx', 'params': [], 'targets': [1, 2]},
  {'name': 'cx', 'params': [], 'targets': [2, 3]},
  {'name': 'h', 'params': [], 'targets': [4]}]}

上記の回路では、それぞれ量子ゲートごとの回路がjsonに分解されました。これで終わりなのですが、せっかくなのでQAOAの組合せ最適化の回路をjson化してみたいと思います。QAOAモジュールを使います。

まずは普通のQAOAをハミルトニアンから作ります。内容の説明は割愛します。

from blueqat.pauli import Z
from blueqat import vqe

hamiltonian = Z[0]*Z[1] + Z[1]*Z[2] + Z[2]*Z[0]

result = vqe.Vqe(vqe.QaoaAnsatz(hamiltonian, 1)).run()
print(result.most_common(12))
(((1, 0, 0), 0.1571013664707446), ((0, 1, 1), 0.1571013664707446), ((0, 1, 0), 0.15710136647074457), ((1, 1, 0), 0.15710136647074457), ((0, 0, 1), 0.15710136647074457), ((1, 0, 1), 0.15710136647074457), ((0, 0, 0), 0.028695900587766054), ((1, 1, 1), 0.028695900587766054))

そして、jsonへはこの回路を使ってみると、

json_serializer.serialize(result.circuit)
{'schema': {'name': 'blueqat-circuit', 'version': '1'},
 'n_qubits': 3,
 'ops': [{'name': 'h', 'params': [], 'targets': [0]},
  {'name': 'h', 'params': [], 'targets': [1]},
  {'name': 'h', 'params': [], 'targets': [2]},
  {'name': 'cx', 'params': [], 'targets': [0, 1]},
  {'name': 'rz', 'params': [-49.769282051402904], 'targets': [1]},
  {'name': 'cx', 'params': [], 'targets': [0, 1]},
  {'name': 'cx', 'params': [], 'targets': [0, 2]},
  {'name': 'rz', 'params': [-49.769282051402904], 'targets': [2]},
  {'name': 'cx', 'params': [], 'targets': [0, 2]},
  {'name': 'cx', 'params': [], 'targets': [1, 2]},
  {'name': 'rz', 'params': [-49.769282051402904], 'targets': [2]},
  {'name': 'cx', 'params': [], 'targets': [1, 2]},
  {'name': 'rx', 'params': [2.214185410129439], 'targets': [0]},
  {'name': 'rx', 'params': [2.214185410129439], 'targets': [1]},
  {'name': 'rx', 'params': [2.214185410129439], 'targets': [2]}]}

こうなりました。回路に今回はパラメータも入りわかりやすいですね。以上です。

© 2025, blueqat Inc. All rights reserved