toqito.perms.permutation_operator

toqito.perms.permutation_operator(dim, perm, inv_perm=False, is_sparse=False)[source]

Produce a unitary operator that permutes subsystems.

Generates a unitary operator that permutes the order of subsystems according to the permutation vector perm, where the \(i^{th}\) subsystem has dimension dim[i].

If inv_perm = True, it implements the inverse permutation of perm. The permutation operator return is full is is_sparse is False and sparse if is_sparse is True.

Examples

The permutation operator obtained with dimension \(d = 2\) is equivalent to the standard swap operator on two qubits

\[\begin{split}P_{2, [2, 1]} = \begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}\end{split}\]

Using toqito, this can be achieved in the following manner.

>>> from toqito.perms import permutation_operator
>>> permutation_operator(2, [2, 1])
[[1., 0., 0., 0.],
 [0., 0., 1., 0.],
 [0., 1., 0., 0.],
 [0., 0., 0., 1.]]
Parameters:
  • dim – The dimensions of the subsystems to be permuted.

  • perm – A permutation vector.

  • inv_perm – Boolean dictating if perm is inverse or not.

  • is_sparse – Boolean indicating if return is sparse or not.

Returns:

Permutation operator of dimension dim.