Problem Set 3 Solution: 6.892: Algorithmic Lower Bounds, Spring 2019 Prof. Erik Demaine, Jeffrey Bosboom, Jayson Lynch
Problem Set 3 Solution: 6.892: Algorithmic Lower Bounds, Spring 2019 Prof. Erik Demaine, Jeffrey Bosboom, Jayson Lynch
Problem 3.1 [Set Splitting]. Prove that the following problem is NP-complete.
Hint: The reduction is straightforward if you choose the right problem to reduce from.
Solution: We begin by showing that Set Splitting is in NP. Let (S, C) be a Set Splitting
instance. We nondeterministically construct the sets S1 and S2 by guessing which set to put each
element of S in. Then we verify that every set in C is neither a subset of S1 or of S2 . This
algorithm takes linear time for guessing and linear time for verifying, so it is polynomial-time.
Thus Set Splitting is in NP.
We now prove that Set Splitting is NP-hard by reducing from the NP-hard problem Positive
NAE 3-SAT. Let (X, ϕ) be a Positive NAE 3-SAT instance, where X is a set of variables and
ϕ is a formula which is a conjunction of positive NAE clauses over those variables. Define C as
follows: for every clause (x1 , x2 , x3 ) in ϕ, add the set {x1 , x2 , x3 } to C. Our reduction outputs the
Set Splitting instance (X, C) in linear time.
We prove that the Positive NAE 3-SAT and Set Splitting instances are equivalent. Define
a bijection between truth-value assignments of X and bipartitions of X as follows: an assignment
of truth values to the variables of X corresponds to a partition of X into disjoint sets S1 , S2 where
S1 is the set of true-valued variables and S2 is the set of false-valued variables. Then an assignment
of truth values satisfies ϕ if and only if the corresponding partition is a splitting of C. This is
because each clause (x1 , x2 , x3 ) of ϕ is satisfied under a given truth assignment if and only if the
corresponding set {x1 , x2 , x3 } of C is split between the S1 and S2 corresponding to that truth
assignment. Therefore our reduction is correct.
Because Positive NAE 3-SAT is NP-hard, so is Set Splitting. Thus Set Splitting is
both NP-hard and in NP, so it is NP-complete.