今回は以前Rigettiで行った振幅増幅回路をIonQで実行してみます。
参考:https://blueqat.com/yuichiro_minato2/c857f49e-5165-46a4-aa2d-8bc30bb7db2d
!pip install -U blueqat-cloud
まずはツールとAPIkeyの読み込みです。
from blueqat import Circuit
from bqcloud import load_api, Device
#キーの読み込み
api = load_api()
まずはマーキング回路です。Rigettiの時と同じ回路を使います。
#marking on |01>
----S--*--S---
-------Z-------
そして、増幅反転回路は共通です。
--H-X-*-X-H--
--H-X-Z-X-H--
これらを実装しますが、IonQのデフォルトにCZがないので、H,CX,HでCZを作ります。
a = Circuit(2).h[:].x[:].h[1].cnot[0,1].h[1].x[:].h[:]
task = api.execute(Circuit(2).h[:].s[0].h[1].cnot[0,1].h[1].s[0] + a, Device.IonQDevice, 100)
result = task.wait(timeout=10)
if result:
print(result.shots())
else:
print("timeout")
Counter({'10': 96, '00': 2, '01': 1, '11': 1})
できました!これくらいの回路ですと精度はRigettiと同じくらい出てますね。以上です。