In graph theory, a **cut** is a partition of the vertices of a graph into two disjoint subsets.^{[1]} Any cut determines a **cut-set**, the set of edges that have one endpoint in each subset of the partition. These edges are said to **cross** the cut. In a connected graph, each cut-set determines a unique cut, and in some cases cuts are identified with their cut-sets rather than with their vertex partitions.

In a flow network, an **s–t cut** is a cut that requires the *source* and the *sink* to be in different subsets, and its *cut-set* only consists of edges going from the source's side to the sink's side. The *capacity* of an s–t cut is defined as the sum of the capacity of each edge in the *cut-set*.

A **cut** is a partition of of a graph into two subsets *S* and *T*.
The **cut-set** of a cut is the set of edges that have one endpoint in *S* and the other endpoint in *T*.
If *s* and *t* are specified vertices of the graph *G*, then an ** s–t cut** is a cut in which

In an unweighted undirected graph, the *size* or *weight* of a cut is the number of edges crossing the cut. In a weighted graph, the **value** or **weight** is defined by the sum of the weights of the edges crossing the cut.

A **bond** is a cut-set that does not have any other cut-set as a proper subset.

Main article: Minimum cut |

A cut is *minimum* if the size or weight of the cut is not larger than the size of any other cut. The illustration on the right shows a minimum cut: the size of this cut is 2, and there is no cut of size 1 because the graph is bridgeless.

The max-flow min-cut theorem proves that the maximum network flow and the sum of the cut-edge weights of any minimum cut that separates the source and the sink are equal. There are polynomial-time methods to solve the min-cut problem, notably the Edmonds–Karp algorithm.^{[2]}

Main article: Maximum cut |

A cut is *maximum* if the size of the cut is not smaller than the size of any other cut. The illustration on the right shows a maximum cut: the size of the cut is equal to 5, and there is no cut of size 6, or |*E*| (the number of edges), because the graph is not bipartite (there is an odd cycle).

In general, finding a maximum cut is computationally hard.^{[3]}
The max-cut problem is one of Karp's 21 NP-complete problems.^{[4]}
The max-cut problem is also APX-hard, meaning that there is no polynomial-time approximation scheme for it unless P = NP.^{[5]}
However, it can be approximated to within a constant approximation ratio using semidefinite programming.^{[6]}

Note that min-cut and max-cut are *not* dual problems in the linear programming sense, even though one gets from one problem to other by changing min to max in the objective function. The max-flow problem is the dual of the min-cut problem.^{[7]}

The **sparsest cut problem** is to bipartition the vertices so as to minimize the ratio of the number of edges across the cut divided by the number of vertices in the smaller half of the partition. This objective function favors solutions that are both sparse (few edges crossing the cut) and balanced (close to a bisection). The problem is known to be NP-hard, and the best known approximation algorithm is an approximation due to Arora, Rao & Vazirani (2009).^{[8]}

The family of all cut sets of an undirected graph is known as the **cut space** of the graph. It forms a vector space over the two-element finite field of arithmetic modulo two, with the symmetric difference of two cut sets as the vector addition operation, and is the orthogonal complement of the cycle space.^{[9]}^{[10]} If the edges of the graph are given positive weights, the minimum weight basis of the cut space can be described by a tree on the same vertex set as the graph, called the Gomory–Hu tree.^{[11]} Each edge of this tree is associated with a bond in the original graph, and the minimum cut between two nodes *s* and *t* is the minimum weight bond among the ones associated with the path from *s* to *t* in the tree.