qat.opt

Generic combinatorial optimization

The class CombinatorialProblem, together with Clause and Var allow one to represent a general combinatorial problem, like 3-SAT. Clauses (Clause) are declared by combining variables (Var). The cost Hamiltonian extraction is handled by the (Clause) class. The final cost Hamiltonian consists of the weighted sum of the cost Hamiltonian of its clauses.

qat.opt.CombinatorialProblem

Encoding general Combinatorial problems with many Clause and Var

qat.opt.boolexpr.Clause

A Class to define clauses between variables, for e.g. satisfiability problems

qat.opt.boolexpr.Var

A class for the variables themselves overloading logical operators to closely interact with the Clause class

Quadratic problems: Ising and QUBO

Classes for the Ising and QUBO formulations of combinatorial problems, solved via annealing (or gate-based or analog approaches).

qat.opt.Ising

The class to represent Ising Hamiltonians

qat.opt.QUBO

The class encoding Quadratic Unconstrained Binary Optimization (QUBO) problems

Classes for the supported NP-Hard problems

Each of the following inherits from either Ising or QUBO.

qat.opt.BILP

A class to encode the Binary Integer Linear Programming problem

qat.opt.GraphColouring

A class to encode the Graph Colouring problem

qat.opt.GraphPartitioning

A class to encode the Graph Partitioning problem

qat.opt.KClique

A class to encode the K-Clique problem

qat.opt.MaxCut

A class to encode the Max Cut problem

qat.opt.NumberPartitioning

A class to encode the Number Partitioning problem

qat.opt.VertexCover

A class to encode the Vertex Cover problem

Generating QAOA Ansätze or QA Jobs

qat.opt.MixingFactory

A class with methods to generate custom mixing Hamiltonians for analog Quantum Annealing

qat.opt.circuit_generator.CircuitGenerator

An interface from which CombinatorialProblem / Ising / QUBO inherit allowing classes to generate ready to run QAOA jobs

qat.opt.schedule_generator.ScheduleGenerator

An interface from which CombinatorialProblem / Ising / QUBO inherit allowing classes to generate Quantum Annealing jobs

qat.vsolve.ansatz.AnsatzFactory

A class allowing to produce variational circuits for QAOA from a target Hamiltonian

The classes of the objects produced by MixingFactory, together with the interface they specialize from, are documented in the qat.opt.mixing_factory module.