Skip to content

[Rule] KSatisfiability to MaxCut #166

@zazabap

Description

@zazabap

Source: NAESatisfiability
Target: MaxCut
Motivation: Classic NP-completeness reduction connecting Boolean satisfiability to graph partitioning. The Not-All-Equal structure is the key: every satisfied NAE clause contributes exactly 2 triangle edges to the cut, while every unsatisfied clause (all literals equal) contributes 0. This clean characterization establishes MaxCut as NP-hard via NAE-3SAT.
Reference: Garey, Johnson & Stockmeyer, "Some simplified NP-complete graph problems," Theoretical Computer Science 1(3), 237–267 (1976). Also: Garey & Johnson, Computers and Intractability (1979), Section 3.2.5.

Reduction Algorithm

Given a NAE-3SAT instance with $n$ variables $x_1, \ldots, x_n$ and $m$ clauses $C_1, \ldots, C_m$ (each clause has exactly 3 literals; for each clause, not all literals may be simultaneously true and not all simultaneously false):

Notation:

  • $n$ = num_vars, $m$ = num_clauses
  • For variable $x_i$, create two vertices: $v_i$ (positive literal) and $v_i'$ (negative literal)
  • Forcing weight $M = 2m + 1$

Variable gadgets:

  1. For each variable $x_i$, create vertices $v_i$ and $v_i'$.
  2. Add edge $(v_i, v_i')$ with weight $M$.

Since $M = 2m+1 > 2m$ equals the maximum possible total clause contribution (at most 2 per clause), the optimal cut always cuts every variable-gadget edge. This forces $v_i$ and $v_i'$ to opposite sides. The side containing $v_i$ encodes $x_i = \text{true}$.

Clause gadgets:
3. For each clause $C_j = (\ell_a, \ell_b, \ell_c)$:

  • Add a triangle of weight-1 edges: $(\ell_a, \ell_b)$, $(\ell_b, \ell_c)$, $(\ell_a, \ell_c)$.

Why NAE is essential:
For a NAE clause, the induced partition has 1 literal on one side and 2 on the other (or vice versa). A triangle with exactly $1+2$ split has exactly 2 edges crossing the cut. A triangle with all 3 on the same side contributes 0 — but the NAE constraint forbids this. Without NAE (standard 3-SAT), a clause with all literals true places all 3 literal-vertices on the same side, contributing 0 — identical to the unsatisfied case. The triangle gadget cannot distinguish the two, breaking the reduction. NAE exactly avoids this degenerate case.

Cut threshold:
4. The instance is NAE-satisfiable if and only if the maximum weighted cut $\geq n \cdot M + 2m$.

  • Satisfiable: every clause contributes exactly 2 → total = $nM + 2m$.
  • Unsatisfiable: every truth assignment has at least one clause with all literals equal (contributing 0) → total clause contribution $\leq 2(m-1)$ → cut $\leq nM + 2m - 2 < nM + 2m$.

Solution extraction: For variable $x_i$, if $v_i \in S$, set $x_i = \text{true}$; otherwise $\text{false}$.

Size Overhead

Target metric (code name) Formula
num_vertices $2n$ = 2 * num_vars
num_edges $n + 3m$ = num_vars + 3 * num_clauses

(Clause triangle edges connect literal-vertices of distinct variables within a clause; they are distinct from variable-gadget edges, which connect $v_i$ to $v_i'$. If a triangle edge happens to connect a complementary pair from the same variable — only possible when a clause contains both $x_i$ and $\neg x_i$ — that edge coincides with a variable-gadget edge and its weight accumulates. The formula num_vars + 3 * num_clauses is therefore a worst-case upper bound on distinct edges.)

Validation Method

  • Construct small NAE-3SAT instances where no clause contains both $x_i$ and $\neg x_i$ (so no edge merging occurs), reduce to MaxCut, solve both with BruteForce.
  • Verify: satisfying assignment maps to cut $= nM + 2m$.
  • Verify: unsatisfiable instance has maximum cut $< nM + 2m$.
  • Test both satisfiable (e.g., a colorable graph encoded as NAE-3SAT) and unsatisfiable instances.

Example

Source: NAE-3SAT with $n=3$, $m=2$, $M = 2(2)+1 = 5$

  • Variables: $x_1, x_2, x_3$
  • $C_1 = (x_1, x_2, x_3)$ (NAE: not all equal)
  • $C_2 = (\neg x_1, \neg x_2, \neg x_3)$ (NAE: not all equal)

Reduction:

  • Vertices: $v_1, v_1', v_2, v_2', v_3, v_3'$ (6 = $2n$ ✓)
  • Variable-gadget edges: $(v_1,v_1')$ w=5, $(v_2,v_2')$ w=5, $(v_3,v_3')$ w=5
  • $C_1$ triangle: $(v_1,v_2)$ w=1, $(v_2,v_3)$ w=1, $(v_1,v_3)$ w=1
  • $C_2$ triangle: $(v_1',v_2')$ w=1, $(v_2',v_3')$ w=1, $(v_1',v_3')$ w=1
  • Total edges: 9 = $n + 3m = 3 + 6$ ✓ (no merges — clause edges connect distinct-variable literal pairs)

Satisfying assignment: $x_1=T, x_2=F, x_3=F$

  • Partition: $S={v_1, v_2', v_3'}$, $\bar S={v_1', v_2, v_3}$
  • Variable-gadget cut: all 3 edges cross → $3 \times 5 = 15$
  • $C_1$ triangle: $(v_1, v_2)$ crosses ($v_1\in S, v_2\in\bar S$), $(v_1,v_3)$ crosses ($v_1\in S, v_3\in\bar S$), $(v_2,v_3)$ does not ($v_2,v_3\in\bar S$) → 2 edges cut ✓
  • $C_2$ triangle: $(v_1',v_2')$ crosses ($v_1'\in\bar S, v_2'\in S$), $(v_1',v_3')$ crosses ($v_1'\in\bar S, v_3'\in S$), $(v_2',v_3')$ does not ($v_2',v_3'\in S$) → 2 edges cut ✓
  • Total cut = 15 + 2 + 2 = 19
  • Threshold = $nM + 2m = 3(5) + 2(2) = 19$

Unsatisfying assignment: $x_1=T, x_2=T, x_3=T$ (fails $C_1$: all true)

  • Partition: $S={v_1,v_2,v_3}$, $\bar S={v_1',v_2',v_3'}$
  • Variable-gadget cut: $15$
  • $C_1$ triangle: all of $v_1,v_2,v_3\in S$ → 0 edges cut
  • $C_2$ triangle: all of $v_1',v_2',v_3'\in\bar S$ → 0 edges cut
  • Total cut = 15 < 19 = threshold

Metadata

Metadata

Assignees

No one assigned

    Labels

    ruleA new reduction rule to be added.

    Type

    No type

    Projects

    Status

    OnHold

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions