Top 8
git checkout hogeしてerror: pathspec 'hoge' did not match any file(s) known to gitとなったときの対処法【Git】
Oct. 13, 2019, 12:57 a.m.GitHubからpullするときにfatal: refusing to merge unrelated historiesとエラーが出るときの対処法
Aug. 13, 2019, 3:41 a.m.Secure BootのままNvidiaドライバをaptからインストールする【Ubuntu 16.04】
July 24, 2021, 9:39 a.m.NumPyで標準誤差を計算する【Python】
Feb. 4, 2020, 2:24 a.m.
ストーリー追加 Mod: The Outsider やっていく日記【Outer Wilds】
Feb. 19, 2023, 6:33 a.m.正規表現のre.search().groups()とre.findall()の違い【Python】
Oct. 11, 2019, 12:12 a.m.OverleafのBibTeXでjunsrtを使う
Jan. 8, 2019, 1:30 a.m.
Google Driveで「画像をコピー」をする
Oct. 8, 2018, 8:48 a.m.Qiskit でエンタングルメント・エントロピーを計算する
March 12, 2022, 9:59 a.m. edited March 13, 2022, 12:36 a.m. $$ \def\bra#1{\mathinner{\left\langle{#1}\right|}} \def\ket#1{\mathinner{\left|{#1}\right\rangle}} \def\braket#1#2{\mathinner{\left\langle{#1}\middle|#2\right\rangle}} $$注意事項:本記事では量子アルゴリズムによりエンタングルメント・エントロピーを計算するのではなく、 Qiskit の API を用いて計算する。もしも量子アルゴリズムで求めたいならば [arXiv:1908.05251] とか参照すると良いかもしれない。
エンタングルメント・エントロピー
量子エンタングルメントの強さを定量化する量としてエンタングルメント・エントロピーがある。ただし定量化できるのは純粋状態のときのみであるので、今回は純粋状態しか考えない。
ある 2 つの部分系 A, B からなる量子状態 \(\ket{\psi}_{AB}\) を考えると、密度演算子は \(\rho_{AB}=\ket{\psi}_{AB}\bra{\psi}\) と表される。この密度演算子を部分系 B についてトレースアウトした縮約密度演算子 \(\rho_A=\mathrm{Tr}_B\rho_{AB}\) を用いて、エンタングルメント・エントロピーは
$$S_A=-\mathrm{Tr}\rho_A \log \rho_A$$
と表される。
エンタングルメント・エントロピーの計算例
2 つの量子ビット A, B を用いた
$$\ket{\psi}_{AB}=c\ket{0}_A\ket{0}_B+\sqrt{1-c^2}\ket{1}_A\ket{1}_B\tag{1}$$
を考える(\(0\leq c\leq 1\))。この密度演算子は
$$ \begin{align} \rho_{AB}=&c^2\ket{0}_A\ket{0}_B\bra{0}_A\bra{0}_B+c\sqrt{1-c^2}\ket{0}_A\ket{0}_B\bra{1}_A\bra{1}_B\\ +&c\sqrt{1-c^2}\ket{1}_A\ket{1}_B\bra{0}_A\bra{0}_B+(1-c^2)\ket{1}_A\ket{1}_B\bra{1}_A\bra{1}_B \end{align} $$
であるので、部分系 B についてトレースアウトした縮約密度演算子は
$$ \begin{align} \rho_{A}&=\mathrm{Tr}_B\rho_{AB}\\ &=\bra{0}_B\rho_{AB}\ket{0}_B+\bra{1}_B\rho_{AB}\ket{1}_B\\ &=c^2\ket{0}_A\bra{0}_A+(1-c^2)\ket{1}_A\bra{1}_A \end{align} $$
となる。ゆえに、エンタングルメント・エントロピーは
$$ \begin{align} S_A&=-\mathrm{Tr}\rho_A\log\rho_A\\ &=-\mathrm{Tr}\{(c^2\log c^2)\ket{0}_A\bra{0}_A+((1-c^2)\log(1-c^2))\ket{1}_A\bra{1}_A\}\\ &=-c^2\log c^2-(1-c^2)\log(1-c^2) \end{align} $$
となる。このとき、 \(S_A\) は \(c=0,1\) のときに最小の \(0\)、\(c=\frac{1}{\sqrt{2}}\) のときに最大の \(\log 2=1\) となる。
Qiskit で計算
前節で手計算したエンタングルメント・エントロピーを Qiskit で計算してみる。状態 (1) は RYGate を用いることで作成できる。環境としては qiskit==0.34.2
, qiskit-aer==0.10.3
にて実験している。部分トレースをおこなう関数として partial_trace
、 von Neumann entropy を計算する関数として entropy
があるので、この 2 つを組み合わせることで以下のようにエンタングルメント・エントロピーを計算できる。
import numpy as np
from qiskit import QuantumCircuit, Aer, transpile
from qiskit.quantum_info import partial_trace, entropy
c = 1 / np.sqrt(2)
def main():
qc = QuantumCircuit(2)
qc.ry(2 * np.arccos(c), 0)
qc.cx(0, 1)
backend = Aer.get_backend('aer_simulator_statevector')
qc = transpile(qc, backend)
qc.save_statevector()
job = backend.run(qc)
statevector = job.result().get_statevector(qc)
reduced_state = partial_trace(statevector, [1]) # 1 (つまり部分系 B) について部分トレース
print(np.array(reduced_state))
print(entropy(reduced_state))
if __name__ == '__main__':
main()
5 行目の c
に \(\frac{1}{\sqrt{2}}\) を入れて実行すると、
[[0.5+0.j 0. +0.j]
[0. +0.j 0.5+0.j]]
1.0
となり、正しい縮約密度演算子および最大のエンタングルメント・エントロピーが得られたことを確認できた。
Top 8
git checkout hogeしてerror: pathspec 'hoge' did not match any file(s) known to gitとなったときの対処法【Git】
Oct. 13, 2019, 12:57 a.m.GitHubからpullするときにfatal: refusing to merge unrelated historiesとエラーが出るときの対処法
Aug. 13, 2019, 3:41 a.m.Secure BootのままNvidiaドライバをaptからインストールする【Ubuntu 16.04】
July 24, 2021, 9:39 a.m.NumPyで標準誤差を計算する【Python】
Feb. 4, 2020, 2:24 a.m.
ストーリー追加 Mod: The Outsider やっていく日記【Outer Wilds】
Feb. 19, 2023, 6:33 a.m.正規表現のre.search().groups()とre.findall()の違い【Python】
Oct. 11, 2019, 12:12 a.m.OverleafのBibTeXでjunsrtを使う
Jan. 8, 2019, 1:30 a.m.
Google Driveで「画像をコピー」をする
Oct. 8, 2018, 8:48 a.m.Tags
- #Python (23)
- #量子力学 (12)
- #Unity (11)
- #量子情報 (9)
- #AoE2 (8)
- #Mac (8)
- #数学 (7)
- #Quantum Zoo (6)
- #Outer Wilds (6)
- #意識 (5)
- #NumPy (5)
- #Bash (5)
- #Linux (5)
- #相対論 (4)
- #シミュレーション (4)
- #Docker (4)
- #Android (4)
- #Qiskit (4)
- #GitHub (3)
- #Django (2)
- #情報理論 (2)
- #LaTeX (2)
- #Rust (2)
- #PyO3 (2)
- #AR (2)
- #Git (2)
- #iOS (2)
- #C++ (2)
- #正規表現 (2)
- #電磁気学 (1)
- #Google Drive (1)
- #Overleaf (1)
- #Let's Encrypt (1)
- #ポケモン (1)
- #AdMob (1)
- #Autoya (1)
- #docopt (1)
- #SymPy (1)
- #AWS (1)
- #Twitter (1)
- #URP (1)
- #iMovie (1)
- #論文 (1)
- #PyTorch (1)
- #C# (1)