前回はこちら
https://blueqat.com/yuichiro_minato2/9d628095-2235-4090-a2ce-4973a183acec
100量子ビット以上の計算をする
この新しい手法を使うと、100量子ビット以上の計算もできます。かつ、GPUなどの機械学習のリソースをうまく使うことができるので、ノウハウに実用的な目的もできます。
何種類か量子回路を計算してみます。
まずは部品を準備します。
量子ビットを二つ、量子ゲートを2つ準備します。numpyで計算します。
import numpy as np
q0 = np.array([1,0])
q1 = np.array([1,0])
X = np.array([[0,1],[1,0]])
CX = np.array([[1,0,0,0],[0,1,0,0],[0,0,0,1],[0,0,1,0]])
途中経過まとめ
順番は自由。腕だけを間違えなければいい。腕の数は変更できる。
次は期待値を求めてみる。
同じようにすれば良い
import numpy as np
q0 = np.array([1,0])
q1 = np.array([1,0])
q2 = np.array([1,0])
q3 = np.array([1,0])
X1 = np.array([[0,1],[1,0]])
X2 = np.array([[0,1],[1,0]])
X3 = np.array([[0,1],[1,0]])
CX1 = np.array([[1,0,0,0],[0,1,0,0],[0,0,0,1],[0,0,1,0]]).reshape([2,2,2,2])
CX2 = np.array([[1,0,0,0],[0,1,0,0],[0,0,0,1],[0,0,1,0]]).reshape([2,2,2,2])
res1 = np.einsum("i,ij->j",q0,X1)
res2 = np.einsum("j,k,jklq->lq",res1,q1,CX1)
res3 = np.einsum("m,mn->n",q2,X2)
res4 = np.einsum("n,o,nopq->pq",res3,q3,CX2)
res5 = np.einsum("lq,pq,lp",res2,res4,X3)
res5
0
einsum計算
問題設定さえ量子の問題設定として考えると、einsum計算である程度量子コンピュータの計算が効率的に計算できる。超伝導量子ビットは隣接の接続に制限されるし、イオントラップは結合は多いが量子ビットが少ない。どちらにしろ現在の古典コンピュータの性能からすると十分に計算ができる範囲に収まっている。
以上