Application
In Ocean, Q = {('a', 'b'): -1, ('b', 'a'): 1} is equivalent to Q = {('a', 'b'): 0}. In the BQM-as-polynomial formulation this is (hopefully) clear.
However, for those users who are used to thinking of QUBOs as matrices, a common point of confusion is whether the matrix should be upper-triangular or symmetric, and whether the biases are added, ignored or treated separately.
Proposed Solution
In the docstring for the BQM, we call out the addition explicitly. We should also add this to the docstring for Sampler.sample_qubo.
Additional Context
There may be other places in the documentation that we should call this out. @vgoliber
Glossary entry for QUBO currently says "A QUBO problem is defined using an upper-diagonal matrix Q, which is an N x N upper-triangular matrix of real weights..." Users may find this contradictory to what the software requires (we can provide a matrix that is not upper-diagonal) and how it interprets it. [https://docs.ocean.dwavesys.com/en/latest/glossary.html#term-qubo].
Glossary entry for Ising does not address this, so could be added there for the J coefficients.
Application In Ocean,
Q = {('a', 'b'): -1, ('b', 'a'): 1}
is equivalent toQ = {('a', 'b'): 0}
. In the BQM-as-polynomial formulation this is (hopefully) clear.However, for those users who are used to thinking of QUBOs as matrices, a common point of confusion is whether the matrix should be upper-triangular or symmetric, and whether the biases are added, ignored or treated separately.
Proposed Solution In the docstring for the BQM, we call out the addition explicitly. We should also add this to the docstring for
Sampler.sample_qubo
.Additional Context There may be other places in the documentation that we should call this out. @vgoliber