diff between QUBO and CSP

via qubo I can enforce constraints. via dwavebinarycsp.Constraint.from_func, i can add a constraint as well. 

What is the difference?



1 comment
  • Hello,

    Can you please clarify how you are adding constraints via QUBO?
    Maybe you can provide a minimal code example?

    Underlyingly all problems are converted to ising problems before being run on the QPU.
    The BQM is a model that can be used to represent QUBO and ising - it is easy to convert from QUBO to ising or BQM and vice versa - so we can refer to BQM in place of QUBO. 

    The dwavebinarycsp libraries make it easier to add arbitrary constraints using functions. There are some limitations to this and there is an associated computation cost to construct the constraint from the function. Also this is an automated process, so it will work better on some problems than others.

    All of the constraints that can be added using dwavebinarycsp libraries can also be implemented using BQM (or QUBO). It's possible to optimize the QUBO version, but there is associated overhead and effort in developing and coming up with a good implementation.

    In short it's a tradeoff between having minute control and optimization (BQM/QUBO/ising) vs ease of use and less control (dwavebinarycsp).

    As we develop more and more sophisticated libraries, the constraint modeling and automatic translation improve, and the results improve along with them.
    If one of the specific dwavebinarycsp functions matches your use-case exactly, then there is likely an efficient and fast solution that is ready to use, so you don't have to worry about the above-mentioned tradeoff.

    Comment actions Permalink

Please sign in to leave a comment.

Didn't find what you were looking for?

New post