What is a chain?

In the context of embedding a problem, what is a "chain" and what does it mean when a chain breaks?

3

Comments

2 comments
  • What is a chain? A chain is a set of qubits in the hardware that each represent the same variable of an abstract graph problem.

    Consider the example Fig 1 below. All the qubits in the quantum processor that represent that same node `A`, together, form a chain.

    • Chain for variable A: (0, 4)
    • Chain for variable B: (5)
    • Chain for variable C: (1)

    It might be useful to think of the qubits 0 and 4 in Fig 3 as clones of variable A. However, the reality is that these qubits in the same chain are just strongly coupled together, would likely end up in the same state.

    It is sometimes necessary to form a chain in order to have a representation of the abstract graph fit onto the quantum processor.

     

    What is a chain break? A chain is said to break when the qubits in the same chain do not end up in the same state. (See Fig 5)

    Sometimes it is possible to recover from a chain break, but this gets a bit nuanced.

    More information on chains and chain-break resolutions can be found here: 
    https://docs.ocean.dwavesys.com/projects/system/en/stable/reference/embedding.html#chain-break-resolution

    6
    Comment actions Permalink
  • How can I fix chain breaks? Chains are a result of embedding a problem onto the QPU, so understanding how and why they are formed is an important part of learning how to fix them. This document on embedding is a good place to start.

    The Ocean composites, for example the EmbeddingComposite, have some important parameters you can use, one of which is chain_strength. By adjusting the chain_strength you can ensure that the chains in your problem don't break, therefore improving your solution quality. You can adjust the chain strength like this:

    from dwave.system import DWaveSampler

    sampler = EmbeddingComposite(DWaveSampler())

    sampleset = sampler.sample(bqm, chain_strength=5, num_reads=100) 

    Generally, you want the chain_strength to be on the same order of your linear and quadratic biases. 

    This tutorial on using the Problem Inspector goes through how to recognize chain breaks and how to adjust the chain strength:

    https://docs.ocean.dwavesys.com/en/stable/examples/inspector_graph_partitioning.html

    2
    Comment actions Permalink

Please sign in to leave a comment.

Didn't find what you were looking for?

New post