common.title

Docs
Quantum Circuit
TYTAN CLOUD

QUANTUM GAMING


Overview
Terms of service

Privacy policy

Contact
Research

Sign in
Sign up
common.title

blueqatに光量子コンピュータ対応の光連続量モジュールが搭載。今年登場予定の光量子コンピュータに対応です。量子テレポーテーションのサンプルを実行してみる

Yuichiro Minato

2022/04/18 06:53

こんにちは、量子コンピュータの発展は目覚ましいですがまだまだ未完成ですよね。精力的に次世代型のマシンを開発していきます。

この度弊社では光量子計算に対応するためにblueqatにモジュールを追加しました。今年登場予定の光量子コンピュータの実機計算対応です。

導入方法は下記のようにblueqatからphotonqatモジュールを読み込みます。

from blueqat import photonqat as pq
import numpy as np
import matplotlib.pyplot as plt
G = pq.Gaussian(3)

# original state
x_origin = 1
p_origin = 0.5

# squeezeng level
r = 2

G.D(0, x_origin + p_origin * 1j) # state to teleport
G.S(1, -r)
G.S(2, r)
G.BS(1, 2, np.pi/4) # 50:50 beam splitter
G.BS(0, 1, np.pi/4) # 50:50 beam splitter
G.MeasX(0)
G.MeasP(1)
G.X(2, G.Creg(0, "x", scale = np.sqrt(2)))
G.Z(2, G.Creg(1, "p", scale = np.sqrt(2)))
#G.X(2, G.Creg(0, "x"))
#G.Z(2, G.Creg(1, "p"))

G.run()

G.Wigner(2) # plot
print('Mode 0: Original state =', [x_origin * np.sqrt(2), p_origin * np.sqrt(2)])
print('measured x =', G.Creg(0, "x").read())
print('measured p =', G.Creg(1, "p").read())
print('teleported mu =', G.mean(2)) # mu of qumode 0
<Figure size 432x288 with 1 Axes>

image

Mode 0: Original state = [1.4142135623730951, 0.7071067811865476]
measured x = 2.290600984077483
measured p = -0.651583653902112
teleported mu = [1.4798699  0.64852263]

上記はガウシアンシミュレータを使って実装されています。Fockシミュレータの方も見てみましょう。

F = pq.Fock(3, cutoff = 20)

# original state
x_origin = 1
p_origin = 0.5

# squeezeng level
r = 2

# prepare the state to teleport
F.D(0, x_origin + p_origin * 1j) # Displacement

F.S(1, -r) # Squeezing
F.S(2, r) # Squeezing
F.BS(1, 2, np.pi/4) # 50:50 beam splitter
F.BS(0, 1, np.pi/4) # 50:50 beam splitter
F.MeasX(0)
F.MeasP(1)
F.D(2, F.Creg(0, "x", scale = 1))
F.D(2, F.Creg(1, "p", scale = 1j))
F.run()

print('Mode 0: Original state =', [x_origin * np.sqrt(2), p_origin * np.sqrt(2)])
print('measured x =', F.Creg(0, "x", scale = 1).read())
print('measured p =', F.Creg(1, "p", scale = 1j).read())

W, x, p = F.Wigner(2) # plot
Mode 0: Original state = [1.4142135623730951, 0.7071067811865476]
measured x = [2.37018517]
measured p = [-0.-1.47899555j]
<Figure size 432x288 with 1 Axes>

image

Fockシミュレータのほうはある程度のcutoffサイズがないと計算ができませんが、一旦両方で計算ができました。

© 2025, blueqat Inc. All rights reserved