🐥

MPSの要素指定

2023/09/17に公開

ある多次元空間上のある点上でのMPSの要素の値を知りたい。
以下のようなに対応する。

画像は、ITensorの公式ドキュメントから引用した。

https://itensor.github.io/ITensors.jl/dev/examples/MPSandMPO.html

計算量は、縮約の計算O(D^2), Dはボンド次元。

上のリンク先のサンプルコードそのまんまであるが、ここでは、onehotを使って計算してみる。

R = 10
s = [Index(2, "Qubit,q=$q") for q in 1:R]
chi = 4
psi = randomMPS(s;linkdims=chi)

# Make an array of integers of the element we
# want to obtain
el = [1,2,1,1,2,1,2,2,2,1]

V = ITensor(1.)
for j=1:N
  V *= (psi[j]*onehot(s[j] => el[j])) #ここを変えただけ
end
v = scalar(V)

# v is the element we wanted to obtain:
@show v

Discussion