4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

QiskitでFidelity計算 簡単な例

Posted at

$$
\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のドキュメント
Nielsen & Chuang

Fidelityとは

量子情報理論の基本:フィデリティ

注意1: 定義の違い

Nielsen & Chuangの定義: $$F(\rho, \sigma ) \equiv \mathrm{Tr} \sqrt{\rho^{1/2}\sigma\rho^{1/2}} $$

Qiskitの定義:
$$
F(\rho, \sigma ) \equiv \mathrm{Tr}\left[\rho^{1/2}\sigma\rho^{1/2}\right]
$$
ルートの有無の違いがあるので注意.最近はQiskitの定義が多いらしい.参考: Fidelity convention
以後,Qiskitの定義を使用する.

注意2: 密度行列のルート

対角行列の場合

各要素のルートをとる.例えば,

A = \begin{pmatrix}
a_1 & 0 & 0 & 0 \\
0   & a_2 & 0 & 0 \\
0   & 0   & a_3 & 0 \\
0   & 0   & 0   & a_4
\end{pmatrix}

のとき,($a_i\ge0$)

A^{1/2} = \begin{pmatrix}
\sqrt{a_1} & 0 & 0 & 0 \\
0   & \sqrt{a_2} & 0 & 0 \\
0   & 0   & \sqrt{a_3} & 0 \\
0   & 0   & 0   & \sqrt{a_4}
\end{pmatrix}

混合状態の場合

FidelityにはUnitary変換に対して不変という性質がある.(cf. Nielsen & Chuang, 式(9.61) )

F( U\rho U^{\dagger}, U\sigma U^{\dagger} ) = F( \rho, \sigma )

ゆえに,対角化したのちに計算すれば良い.(対角化不可能な場合はどうすれば良いのか?)

実装

まずは必要なライブラリをimport

%matplotlib inline
# Importing standard Qiskit libraries and configuring account
from qiskit import QuantumCircuit, execute, Aer, IBMQ
from qiskit.compiler import transpile, assemble
from qiskit.tools.jupyter import *
from qiskit.visualization import *
# Loading your IBM Q account(s)
provider = IBMQ.load_account()

from qiskit.aqua import run_algorithm
from qiskit.aqua.input import LinearSystemInput
from qiskit.quantum_info import state_fidelity
from qiskit.aqua.algorithms.classical import ExactLSsolver

import numpy as np

純粋状態同士

cf. 純粋状態と混合状態

ベクトルの内積と同じようにかける.
$$
F( |\psi_1\rangle, |\psi_2\rangle ) = \left| \langle \psi_1 \left. \right|\psi_2 \rangle \right|^2
$$

psi1 = np.array([ 1, 0, 0, 0 ])
psi2 = np.array([ 0.5, 0.5, 0.5, 0.5 ])

state_fidelity( psi1, psi2 )

>> 0.25

純粋状態と混合状態の場合

$$
F( \ket{\psi_1}, \rho_2) = \bra{\psi_1} \rho_2 \ket{\psi_1}
$$

rho1 = np.array([[ 0.5, 0, 0, 0],
                 [ 0, 0.5, 0, 0],
                 [ 0, 0, 0, 0],
                 [ 0, 0, 0, 0]])

state_fidelity( psi1, rho1 )

>> 0.5

混合状態同士

$$
F( \rho_1, \rho_2 ) = \mathrm{Tr}\left[ \sqrt{ \sqrt{ \rho_1 } \rho_2 \sqrt{ \rho_2 } } \right] ^2
$$

rho2 = np.array([[ 0.5, 0, 0, 0],
              [ 0,   0, 0, 0   ],
              [ 0 ,  0, 0, 0   ],
              [0, 0, 0,  0.5]])

state_fidelity( rho1, rho2 )

>> 0.25
4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?