Annealing programming
Many real life problems are combinatorial and can be formulated as minimization or maximization problems, i.e. with a cost function. At the same time finding the lowest energy of a physical system, represented by a cost Hamiltonian, is also a minimization problem. Due to this intimate relation, problems described with a cost function (QUBO) or a cost Hamiltonian (Ising) could be solved by simulating the process of finding their minimum energy. This process is called annealing and the lowest energy found should contain the solution to our problem.
The following sections present the definitions of Ising Hamiltonians, QUBO cost functions and general Combinatorial problems, how to encode them, along with our conventions regarding their precise formulation (see also this introductory notebook). Once encoded, the problems can be sent to a Simulated Annealer for execution.