Source: GraphPartitioning
Target: MaxCut
Motivation: Reveals the duality between minimizing and maximizing cut edges; enables using MaxCut solvers for bisection via a complementary objective.
Reference: Garey, Johnson & Stockmeyer, 1976 — establishes NP-completeness of Max Cut and Graph Bisection. The penalty-weighted complete graph construction below is folklore in combinatorial optimization.
Reduction Algorithm
Notation:
- Source: undirected graph $G = (V, E)$, $n = |V|$ (even), $m = |E|$
- Target: MaxCut on a weighted complete graph $G' = (V, E')$ with $E' = \binom{V}{2}$
- Penalty weight: $P = m + 1$
Key idea: Build a weighted complete graph where original edges are penalized (lower weight) and all pairs receive a balance-rewarding weight. For $P > m$, the penalty term dominates, forcing balanced partitions; among balanced partitions, the maximum weighted cut corresponds to the minimum original bisection.
Construction:
-
$V' = V$ (same vertex set).
- For each pair $(i, j)$ with $i < j$, set weight:
$$w'_{ij} = \begin{cases} P - 1 & \text{if } (i,j) \in E \ P & \text{if } (i,j) \notin E \end{cases}$$
The combined objective over a partition $(A, B)$ is:
$$\text{cut}_{G'}(A, B) = P \cdot |A| \cdot |B| - \text{cut}_G(A, B)$$
Proof that $P = m + 1$ suffices:
Let $(A_1, B_1)$ be any balanced partition and $(A_2, B_2)$ any unbalanced partition. We need $\text{cut}{G'}(A_1, B_1) > \text{cut}{G'}(A_2, B_2)$, i.e.:
$$P \cdot |A_1||B_1| - \text{cut}_G(A_1, B_1) > P \cdot |A_2||B_2| - \text{cut}_G(A_2, B_2)$$
Rearranging: $P(|A_1||B_1| - |A_2||B_2|) > \text{cut}_G(A_1, B_1) - \text{cut}_G(A_2, B_2)$.
-
LHS: For $n$ even, $|A||B|$ is uniquely maximized at $|A| = |B| = n/2$, giving $|A_1||B_1| - |A_2||B_2| \geq 1$. So $\text{LHS} \geq P = m + 1$.
-
RHS: $\text{cut}_G(A_1, B_1) \leq m$ and $\text{cut}_G(A_2, B_2) \geq 0$, so $\text{RHS} \leq m$.
Therefore $\text{LHS} \geq m + 1 > m \geq \text{RHS}$. ∎
Among balanced partitions, $P \cdot (n/2)^2$ is constant, so maximizing $\text{cut}_{G'}$ is equivalent to minimizing $\text{cut}_G(A, B)$.
Solution extraction: Vertex indices map directly — the partition assignment vector from the MaxCut solution is identical to the GraphPartitioning solution.
Size Overhead
| Target metric (code name) |
Formula (in terms of source getters) |
num_vertices |
num_vertices |
num_edges |
num_vertices * (num_vertices - 1) / 2 |
Validation Method
Closed-loop testing: solve GraphPartitioning by brute-force, solve the reduced MaxCut, and verify the extracted partition matches the optimal bisection.
Example
Source: 6 vertices, 9 edges: $(0,1), (0,2), (1,2), (1,3), (2,3), (2,4), (3,4), (3,5), (4,5)$.
MaxCut graph $G'$: 6 vertices, $\binom{6}{2} = 15$ weighted edges. With $P = m + 1 = 10$:
Original edges (weight $P - 1 = 9$):
$(0,1), (0,2), (1,2), (1,3), (2,3), (2,4), (3,4), (3,5), (4,5)$ — 9 edges
Non-edges (weight $P = 10$):
$(0,3), (0,4), (0,5), (1,4), (1,5), (2,5)$ — 6 edges
Optimal partition $A = {0,1,2}$, $B = {3,4,5}$:
- Crossing original edges: $(1,3), (2,3), (2,4)$ — 3 edges at weight 9 → $27$
- Crossing non-edges: $(0,3), (0,4), (0,5), (1,4), (1,5), (2,5)$ — 6 edges at weight 10 → $60$
- Total cut value: $27 + 60 = 87$
This is the unique maximum among all 10 balanced partitions (next best: 85). The corresponding GraphPartitioning solution has minimum bisection cut = 3.
An unbalanced partition $|A| = 2, |B| = 4$ cuts at most $2 \times 4 = 8$ cross-pairs (vs $3 \times 3 = 9$ for balanced), so the penalty term is strictly smaller, confirming $P = 10$ enforces balance.
Source: GraphPartitioning
Target: MaxCut
Motivation: Reveals the duality between minimizing and maximizing cut edges; enables using MaxCut solvers for bisection via a complementary objective.
Reference: Garey, Johnson & Stockmeyer, 1976 — establishes NP-completeness of Max Cut and Graph Bisection. The penalty-weighted complete graph construction below is folklore in combinatorial optimization.
Reduction Algorithm
Notation:
Key idea: Build a weighted complete graph where original edges are penalized (lower weight) and all pairs receive a balance-rewarding weight. For$P > m$ , the penalty term dominates, forcing balanced partitions; among balanced partitions, the maximum weighted cut corresponds to the minimum original bisection.
Construction:
The combined objective over a partition$(A, B)$ is:
Proof that$P = m + 1$ suffices:
Let$(A_1, B_1)$ be any balanced partition and $(A_2, B_2)$ any unbalanced partition. We need $\text{cut}{G'}(A_1, B_1) > \text{cut}{G'}(A_2, B_2)$, i.e.:
Rearranging:$P(|A_1||B_1| - |A_2||B_2|) > \text{cut}_G(A_1, B_1) - \text{cut}_G(A_2, B_2)$ .
Therefore$\text{LHS} \geq m + 1 > m \geq \text{RHS}$ . ∎
Among balanced partitions,$P \cdot (n/2)^2$ is constant, so maximizing $\text{cut}_{G'}$ is equivalent to minimizing $\text{cut}_G(A, B)$ .
Solution extraction: Vertex indices map directly — the partition assignment vector from the MaxCut solution is identical to the GraphPartitioning solution.
Size Overhead
num_verticesnum_verticesnum_edgesnum_vertices * (num_vertices - 1) / 2Validation Method
Closed-loop testing: solve GraphPartitioning by brute-force, solve the reduced MaxCut, and verify the extracted partition matches the optimal bisection.
Example
Source: 6 vertices, 9 edges:$(0,1), (0,2), (1,2), (1,3), (2,3), (2,4), (3,4), (3,5), (4,5)$ .
MaxCut graph$G'$ : 6 vertices, $\binom{6}{2} = 15$ weighted edges. With $P = m + 1 = 10$ :
Original edges (weight$P - 1 = 9$ ):
$(0,1), (0,2), (1,2), (1,3), (2,3), (2,4), (3,4), (3,5), (4,5)$ — 9 edges
Non-edges (weight$P = 10$ ):
$(0,3), (0,4), (0,5), (1,4), (1,5), (2,5)$ — 6 edges
Optimal partition$A = {0,1,2}$ , $B = {3,4,5}$ :
This is the unique maximum among all 10 balanced partitions (next best: 85). The corresponding GraphPartitioning solution has minimum bisection cut = 3.
An unbalanced partition$|A| = 2, |B| = 4$ cuts at most $2 \times 4 = 8$ cross-pairs (vs $3 \times 3 = 9$ for balanced), so the penalty term is strictly smaller, confirming $P = 10$ enforces balance.