Rigettiで量子振幅増幅回路(グローバーの一般化)の計算

今回はRigettiで振幅増幅回路を実行してみます。

from blueqat import Circuit
from bqcloud import load_api, Device

#キーの読み込み
api = load_api()

今回は、こちらの回路を利用し、10のデータを増幅するような回路を作ります。下記はマーキング回路です。

'''
#marking on |01>
 
----S--*--S---
-------Z-------
'''

Circuit(2).s[0].cz[0,1].s[0].run_with_sympy_unitary()

こちらの回路に下記のような増幅反転回路を実行します。

'''
--H-X-*-X-H--
--H-X-Z-X-H--
'''

Circuit(2).h[:].x[:].cz[0,1].x[:].h[:].run_with_sympy_unitary()
a = Circuit(2).h[:].x[:].cz[0,1].x[:].h[:]

こちらをまとめて実行です。

task = api.execute(Circuit(2).h[:].s[0].cz[0,1].s[0] + a, Device.Aspen9, 100)
result = task.wait(timeout=100)
if result:
    print(result.shots())
else:
    print("timeout")

今回はうまい感じに振幅増幅できました。10のビット列が増幅されて出てきています。以上です。

Yuichiro Minato
blueqat CEO/CTO 2015年総務省異能vation最終採択 2017年内閣府ImPACTプロジェクトPM補佐 2019年文科省さきがけ量子情報処理領域アドバイザー
Comments
Yuichiro Minato
blueqat CEO/CTO 2015年総務省異能vation最終採択 2017年内閣府ImPACTプロジェクトPM補佐 2019年文科省さきがけ量子情報処理領域アドバイザー
Related posts

blueqat Inc.

Shibuya Scramble Square 39F 2-24-12, Shibuya, Shibuya-ku, Tokyo
Contact: info@blueqat.com