toqito.channel_props.is_unitary¶
Determines if a channel is unitary.
Module Contents¶
- toqito.channel_props.is_unitary.is_unitary(phi)[source]¶
Given a quantum channel, determine if it is unitary.
(Section 2.2.1: Definitions and Basic Notions Concerning Channels from [@Watrous_2018_TQI]).
Let (mathcal{X}) be a complex Euclidean space an let (U in U(mathcal{X})) be a unitary operator. Then a unitary channel is defined as:
- [
Phi(X) = U X U^*.
]
Examples
The identity channel is one example of a unitary channel:
- [
U = begin{pmatrix}
1 & 0 \ 0 & 1
end{pmatrix}.
]
We can verify this as follows:
```python exec=”1” source=”above” import numpy as np from toqito.channel_props import is_unitary
kraus_ops = [[np.identity(2), np.identity(2)]]
print(is_unitary(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 not a unitary channel.
```python exec=”1” source=”above” from toqito.channels import depolarizing from toqito.channel_props import is_unitary
print(is_unitary(depolarizing(2))) ```
- Parameters:
phi (numpy.ndarray | list[list[numpy.ndarray]]) – The channel provided as either a Choi matrix or a list of Kraus operators.
- Returns:
True if the channel is a unitary channel, and False otherwise.
- Return type:
bool