# Closure problem

In graph theory and combinatorial optimization, a closure of a directed graph is a set of vertices C, such that no edges leave C. The closure problem is the task of finding the maximum-weight or minimum-weight closure in a vertex-weighted directed graph. It may be solved in polynomial time using a reduction to the maximum flow problem. It may be used to model various application problems of choosing an optimal subset of tasks to perform, with dependencies between pairs of tasks, one example being in open pit mining.

## Algorithms
### Condensation

The maximum-weight closure of a given graph G is the same as the complement of the minimum-weight closure on the transpose graph of G, so the two problems are equivalent in computational complexity. If two vertices of the graph belong to the same strongly connected component, they must behave the same as each other with respect to all closures: it is not possible for a closure to contain one vertex without containing the other. For this reason, the input graph to a closure problem may be replaced by its condensation, in which every strongly connected component is replaced by a single vertex. The condensation is always a directed acyclic graph.

### Reduction to maximum flow

As Picard (1976) showed, a maximum-weight closure may be obtained from G by solving a maximum flow problem on a graph H constructed from G by adding to it two additional vertices s and t. For each vertex v with positive weight in G, the augmented graph H contains an edge from s to v with capacity equal to the weight of v, and for each vertex v with negative weight in G, the augmented graph H contains an edge from v to t whose capacity is the negation of the weight of v. All of the edges in G are given infinite capacity in H.
A minimum cut separating s from t in this graph cannot have any edges of G passing in the forward direction across the cut: a cut with such an edge would have infinite capacity and would not be minimum. Therefore, the set of vertices on the same side of the cut as s automatically forms a closure C. The capacity of the cut equals the weight of all positive-weight vertices minus the weight of the vertices in C, which is minimized when the weight of C is maximized. By the max-flow min-cut theorem, a minimum cut, and the optimal closure derived from it, can be found by solving a maximum flow problem.

### Alternative algorithms

Alternative algorithms for the maximum closure problem that do not compute flows have also been studied. Their running time is similar to that of the fastest known flow algorithms.

## Applications
### Open pit mining

An open pit mine may be modeled as a set of blocks of material which may be removed by mining it once all the blocks directly above it have been removed. A block has a total value, equal to the value of the minerals that can be extracted from it minus the cost of removal and extraction; in some cases, a block has no extraction value but must still be removed to reach other blocks, giving it a negative value. One may define an acyclic network that has as its vertices the blocks of a mine, with an edge from each block to the blocks above it that must be removed earlier than it. The weight of each vertex in this network is the total value of its block, and the most profitable plan for mining can be determined by finding a maximum weight closure, and then forming a topological ordering of the blocks in this closure.

### Military targeting

In military operations, high-value targets such as command centers are frequently protected by layers of defense systems, which may in turn be protected by other systems. In order to reach a target, all of its defenses must be taken down, making it into a secondary target. Each target needs a certain amount of resources to be allocated to it in order to perform a successful attack. The optimal set of targets to attack, to obtain the most value for the resources expended, can be modeled as a closure problem.

### Transportation network design

The problem of planning a freight delivery system may be modeled by a network in which the vertices represent cities and the (undirected) edges represent potential freight delivery routes between pairs of cities. Each route can achieve a certain profit, but can only be used if freight depots are constructed at both its ends, with a certain cost. The problem of designing a network that maximizes the difference between the profits and the costs can be solved as a closure problem, by subdividing each undirected edge into two directed edges, both directed outwards from the subdivision point. The weight of each subdivision point is a positive number, the profit of the corresponding route, and the weight of each original graph vertex is a negative number, the cost of building a depot in that city. Together with open pit mining, this was one of the original motivating applications for studying the closure problem; it was originally studied in 1970, in two independent papers published in the same issue of the same journal by J. M. W. Rhys and Michel Balinski.

### Job scheduling

Sidney (1975) and Lawler (1978) describe an application of the closure problem to a version of job shop scheduling in which one is given a collection of tasks to be scheduled to be performed, one at a time. Each task has two numbers associated with it: a weight or priority, and a processing time, the amount of time that it takes to perform that task. In addition the tasks have precedence constraints: certain tasks must be performed before others. These precedence constraints can be described by a directed acyclic graph G in which an edge from one task to another indicates that the first task must be performed earlier than the second one. The goal is to choose an ordering that is consistent with these constraints (a topological ordering of G) that minimizes the total weighted completion time of the tasks.
Although (as Lawler shows) this scheduling problem is NP-complete in general, Sidney describes a decomposition method that can help solve the problem by reducing it to several smaller problems of the same type. In particular, if S is a subset of the tasks that (among all subsets) has the largest possible ratio of its total weight to its total processing time, and in addition S is minimal among all sets with the same ratio, then there exists an optimal schedule in which all tasks in S are performed before all other tasks. As long as S is not the whole set of tasks, this partition of the tasks splits the scheduling problem into two smaller problems, one of scheduling S and one of scheduling the remaining tasks. Although S is a closure (for a graph with reversed edges from G) the problem of finding S is not exactly a maximum weight closure problem, because the value of S is a ratio rather than a sum of weights. Nevertheless, Lawler shows that S may be found in polynomial time by a binary search algorithm in which each step of the search uses an instance of the closure problem as a subroutine.