state_metrics.sub_fidelity

Sub-fidelity metric is a lower bound for the fidelity.

The sub-fidelity metric is a concave function and sub-multiplicative.

Functions

sub_fidelity(rho, sigma)

Compute the sub fidelity of two density matrices [1].

Module Contents

state_metrics.sub_fidelity.sub_fidelity(rho, sigma)

Compute the sub fidelity of two density matrices [1].

The sub-fidelity is a measure of similarity between density operators. It is defined as

\[E(\rho, \sigma) = \text{Tr}(\rho \sigma) + \sqrt{2 \left[ \text{Tr}(\rho \sigma)^2 - \text{Tr}(\rho \sigma \rho \sigma) \right]},\]

where \(\sigma\) and \(\rho\) are density matrices. The sub-fidelity serves as an lower bound for the fidelity.

Examples

Consider the following pair of states:

\[\rho = \frac{3}{4}|0\rangle \langle 0| + \frac{1}{4}|1 \rangle \langle 1| \quad \text{and} \quad \sigma = \frac{1}{8}|0 \rangle \langle 0| + \frac{7}{8}|1 \rangle \langle 1|.\]

Calculating the fidelity between the states \(\rho\) and \(\sigma\) as \(F(\rho, \sigma) \approx 0.774\). This can be observed in toqito as

>>> from toqito.states import basis
>>> from toqito.state_metrics import fidelity
>>> e_0, e_1 = basis(2, 0), basis(2, 1)
>>> rho = 3 / 4 * e_0 @ e_0.conj().T + 1 / 4 * e_1 @ e_1.conj().T
>>> sigma = 1/8 * e_0 @ e_0.conj().T + 7/8 * e_1 @ e_1.conj().T
>>> fidelity(rho, sigma)
np.float64(0.77389339119464)

As the sub-fidelity is a lower bound on the fidelity, that is \(E(\rho, \sigma) \leq F(\rho, \sigma)\), we can use toqito to observe that \(E(\rho, \sigma) \approx 0.599\leq F(\rho, \sigma \approx 0.774\).

>>> from toqito.states import basis
>>> from toqito.state_metrics import sub_fidelity
>>> e_0, e_1 = basis(2, 0), basis(2, 1)
>>> rho = 3 / 4 * e_0 @ e_0.conj().T + 1 / 4 * e_1 @ e_1.conj().T
>>> sigma = 1/8 * e_0 @ e_0.conj().T + 7/8 * e_1 @ e_1.conj().T
>>> sub_fidelity(rho, sigma)
np.float64(0.5989109809347399)

References

[1] (1,2)

J. A. Miszczak, Z. Puchała, P. Horodecki, A. Uhlmann, and K. Życzkowski. Sub– and super–fidelity as bounds for quantum fidelity. 2008. arXiv:0805.2037.

Raises:

ValueError – If matrices are not of equal dimension.

Parameters:
  • rho (numpy.ndarray) – Density operator.

  • sigma (numpy.ndarray) – Density operator.

Returns:

The sub-fidelity between rho and sigma.

Return type:

float