sn_router

Contents

sn_router#

iqm.qaoa.transpiler.sn.sn.sn_router(problem_bqm, qpu)[source]#

The function that implements the ‘swap network’ swapping strategies.

Implements approach from [4] adapted for rectangular QPUs, not only square. If the input BQM is not all-to-all connected, dummy interactions (of strength 0) are added to make it all-to-all connected. Tries to find a sufficient rectangle in the provided Crystal QPU (square lattice topology required).

Parameters:
  • problem_bqm (BinaryQuadraticModel) – The BinaryQuadraticModel description of the problem, necessary to create an instance of Routing.

  • qpu (CrystalQPUFromBackend) – The QPU, necessary to create an instance of Routing and to get the topology of the qubits. The qpu also needs to contain the layout of the qubits with integer coordinates as an attribute.

Returns:

A Routing object containing the routing created by using swap networks.

Raises:
  • TypeError – If the QPU’s layout doesn’t have integer coordinates. It is necessary to correctly identify where the swap and interaction gates need to be applied in the swap network approach.

  • RuntimeError – If the algorithm doesn’t find a sufficiently large rectangle of qubits in the QPU.

Return type:

Routing