## Max-Cut Problem

The max-cut problem determines a subset of the vertices of a graph, for which the sum of the weights of the edges that cross from to its complement is maximized.

This example demonstrates how SemidefiniteOptimization may be used to set up a function that efficiently solves a relaxation of the NP-complete max-cut problem.

Suppose that has vertices so that they can be described by an index . Let be a vector with components for and for so that is nonzero (=2) only if and . Thus the max-cut is found by maximizing , where . The objective can be rewritten as:

... where is the Laplacian matrix of the graph and is the weighted adjacency matrix.

For smaller cases, the max-cut problem can be solved exactly, but this is impractical for larger graphs since in general the problem has NP-complete complexity.

The problem minimizes , where is a symmetric rank-1 positive semidefinite matrix, with for each , equivalent to , where is the matrix with at the diagonal position and 0 everywhere else.

To make the solution practical, solve a relaxed problem where the rank-1 condition is eliminated so that it only requires .

The semidefinite problem in dual form is given by

It is solved using SemidefiniteOptimization[c, {a_{0}, a_{1}, …, a_{k}}, {"DualMaximizer" }].

For the solution of the relaxed problem, a cut is constructed by randomized rounding: decompose , let be a uniformly distributed random vector of the unit norm and let . For demonstration, a function is defined that shows the relaxed value, the rounded value and the graph, with the vertices in shown in red.

Find an approximate max cut using the previously shown procedure, and compare with the exact result.

Find the max cut for a grid graph.

Find the max cut for a random graph.

Compare timings for the relaxed and exact algorithms for a Peterson graph.