Nobisuke
Dekisugi
RAG
Privacy policy
2021/04/22 17:07
今回はRigettiで振幅増幅回路を実行してみます。
Copy from blueqat import Circuit from bqcloud import load_api, Device #キーの読み込み api = load_api()
今回は、こちらの回路を利用し、10のデータを増幅するような回路を作ります。下記はマーキング回路です。
Copy ''' #marking on |01> ----S--*--S--- -------Z------- ''' Circuit(2).s[0].cz[0,1].s[0].run_with_sympy_unitary()
Matrix([
[1, 0, 0, 0],
[0, -1, 0, 0],
[0, 0, 1, 0],
[0, 0, 0, 1]])
こちらの回路に下記のような増幅反転回路を実行します。
Copy ''' --H-X-*-X-H-- --H-X-Z-X-H-- ''' Circuit(2).h[:].x[:].cz[0,1].x[:].h[:].run_with_sympy_unitary()
Matrix([
[ 1/2, -1/2, -1/2, -1/2],
[-1/2, 1/2, -1/2, -1/2],
[-1/2, -1/2, 1/2, -1/2],
[-1/2, -1/2, -1/2, 1/2]])
Copy a = Circuit(2).h[:].x[:].cz[0,1].x[:].h[:]
こちらをまとめて実行です。
Copy task = api.execute(Circuit(2).h[:].s[0].cz[0,1].s[0] + a, Device.Aspen9, 100)
Copy result = task.wait(timeout=100) if result: print(result.shots()) else: print("timeout")
Counter({'10': 94, '11': 5, '00': 1})
今回はうまい感じに振幅増幅できました。10のビット列が増幅されて出てきています。以上です。
© 2024, blueqat Inc. All rights reserved