密度行列の部分転置についての解説と実装 | USHITORA Lab.
スポンサーリンク

密度行列の部分転置についての解説と実装

Python

$$\newcommand{\bra}[1]{\left\langle #1 \right|}
\newcommand{\ket}[1]{\left|#1 \right\rangle}$$

密度行列の部分転置

定義

中原幹夫「量子物理学のための線形代数 =ベクトルから量子情報へ」によると、密度行列の部分転置は以下のように定義されている。

2成分系が与えられ、\(\rho\)はその密度行列とする。\(\rho^{pt}\)を、2番目のヒルベルト空間に関する添え字の転置で

$$\rho_{ij,kl}\to\rho_{il,kj}$$

と定義する。ここで、\(\{\ket{e_k^{(1)}}\}\)を第1成分の基底、\(\{\ket{e_k^{(2)}}\}\)を第2成分の基底とすると

$$\rho_{ij,kl}=(\bra{e_i^{(1)}}\otimes\bra{e_j^{(2)}})\rho(\ket{e_k^{(1)}}\otimes\ket{e_l^{(2)}})$$

である。

解説

以上の定義を図式的に解説する。

$$\rho=\begin{pmatrix}a&b&c&d\\e&f&g&h\\i&j&k&l\\m&n&o&p\end{pmatrix}$$

という密度行列があるとして、これを構成する基底ベクトルが

  • \(\ket{e_1^{(1)}}=\begin{pmatrix}1\\0\\\end{pmatrix}\)
  • \(\ket{e_2^{(1)}}=\begin{pmatrix}0\\1\\\end{pmatrix}\)
  • \(\ket{e_1^{(2)}}=\begin{pmatrix}1\\0\\\end{pmatrix}\)
  • \(\ket{e_2^{(2)}}=\begin{pmatrix}0\\1\\\end{pmatrix}\)

であるとすると、第1成分の第基底と第2成分の第基底のテンソル積、第1成分の第基底と第2成分の第基底のテンソル積の2つを用いた場合、

$$\rho_{11,12}=(\bra{e_1^{(1)}}\otimes\bra{e_1^{(2)}})\begin{pmatrix}a&b&c&d\\e&f&g&h\\i&j&k&l\\m&n&o&p\end{pmatrix}(\ket{e_1^{(1)}}\otimes\ket{e_2^{(2)}})$$

$$=(\begin{pmatrix}1&0\\\end{pmatrix}\otimes\begin{pmatrix}1&0\\\end{pmatrix})\begin{pmatrix}a&b&c&d\\e&f&g&h\\i&j&k&l\\m&n&o&p\end{pmatrix}(\begin{pmatrix}1\\0\\\end{pmatrix}\otimes\begin{pmatrix}0\\1\\\end{pmatrix})$$

$$=\begin{pmatrix}1&0&0&0\\\end{pmatrix}\begin{pmatrix}a&b&c&d\\e&f&g&h\\i&j&k&l\\m&n&o&p\end{pmatrix}\begin{pmatrix}0\\1\\0\\0\\\end{pmatrix}$$

$$=\begin{pmatrix}a&b&c&d\\\end{pmatrix}\begin{pmatrix}0\\1\\0\\0\\\end{pmatrix}$$

$$=b$$

より、密度行列\(\rho\)の成分\(b\)は\(\rho_{11,12}\)と表すことができる。同様の計算を繰り返すと、\(\rho\)の各成分は以下のように表せる。

$$\rho=\begin{pmatrix}\rho_{11,11}&\rho_{11,12}&\rho_{11,21}&\rho_{11,22}\\\rho_{12,11}&\rho_{12,12}&\rho_{12,21}&\rho_{12,22}\\\rho_{21,11}&\rho_{21,12}&\rho_{21,21}&\rho_{21,22}\\\rho_{22,11}&\rho_{22,12}&\rho_{22,21}&\rho_{22,22}\end{pmatrix}$$

また、\(\rho\)の部分転置\(\rho^{pt}\)の各成分も同様に、

$$\rho^{pt}=\begin{pmatrix}\rho^{pt}_{11,11}&\rho^{pt}_{11,12}&\rho^{pt}_{11,21}&\rho^{pt}_{11,22}\\\rho^{pt}_{12,11}&\rho^{pt}_{12,12}&\rho^{pt}_{12,21}&\rho^{pt}_{12,22}\\\rho^{pt}_{21,11}&\rho^{pt}_{21,12}&\rho^{pt}_{21,21}&\rho^{pt}_{21,22}\\\rho^{pt}_{22,11}&\rho^{pt}_{22,12}&\rho^{pt}_{22,21}&\rho^{pt}_{22,22}\end{pmatrix}$$

と表せる。ここで、密度行列\(\rho\)の部分転置をとると、例えば成分\(\rho_{11,12}=b\)は2番目の添え字の転置で\(\rho^{pt}_{12,11}\)に移動する。この処理を\(\rho\)のすべての成分について繰り返すと、

$$\rho^{pt}=\begin{pmatrix}a&e&c&g\\b&f&d&h\\i&m&k&o\\j&n&l&p\end{pmatrix}$$

が得られる。

では、第2成分の基底は上記の2つのままで、第1成分の基底が

  • \(\ket{e_1^{(1)}}=\begin{pmatrix}1\\0\\0\\\end{pmatrix}\)
  • \(\ket{e_2^{(1)}}=\begin{pmatrix}0\\1\\0\\\end{pmatrix}\)
  • \(\ket{e_3^{(1)}}=\begin{pmatrix}0\\0\\1\\\end{pmatrix}\)

の3つある場合はどうなるだろうか。この時の密度行列\(\rho\)を

$$\rho=\begin{pmatrix}a&b&c&d&e&f\\g&h&i&j&k&l\\m&n&o&p&q&r\\s&t&u&v&w&x\\y&z&\alpha&\beta&\gamma&\delta\\\epsilon&\zeta&\eta&\theta&\iota&\kappa\end{pmatrix}$$

とおくと、部分転置をとって

$$\rho^{pt}=\begin{pmatrix}a&g&c&i&e&k\\b&h&d&j&f&l\\m&s&o&u&q&w\\n&t&p&v&r&x\\y&\epsilon&\alpha&\eta&\gamma&\iota\\z&\zeta&\beta&\theta&\delta&\kappa\end{pmatrix}$$

が得られる。

以上のような行列の変換には、どのような法則があるだろうか。それを示すために、以下のように補助線を入れてみる。

すると、部分転置とは、これらの補助線で区切られたブロック内の行列をそれぞれ転置したものであることがわかる。すなわち、第1成分の基底の個数を\(N_1\)、第2成分の基底の個数を\(N_2\)とすると、密度行列を\(N_1\times N_1\)のブロック行列と見て、各ブロックを構成する\(N_2\times N_2\)行列をそれぞれ転置することで部分転置が得られる。

部分転置の実装

以上の処理は、次のようなPythonコードによって実装できる。

partial_transposition関数は、密度行列

$$\rho=\begin{pmatrix}10&11&12&13&14&15\\16&17&18&19&20&21\\22&23&24&25&26&27\\28&29&30&31&32&33\\34&35&36&37&38&39\\40&41&42&43&44&45\end{pmatrix}$$

を与えると、部分転置

$$\rho^{pt}=\begin{pmatrix}10&16&12&18&14&20\\11&17&13&19&15&21\\22&28&24&30&26&32\\23&29&25&31&27&33\\34&40&36&42&38&44\\35&41&37&43&39&45\end{pmatrix}$$

が出力される。

参考文献

  1. 中原幹夫「量子物理学のための線形代数 =ベクトルから量子情報へ」(2016)培風館.

コメント