Source code for toqito.channels.reduction

"""Generates the reduction channel."""

import numpy as np
from scipy.sparse import identity

from toqito.states import max_entangled


[docs] def reduction(dim: int, k: int = 1) -> np.ndarray: r"""Produce the reduction map or reduction channel [@WikiReductionCrit]. If `k = 1`, this returns the Choi matrix of the reduction map which is a positive map on `dim`-by-`dim` matrices. For a different value of `k`, this yields the Choi matrix of the map defined by: \[ R(X) = k * \text{Tr}(X) * \mathbb{I} - X, \] where \(\mathbb{I}\) is the identity matrix. This map is \(k\)-positive. Examples: Using `|toqito⟩`, we can generate the \(3\)-dimensional (or standard) reduction map as follows. ```python exec="1" source="above" from toqito.channels import reduction print(reduction(3)) ``` Args: dim: A positive integer (the dimension of the reduction map). k: If this positive integer is provided, the script will instead return the Choi matrix of the following linear map: Phi(X) := K * Tr(X)I - X. Returns: The reduction map. """ psi = max_entangled(dim, False, False) identity_matrix = identity(dim**2) return k * identity_matrix.toarray() - psi @ psi.conj().T