dwave.embedding.embed_ising#
- embed_ising(source_h, source_J, embedding, target_adjacency, chain_strength=None)[source]#
Embed an Ising problem onto a target graph.
- Parameters:
source_h (dict[variable, bias]/list[bias]) – Linear biases of the Ising problem. If a list, the list’s indices are used as variable labels.
source_J (dict[(variable, variable), bias]) – Quadratic biases of the Ising problem.
embedding (dict) – Mapping from source graph to target graph as a dict of form
{s: {t, ...}, ...}, wheresis a source-model variable andtis a target-model variable.target_adjacency (dict/
networkx.Graph) – Adjacency of the target graph as a dict of form{t: Nt, ...}, wheretis a target-graph variable andNtis its set of neighbors.chain_strength (float/mapping/callable, optional) – Sets the coupling strength between qubits representing variables that form a chain. Mappings should specify the required chain strength for each variable. Callables should accept the BQM and embedding and return a float or mapping. By default,
chain_strengthis calculated withuniform_torque_compensation().
- Returns:
A 2-tuple:
dict[variable, bias]: Linear biases of the target Ising problem.
dict[(variable, variable), bias]: Quadratic biases of the target Ising problem.
- Return type:
Examples
This example embeds a triangular Ising problem representing a \(K_3\) clique into a square target graph by mapping variable
cin the source to nodes 2 and 3 in the target.>>> import networkx as nx >>> from dwave.embedding import embed_ising ... >>> target = nx.cycle_graph(4) >>> # Ising problem biases >>> h = {'a': 0, 'b': 0, 'c': 0} >>> J = {('a', 'b'): 1, ('b', 'c'): 1, ('a', 'c'): 1} >>> # Variable c is a chain >>> embedding = {'a': {0}, 'b': {1}, 'c': {2, 3}} >>> # Embed and show the resulting biases >>> th, tJ = embed_ising(h, J, embedding, target) >>> 3 in th.keys() True
See also