toqito.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.

Module Contents

toqito.state_metrics.sub_fidelity.sub_fidelity(rho, sigma)[source]

Compute the sub fidelity of two density matrices [@Miszczak_2008_Sub].

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}|0rangle 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

```python exec=”1” source=”above” 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

print(fidelity(rho, sigma)) ```

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.599leq F(rho, sigma approx 0.774).

```python exec=”1” source=”above” 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

print(sub_fidelity(rho, sigma)) ```

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