common.title

Docs
Quantum Circuit
TYTAN CLOUD

QUANTUM GAMING


Overview
Terms of service

Privacy policy

Contact
Research

Sign in
Sign up
common.title

The blueqat is equipped with an continuous variable module for optical quantum computers. Running a quantum teleportation sample.

Yuichiro Minato

2022/04/18 07:38

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

この度弊社では光量子計算に対応するために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