|View source on GitHub|
Returns a Kraus representation of a channel with given Choi matrix.
cirq.qis.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
Kraus representation is not unique. Alternatively, E may be specified by its Choi matrix J(E) defined as
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.|