channel_ops.complementary_channel

Computes the complementary channel/map of a superoperator.

Functions

complementary_channel(kraus_ops)

Compute the Kraus operators for the complementary map of a quantum channel.

Module Contents

channel_ops.complementary_channel.complementary_channel(kraus_ops)

Compute the Kraus operators for the complementary map of a quantum channel.

(Section: Representations and Characterizations of Channels from [1]).

The complementary map is derived from the given quantum channel’s Kraus operators by rearranging the rows of the input Kraus operators into the Kraus operators of the complementary map.

Specifically, for each Kraus operator \(K_i\) in the input channel \(\Phi\), we define the complementary Kraus operators \(K_i^C\) by stacking the rows of \(K_i\) from all Kraus operators vertically.

Examples

Suppose the following Kraus operators define a quantum channel: .. math:

K_1 = \frac{1}{\sqrt{2}} \begin{pmatrix}
    1 & 0 \\
    0 & 0
\end{pmatrix},
K_2 = \frac{1}{\sqrt{2}} \begin{pmatrix}
    0 & 1 \\
    0 & 0
\end{pmatrix},
K_3 = \frac{1}{\sqrt{2}} \begin{pmatrix}
    0 & 0 \\
    1 & 0
\end{pmatrix},
K_4 = \frac{1}{\sqrt{2}} \begin{pmatrix}
    0 & 0 \\
    0 & 1
\end{pmatrix}

To compute the Kraus operators for the complementary map, we rearrange the rows of these Kraus operators as follows: >>> import numpy as np >>> kraus_ops_Phi = [ … np.array([[1, 0], [0, 0]]), … np.array([[0, 1], [0, 0]]), … np.array([[0, 0], [1, 0]]), … np.array([[0, 0], [0, 1]]) … ] >>> comp_kraus_ops = complementary_map(kraus_ops_Phi) >>> for i, op in enumerate(comp_kraus_ops): … print(f”Kraus operator {i + 1}:n{op}n”) The output would be: .. math:

K_1^C = \frac{1}{\sqrt{2}} \begin{pmatrix}
    1 & 0 \\
    0 & 1 \\
    0 & 0 \\
    0 & 0
\end{pmatrix},
K_2^C = \frac{1}{\sqrt{2}} \begin{pmatrix}
    0 & 0 \\
    0 & 0 \\
    1 & 0 \\
    0 & 1
\end{pmatrix}

References

[1]

John Watrous. The Theory of Quantum Information. Cambridge University Press, 2018. URL: https://johnwatrous.com/wp-content/uploads/TQI.pdf, doi:10.1017/9781316848142.

Raises:

ValueError – If the input is not a valid list of Kraus operators.

Parameters:

kraus_ops (list[numpy.ndarray]) – A list of numpy arrays representing the Kraus operators of a quantum channel. Each Kraus operator is assumed to be a square matrix.

Returns:

A list of numpy arrays representing the Kraus operators of the complementary map.

Return type:

list[numpy.ndarray]