## 1. Problem Statement

Consider the Almost-SAT problem defined as following:

**Input:** A CNF formula $f$ with $n$ variables $x_1, … , x_n$ and $m$ clauses.

**Output:** An assignment that satisfies *exactly* $m - 1$ clauses, or *NO* if no such assignment exists.

Now, our aim is to prove that **Almost-SAT** problem is NP-Complete.

## 2. Attack Plan

In order to prove that Almost-SAT $\in$ NP-Complete, we need to show two things:

- First of all, we need to make sure that Almost-SAT is a search (or decision) problem, i.e. Almost-SAT $\in NP$
- Second, we want to make sure that Almost-Sat is NP-Hard (at least as hard as any of NP-Complete problems).

## 3. Proof

### 3.1 Almost-SAT $\in$ NP

Being a search/decision problem, means we have a polynomial time algorithm that can verify validity of a solution.

Thus, given input $f$ for Almost-SAT and an assignment $S$ (which is a proposed solution):

in $O(n)$ we can verify that any particular clause is satisfied or not

we have $m$ clauses, so $O(mn)$ time to check that exactly $m - 1$ clauses are satisfied

### 3.2 SAT $\to$ Almost-SAT

Consider some problem $B$ which is NP-Complete. Being NP-Complete means $$A \to B, \forall A \in NP$$ That’s $B$ is as hard as any problems in NP.

From this, notice that $$(A \to B) \land (B \to C) \implies A \to C$$

This means, given a known NP-Complete problem ($B$ above), it is enough to reduce that problem to Almost-SAT, to prove that Almost-SAT is NP-Complete too.

By Cook-Levin Theorem we know that SAT is NP-Complete.

Let’s reduce SAT to Almost-SAT, to complete the proof.

- Consider input for SAT problem: a CNF formula $f$ of $n$ variables and $m$ clauses.
- Create a new variable $v$, and use it to define a new formula $f’ = f \land (v) \land(\bar{v})$.
- Note that $m’ = m + 2$ (where $m’$ is number of clauses in $f’$, and $m$ is number of clauses in $f$)

**Claim:** $f$ is satisfiable $\iff$ $f’$ has an assignment satisfying $m’ - 1$ clauses

Forward implication: take any satisfying assignment for $f$, then set $v = True$, implication follows immediately.

Reverse implication: for a given satisfying assignment of $f’$, only one of clauses $(v)$ or $(\bar{v})$ can be satisfied. So, in the whole formula $f’$, $m’ - 1$ clauses are satisfiable at most. Now, given such an assignemnt, drop variable $v$ from it, and we have satisfactory assignment for $f$.

Since, both transforming $f$ to $f’$ and transforming satisfying assignment for $f’$ to that of $f$ takes polynomial time, SAT $\to$ Almost-SAT. $\blacksquare$