This preview shows pages 1–2. Sign up to view the full content.
This preview has intentionally blurred sections. Sign up to view the full version.View Full Document
Unformatted text preview: CS 577: Introduction to Algorithms 12/05/06 Homework Solution: 5b Instructor: Shuchi Chawla TA: Siddharth Barman Question 1 Note that Not-All-Equal-SAT ( NAE- SAT ) is in NP . Say we have n boolean variables x 1 to x n and m clauses C 1 to C m in CNF giving us boolean formula . Given an assignment of the n variables it will take us polynomial amount to verify that satisfies each and every clause in the not-all- equal form and hence NAE- SAT can be verified in polytime. We prove that NAE- SAT is NP- complete by reducing Circuit- SAT to it. Essentially given a circuit C we wish to determine a boolean function such that NAE- SAT iff C is satisfiable. The procedure followed to get such a is a slight modification of the reduction from Circuit- SAT to 3- SAT that was done in class. Also in this reduction we will ensure that every clause has exactly 3 variables (and no less). This is not important for this question but will be useful for the next question. For NOT gate , we add clauses ( x v x u y ) and ( x v x u y ). Here an extra boolean variable y is introduced which is common to all clauses. For OR gate ( x v = x u x w ) we introduce ( x v x u y ), ( x w x v y ) and ( x v x u x w ) For AND gate ( x v = x u x w ) we introduce ( x v x u y ), ( x v x w y ) and ( x v x u x w ) As mentioned above boolean variable y is common through all the clauses. Now if an assignment satisfies the given circuit C we can simply set y = 0, this would insure that NAE- SAT . As each clause of is satisfiable and there is at least one literal per clause which is 0. Each clause containing y is obviously satisfied because we set y = 0. Each clause that doesnt contain y (one each in the OR and AND case) can be checked to be satisfied by a case analysis....
View Full Document
- Spring '08