LogarithmicMapper

class LogarithmicMapper(*, padding=1, embed_upper=True)[source]

Bases: SpinMapper

A mapper for Logarithmic spin-to-qubit mapping. In this local encoding transformation, each individual spin S system is represented via the lowest lying \(2S+1\) states in a qubit system with the minimal number of qubits needed to represent \(>= 2S+1\) distinct states [1].

References

[1] S. V. Mathis, G. Mazzola and I. Tavernelli. Toward scalable simulations of lattice gauge theories on quantum computers. Phys. Rev. D, 102 (9), 094501 (2020). https://doi.org/10.1103/PhysRevD.102.094501

Parameters:
  • padding (float) – When embedding a matrix into the upper/lower diagonal block of a \(2^n\) by \(2^n\) matrix ,where \(n\) is the number of qubits, pads the diagonal of the block matrix with the value of padding.

  • embed_upper (bool) –

    This parameter sets whether the given matrix is embedded in the upper left hand corner or the lower right hand corner of the larger matrix. I.e. using embed_upper = True returns the matrix:

    \[\begin{split}\begin{pmatrix} \text{matrix} & 0 \\ 0 & \text{padding} * I \end{pmatrix}\end{split}\]

    Using embed_upper = False returns the matrix:

    \[\begin{split}\begin{pmatrix} \text{padding} * I & 0 \\ 0 & \text{matrix} \end{pmatrix}\end{split}\]

Methods

map(second_q_ops, *, register_length=None)

Maps a second quantized operator or a list, dict of second quantized operators based on the current mapper.

Parameters:
  • second_q_ops (SpinOp | List[SpinOp | None] | Dict[str, SpinOp]) – A second quantized operator, or list thereof.

  • register_length (int | None) – when provided, this will be used to overwrite the register_length attribute of the SparseLabelOp being mapped. This is possible because the register_length is considered a lower bound in a SparseLabelOp.

Returns:

A qubit operator in the form of a SparsePauliOp, or list (resp. dict) thereof if a list (resp. dict) of second quantized operators was supplied.

Return type:

SparsePauliOp | List[SparsePauliOp | None] | Dict[str, SparsePauliOp]