|View source on GitHub|
Returns a Kraus representation of a channel specified via the superoperator matrix.
cirq.superoperator_to_kraus( superoperator: np.ndarray, atol: float = 1e-10 ) -> Sequence[np.ndarray]
Quantum channel E: L(H1) -> L(H2) may be described by a collection of operators A_i, called Kraus operators, such that
$$ E(\rho) = \sum_i A_i \rho A_i^\dagger. $$
Kraus representation is not unique. Alternatively, E may be specified by its superoperator matrix K(E) defined so that
$$ K(E) vec(\rho) = vec(E(\rho)) $$
where the vectorization map \(vec\) rearranges d-by-d matrices into d**2-dimensional vectors. Superoperator matrix is unique for a given channel. It is also called the natural representation of a quantum channel.
The most expensive step in the computation of a Kraus representation from a superoperator matrix is eigendecomposition. Therefore, the cost of the conversion is O(d**6) where d is the dimension of the input and output Hilbert space.
||Superoperator matrix specifying a quantum channel.|
||Tolerance used to check which Kraus operators to omit.|
|Sequence of Kraus operators of the channel specified by superoperator. Kraus operators with Frobenius norm smaller than atol are omitted.|
||If superoperator is not a valid superoperator matrix.|