Separation oracle
A separation oracle is a concept in the mathematical theory of convex optimization. It is a method to describe a convex set that is given as an input to an optimization algorithm. Separation oracles are used as input to ellipsoid methods.
Definition
Let K be a convex and compact set in Rn. A strong separation oracle for K is an oracle that, given a vector y'' in Rn, returns one of the following:- Assert that y is in K.
- Find a hyperplane that separates y from K: a vector
- A vector y is d-near K if its Euclidean distance from K is at most d;
- A vector y is d-deep in K if it is in K, and its Euclidean distance from any point in outside K is at least d.
- Assert that y is d-near K;
- Find a vector
Implementation
A special case of a convex set is a set represented by linear inequalities: . Such a set is called a convex polytope. A strong separation oracle for a convex polytope can be implemented, but its run-time depends on the input format.Representation by inequalities
If the matrix A and the vector b are given as input, so that ', then a strong separation oracle can be implemented as follows. Given a point y, compute ':- If the outcome is at most ', then y is in K by definition;
- Otherwise, there is at least one row ' of A, such that is larger than the corresponding value in ; this row gives us the separating hyperplane, as for all x in K.
Representation by vertices
Suppose the set of vertices of K is given as an input, so that the convex hull of its vertices. Then, deciding whether y is in K requires to check whether y is a convex combination of the input vectors, that is, whether there exist coefficients z1,...,zk such that:- ;
- for all i in 1,...,k.
- for all i in 1,...,k.
Problem-specific representation
In some linear optimization problems, even though the number of constraints is exponential, one can still write a custom separation oracle that works in polynomial time. Some examples are:- The minimum-cost arborescence problem: given a weighted directed graph and a vertex r in it, find a subgraph of minimum cost that contains a directed path from r to any other vertex. The problem can be presented as an LP with a constraint for each subset of vertices, which is an exponential number of constraints. However, a separation oracle can be implemented using n-1 applications of the minimum cut procedure.
- The maximum independent set problem. It can be approximated by an LP with a constraint for every odd-length cycle. While there are exponentially-many such cycles, a separation oracle that works in polynomial time can be implemented by just finding an odd cycle of minimum length, which can be done in polynomial time.
- The dual of the configuration linear program for the bin packing problem. It can be approximated by an LP with a constraint for each feasible configuration. While there are exponentially-many such cycles, a separation oracle that works in pseudopolynomial time can be implemented by solving a knapsack problem. This is used by the Karmarkar-Karp bin packing algorithms.
Non-linear sets
Usage
A strong separation oracle can be given as an input to the ellipsoid method for solving a linear program. Consider the linear program '. The ellipsoid method maintains an ellipsoid that initially contains the entire feasible domain. At each iteration t, it takes the center of the current ellipsoid, and sends it to the separation oracle:- If the oracle says that is feasible, then we do an "optimality cut" at : we cut from the ellipsoid all points x for which. These points are definitely not optimal.
- If the oracle says that is infeasible, then it typically returns a specific constraint that is violated by, that is, a row in the matrix A, such that. Since for all feasible x, this implies that for all feasible x. Then, we do a "feasibility cut" at : we cut from the ellipsoid all points