Distributors

class pytket_dqc.distributors.Distributor

Abstract class defining the structure of distributors. Distributors are complete recommended DQC workflows.

__init__() None
class pytket_dqc.distributors.CoverEmbedding

Distributor applying VertexCover refinement to an initial distribution. This workflow is the simplest one considering embedding in the first instance.

distribute(circ: Circuit, network: NISQNetwork, **kwargs) Distribution

Method producing a distribution of the given circuit onto the given network.

Note that kwargs are passed on to VertexCover and the distribute method of the initial distributor.

Parameters:
  • circ (Circuit) – Circuit to be distributed

  • network (NISQNetwork) – Network onto which circuit should be distributed

Returns:

Distribution of circ onto network.

Return type:

Distribution

Key initial_distributor:

Initial distributor to be used to generate distribution refined by VertexCover. Default is PartitioningHeterogeneous

class pytket_dqc.distributors.CoverEmbeddingSteiner

Distributor refining the output of CoverEmbedding to make use of Steiner trees.

distribute(circ: Circuit, network: NISQNetwork, **kwargs) Distribution

Abstract method producing a distribution of the given circuit onto the given network.

Note that kwargs are passed on to the distribute method of CoverEmbedding.

Parameters:
  • circ (Circuit) – Circuit to be distributed

  • network (NISQNetwork) – Network onto which circuit should be distributed

Returns:

Distribution of circ onto network.

Return type:

Distribution

class pytket_dqc.distributors.CoverEmbeddingSteinerDetached

Distributor refining the output of BipartiteEmbeddingSteiner to make use of detached gates.

distribute(circ: Circuit, network: NISQNetwork, **kwargs) Distribution

Abstract method producing a distribution of the given circuit onto the given network.

Note that kwargs are passed on to the distribute method of CoverEmbeddingSteiner. and the refine method of DetachedGates

Parameters:
  • circ (Circuit) – Circuit to be distributed

  • network (NISQNetwork) – Network onto which circuit should be distributed

Returns:

Distribution of circ onto network.

Return type:

Distribution

class pytket_dqc.distributors.PartitioningAnnealing

Distributor using the Annealing allocator.

distribute(circ: Circuit, network: NISQNetwork, **kwargs) Distribution

Method producing a distribution of the given circuit onto the given network.

Note that kwargs are passed on to the allocate method of Annealing.

Parameters:
  • circ (Circuit) – Circuit to be distributed

  • network (NISQNetwork) – Network onto which circuit should be distributed

Returns:

Distribution of circ onto network.

Return type:

Distribution

class pytket_dqc.distributors.PartitioningHeterogeneous

Distributor refining the output of HypergraphPartitioning to adapt the result to heterogeneous networks.

distribute(circ: Circuit, network: NISQNetwork, **kwargs) Distribution

Method producing a distribution of the given circuit onto the given network.

Note that kwargs are passed on to the allocate method of HypergraphPartitioning and the refine method of BoundaryReallocation.

Parameters:
  • circ (Circuit) – Circuit to be distributed

  • network (NISQNetwork) – Network onto which circuit should be distributed

Returns:

Distribution of circ onto network.

Return type:

Distribution

class pytket_dqc.distributors.PartitioningHeterogeneousEmbedding

Distributor refining the output of PartitioningHeterogeneous to make use of embedding.

distribute(circ: Circuit, network: NISQNetwork, **kwargs) Distribution

Method producing a distribution of the given circuit onto the given network.

Note that kwargs are passed on to the distribute method of PartitioningHeterogeneousEmbedding.

Parameters:
  • circ (Circuit) – Circuit to be distributed

  • network (NISQNetwork) – Network onto which circuit should be distributed

Returns:

Distribution of circ onto network.

Return type:

Distribution