# toqito.perms.swap_operator¶

toqito.perms.swap_operator(dim: list[int] | int, is_sparse: bool = False) → np.ndarray[source]

Produce a unitary operator that swaps two subsystems.

Provides the unitary operator that swaps two copies of dim-dimensional space. If the two subsystems are not of the same dimension, dim should be a 1-by-2 vector containing the dimension of the subsystems.

Examples

The $$2$$-dimensional swap operator is given by the following matrix

$\begin{split}X_2 = \begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}\end{split}$

Using toqito we can obtain this matrix as follows.

>>> from toqito.perms import swap_operator
>>> swap_operator(2)
[[1., 0., 0., 0.],
[0., 0., 1., 0.],
[0., 1., 0., 0.],
[0., 0., 0., 1.]]


The $$3$$-dimensional operator may be obtained using toqito as follows.

>>> from toqito.perms import swap_operator
>>> swap_operator(3)
[[1., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 1., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 1., 0., 0.],
[0., 1., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 1., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 1., 0.],
[0., 0., 1., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 1., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 1.]]

Parameters: dim – The dimensions of the subsystems. is_sparse – Sparse if True and non-sparse if False. The swap operator of dimension dim.