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