def test_embedding_with_extra_chains(self):
        embedding = {0: [0, 1], 1: [2], 2: [3]}
        G = nx.cycle_graph(4)

        bqm = dimod.BinaryQuadraticModel.from_qubo({(0, 0): 1})

        target_bqm = dwave.embedding.embed_bqm(bqm, embedding, G)

        for v in itertools.chain(*embedding.values()):
            self.assertIn(v, target_bqm)
        else:
            row += str(ising_model[1][(i, j)]) + '\t'
    print(row)

input()
print("\nEmbedding logical problem into physical layout ...")

# Construct logical problem graph
prob_graph = nx.Graph()
prob_graph.add_edges_from([(1, 2), (2, 3), (1, 3)])

# Construct an embedding
embedding = {1: [1], 2: [2], 3: [3, 4]}

# Map our Ising model onto the embedding
qubits = list(i for x in embedding.values() for i in x)
target = nx.cycle_graph(qubits)
th, tJ = dwave.embedding.embed_ising(ising_model[0], ising_model[1], embedding,
                                     target)

print("\nQMI (unscaled):\n")

for i in range(1, 5):
    row = ''
    for j in range(1, 5):
        if j == i:
            row += str(th[i]) + '\t'
        elif (i, j) in tJ:
            row += str(tJ[(i, j)]) + '\t'
        else:
            row += str(0) + '\t'
示例#3
0
# working with different topologies
import neal
import dimod
import dwave_networkx as dnx
import networkx as nx
import dwave.embedding

from dwave.system import DWaveSampler, EmbeddingComposite

# Creating a Pegasus Sampler
P6 = dnx.pegasus_graph(6)
classical_sampler = neal.SimulatedAnnealingSampler()
sampler = dimod.StructureComposite(classical_sampler, P6.nodes, P6.edges)

# working with embeddings
num_variables = 40
embedding = dwave.embedding.chimera.find_clique_embedding(num_variables, 16)
toPrint1 = max(len(chain) for chain in embedding.values())
print(toPrint1)

num_variables = 40
embedding = dwave.embedding.pegasus.find_clique_embedding(num_variables, 6)
toPrint2 = max(len(chain) for chain in embedding.values())
print(toPrint2)
QPUGraph = nx.Graph(qpu_sampler.edgelist)
all(v in C16.nodes for v in QPUGraph.nodes)
all(edge in C16.edges for edge in QPUGraph.edges)

# %%
# Creating a Pegasus Sampler
P6 = dnx.pegasus_graph(6)
classical_sampler = neal.SimulatedAnnealingSampler()
sampler = dimod.StructureComposite(classical_sampler, P6.nodes, P6.edges)

# %%
# Working With Embeddings
# 全結合の40ノードを作りたい
num_variables = 40
embedding = dwave.embedding.chimera.find_clique_embedding(num_variables, 16)
max(len(chain) for chain in embedding.values())
# チェーン数は11

# %%
# 680 node Pegasus
num_variables = 40
embedding = dwave.embedding.pegasus.find_clique_embedding(num_variables, 6)
max(len(chain) for chain in embedding.values())
# チェーン数は6

# %%
# https://qiita.com/YuichiroMinato/items/dbc142ecb1efbebd6adf
chimera = dnx.chimera_graph(2, 2, 4)
dnx.draw_chimera(chimera)
plt.show()