Embedding

Provides functions that map binary quadratic models and samples between a source graph and a target graph.

For an introduction to minor-embedding, see Minor-Embedding.

Generators

Tools for finding embeddings.

Generic

minorminer is a heuristic tool for minor embedding: given a minor and target graph, it tries to find a mapping that embeds the minor into the target.

minorminer.find_embedding(S, T, **params) Heuristically attempt to find a minor-embedding of a graph representing an Ising/QUBO into a target graph.

Chimera

Minor-embedding in Chimera-structured target graphs.

chimera.find_clique_embedding(k, m[, n, t, …]) Find an embedding for a clique in a Chimera graph.
chimera.find_biclique_embedding(a, b, m[, …]) Find an embedding for a biclique in a Chimera graph.
chimera.find_grid_embedding(dim, m[, n, t]) Find an embedding for a grid in a Chimera graph.

Pegasus

Minor-embedding in Pegasus-structured target graphs.

pegasus.find_clique_embedding(k[, m, …]) Find an embedding for a clique in a Pegasus graph.

Utilities

embed_bqm(source_bqm[, embedding, …]) Embed a binary quadratic model onto a target graph.
embed_ising(source_h, source_J, embedding, …) Embed an Ising problem onto a target graph.
embed_qubo(source_Q, embedding, target_adjacency) Embed a QUBO onto a target graph.
unembed_sampleset(target_sampleset, …[, …]) Unembed a sample set.

Diagnostics

chain_break_frequency(samples_like, embedding) Determine the frequency of chain breaks in the given samples.
diagnose_embedding(emb, source, target) Diagnose a minor embedding.
is_valid_embedding(emb, source, target) A simple (bool) diagnostic for minor embeddings.
verify_embedding(emb, source, target[, …]) A simple (exception-raising) diagnostic for minor embeddings.

Chain-Break Resolution

Unembedding samples with broken chains.

Generators

chain_breaks.discard(samples, chains) Discard broken chains.
chain_breaks.majority_vote(samples, chains) Unembed samples using the most common value for broken chains.
chain_breaks.weighted_random(samples, chains) Unembed samples using weighed random choice for broken chains.

Callable Objects

chain_breaks.MinimizeEnergy(bqm, embedding) Unembed samples by minimizing local energy for broken chains.

Exceptions

exceptions.EmbeddingError Base class for all embedding exceptions.
exceptions.MissingChainError(snode) Raised if a node in the source graph has no associated chain.
exceptions.ChainOverlapError(tnode, snode0, …) Raised if two source nodes have an overlapping chain.
exceptions.DisconnectedChainError(snode) Raised if a chain is not connected in the target graph.
exceptions.InvalidNodeError(snode, tnode) Raised if a chain contains a node not in the target graph.
exceptions.MissingEdgeError(snode0, snode1) Raised when two source nodes sharing an edge to not have a corresponding edge between their chains.

Classes

class EmbeddedStructure(target_edges, embedding)[source]

Processes an embedding and a target graph to collect target edges into those within individual chains, and those that connect chains. This is used elsewhere to embed binary quadratic models into the target graph.

Parameters:
  • target_edges (iterable[edge]) – An iterable of edges in the target graph. Each edge should be an iterable of 2 hashable objects.
  • embedding (dict) – Mapping from source graph to target graph as a dict of form {s: {t, …}, …}, where s is a source-model variable and t is a target-model variable.

This class is a dict, and acts as an immutable duplicate of embedding.