toqito.channel_props.is_completely_positive¶
Determines if a channel is completely positive.
Module Contents¶
- toqito.channel_props.is_completely_positive.is_completely_positive(phi, rtol=1e-05, atol=1e-08)[source]¶
Determine whether the given channel is completely positive.
(Section: Linear Maps Of Square Operators from [@Watrous_2018_TQI]).
A map (Phi in text{T} left(mathcal{X}, mathcal{Y} right)) is completely positive if it holds that
- [
Phi otimes mathbb{I}_{text{L}(mathcal{Z})}
]
is a positive map for every complex Euclidean space (mathcal{Z}).
Alternatively, a channel is completely positive if the corresponding Choi matrix of the channel is both Hermitian-preserving and positive semidefinite.
Examples
We can specify the input as a list of Kraus operators. Consider the map (Phi) defined as
- [
Phi(X) = X - U X U^*
]
where
- [
U = frac{1}{sqrt{2}} begin{pmatrix}
1 & 1 \ -1 & 1
end{pmatrix}.
]
This map is not completely positive, as we can verify as follows.
```python exec=”1” source=”above” import numpy as np from toqito.channel_props import is_completely_positive
unitary_mat = np.array([[1, 1], [-1, 1]]) / np.sqrt(2) kraus_ops = [[np.identity(2), np.identity(2)], [unitary_mat, -unitary_mat]]
print(is_completely_positive(kraus_ops)) ```
We can also specify the input as a Choi matrix. For instance, consider the Choi matrix corresponding to the (2)-dimensional completely depolarizing channel
- [
Omega = frac{1}{2} begin{pmatrix}
1 & 0 & 0 & 0 \ 0 & 1 & 0 & 0 \ 0 & 0 & 1 & 0 \ 0 & 0 & 0 & 1
end{pmatrix}.
]
We may verify that this channel is completely positive
```python exec=”1” source=”above” from toqito.channels import depolarizing from toqito.channel_props import is_completely_positive
print(is_completely_positive(depolarizing(2))) ```
- Parameters:
phi (numpy.ndarray | list[list[numpy.ndarray]]) – The channel provided as either a Choi matrix or a list of Kraus operators.
rtol (float) – The relative tolerance parameter (default 1e-05).
atol (float) – The absolute tolerance parameter (default 1e-08).
- Returns:
True if the channel is completely positive, and False otherwise.
- Return type:
bool