Unique sink orientation
In mathematics, a unique sink orientation is an orientation of the edges of a polytope such that, in every face of the polytope (including the whole polytope as one of the faces), there is exactly one vertex for which all adjoining edges are oriented inward (i.e. towards that vertex). If a polytope is given together with a linear objective function, and edges are oriented from vertices with smaller objective function values to vertices with larger objective values, the result is a unique sink orientation. Thus, unique sink orientations can be used to model linear programs as well  as certain nonlinear programs such as the smallest circle problem. In hypercubes. The problem of finding the sink in a unique sink orientation of a hypercube was formulated as an abstraction of linear complementarity problems by and it was termed "unique sink orientation" in 2001 . It is possible for an algorithm to determine the unique sink of a -dimensional hypercube in time for , substantially smaller than the time required to examine all vertices. When the orientation has the additional property that the orientation forms a directed acyclic graph, which happens when unique sink orientations are used to model LP-type  problems, it is possible to find the sink using a randomized algorithm in expected time exponential in the square root of "d" . In simple polytopes. A simple "d"-dimensional polytope is a polytope in which every vertex has exactly "d" incident edges. In a unique-sink orientation of a simple polytope, every subset of "k" incoming edges at a vertex "v" determines a "k"-dimensional face for which "v" is the unique sink. Therefore, the number of faces of all dimensions of the polytope (including the polytope itself, but not the empty set) can be computed by the sum of the number  of subsets of incoming edges, where "G"("P") is the graph of the polytope, and "d"("v") is the in-degree (number of incoming edges) of a vertex "v" in the given orientation . More generally, for any orientation of a simple polytope, the same sum counts the number of incident pairs of a face of the polytope and a sink of the face. And in an acyclic orientation, every face must have at least one sink. Therefore, an acyclic orientation is a unique sink orientation if and only if there is no other acyclic orientation with a smaller sum. Additionally, a "k"-regular  subgraph of the given graph forms a face of the polytope if and only if its vertices form a lower set for at least one acyclic unique sink orientation. In this way, the face lattice of the polytope is uniquely determined from the graph . Based on this structure, the face lattices of simple polytopes can be reconstructed from their graphs in polynomial time using linear programming .