|View source on GitHub|
Returns a Kraus representation of a channel with given Choi matrix.
cirq.choi_to_kraus( choi: 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 Choi matrix J(E) defined as
$$ J(E) = (E \otimes I)(|\phi\rangle\langle\phi|) $$
where \(|\phi\rangle = \sum_i|i\rangle|i\rangle\) is the unnormalized maximally entangled state and I: L(H1) -> L(H1) is the identity map. Choi matrix is unique for a given channel.
The most expensive step in the computation of a Kraus representation from a Choi matrix is the eigendecomposition of the Choi. Therefore, the cost of the conversion is O(d**6) where d is the dimension of the input and output Hilbert space.
||Choi matrix of the channel.|
||Tolerance used in checking if choi is positive and in deciding which Kraus operators to omit.|
|Approximate Kraus representation of the quantum channel specified via a Choi matrix. Kraus operators with Frobenius norm smaller than atol are omitted.|
||when choi is not a positive square matrix.|