280 likes | 430 Views
CSCI 3160 Design and Analysis of Algorithms Tutorial 3. Fei Chen. Outline. More examples about 2-SAT More randomized algorithms Verifying Matrix Multiplication String Equality Test Design Patterns. 2-SAT. Given (x 1 ∨¬x 2 )∧(x 2 ∨¬x 3 )∧(x 4 ∨x 3 )∧(x 5 ∨x 1 )∧(x 4 ∨¬x 5 )
E N D
CSCI 3160 Design and Analysis of AlgorithmsTutorial 3 Fei Chen
Outline • More examples about 2-SAT • More randomized algorithms • Verifying Matrix Multiplication • String Equality Test • Design Patterns
2-SAT • Given (x1∨¬x2)∧(x2∨¬x3)∧(x4∨x3)∧(x5∨x1)∧(x4∨¬x5) • (x1, x2, x3, x4, x5) = (T, T, T, T, T) is a satisfying assignment. • Suppose you do not know about this solution • You do not even know if there exists a solution for this formula • How to decide if there is one using randomness?
2-SAT • (x1∨¬x2)∧(x2∨¬x3)∧(x4∨x3)∧(x5∨x1)∧(x4∨¬x5) • Start with a random assignment, • say (x1, x2, x3, x4, x5) = (F, T, F, F, T) Number of xis that agrees with the solution (i.e. number of i such that xi = T) 0 1 2 3 4 5
2-SAT • (x1∨¬x2)∧(x2∨¬x3)∧(x4∨x3)∧(x5∨x1)∧(x4∨¬x5) • Find an unsatisfied clause: (x4∨x3) • flipone of the value of x3 and x4 randomly • If we flip x3, then we jump from 2 to 3 • If we flip x4, then we jump from 2 to 3 clauses
2-SAT • (x1∨¬x2)∧(x2∨¬x3)∧(x4∨x3)∧(x5∨x1)∧(x4∨¬x5) • Find an unsatisfied clause: (x1∨¬x2) • flipone of the value of x1 and x2 randomly • If we flip x1, then we jump from 3 to 4 • If we flip x2, then we jump from 3 to 2 clauses
2-SAT • (x1∨¬x2)∧(x2∨¬x3)∧(x4∨x3)∧(x5∨x1)∧(x4∨¬x5) • Find an unsatisfied clause: (x2∨¬x3) • flipone of the value of x2 and x3 randomly • If we flip x2, then we jump from 2 to 3 • If we flip x3, then we jump from 2 to 1 clauses
2-SAT • (x1∨¬x2)∧(x2∨¬x3)∧(x4∨x3)∧(x5∨x1)∧(x4∨¬x5) • Find an unsatisfied clause: (x1∨¬x2) • flipone of the value of x1 and x2 randomly • If we flip x1, then we jump from 3 to 4 • If we flip x2, then we jump from 3 to 2 clauses
2-SAT • (x1∨¬x2)∧(x2∨¬x3)∧(x4∨x3)∧(x5∨x1)∧(x4∨¬x5) • Find an unsatisfied clause: (x4∨¬x5) • flipone of the value of x4 and x5 randomly • If we flip x4, then we jump from 4 to 5 • If we flip x5, then we jump from 4 to 3 clauses
2-SAT • (x1∨¬x2)∧(x2∨¬x3)∧(x4∨x3)∧(x5∨x1)∧(x4∨¬x5) • Find an unsatisfied clause: none • We have a satisfying assignment! =) clauses
Analysis • To do the analysis, assume we have a satisfying assignment in mind, call it solution • Of course, we do not know if a satisfying assignment exists when we run the algorithm • we do this for the analysis only • We compare the current assignment with the solution • And record the number of variables that are assigned to the same T/F value in both (current and solution) assignments
2-SAT • (x1∨¬x2)∧(x2∨¬x3)∧(x4∨x3)∧(x5∨x1)∧(x4∨¬x5) • Find an unsatisfied clause: (x4∨x3) • flipone of the value of x3 and x4 randomly • If we flip x3, then we jump from 2 to 3 • If we flip x4, then we jump from 2 to 3 clauses Number of xis that agrees with the solution (i.e. xi = T) with prob. 1 0 1 2 3 4 5
2-SAT • (x1∨¬x2)∧(x2∨¬x3)∧(x4∨x3)∧(x5∨x1)∧(x4∨¬x5) • Find an unsatisfied clause: (x1∨¬x2) • flipone of the value of x1 and x2 randomly • If we flip x1, then we jump from 3 to 4 • If we flip x2, then we jump from 3 to 2 clauses Number of xis that agrees with the solution (i.e. xi = T) with prob. 1/2 with prob. 1/2 0 1 2 3 4 5
2-SAT • (x1∨¬x2)∧(x2∨¬x3)∧(x4∨x3)∧(x5∨x1)∧(x4∨¬x5) • Find an unsatisfied clause: (x2∨¬x3) • flipone of the value of x2 and x3 randomly • If we flip x2, then we jump from 2 to 3 • If we flip x3, then we jump from 2 to 1 clauses Number of xis that agrees with the solution (i.e. xi = T) with prob. 1/2 with prob. 1/2 0 1 2 3 4 5
2-SAT • (x1∨¬x2)∧(x2∨¬x3)∧(x4∨x3)∧(x5∨x1)∧(x4∨¬x5) • Find an unsatisfied clause: (x1∨¬x2) • flipone of the value of x1 and x2 randomly • If we flip x1, then we jump from 3 to 4 • If we flip x2, then we jump from 3 to 2 clauses Number of xis that agrees with the solution (i.e. xi = T) with prob. 1/2 with prob. 1/2 0 1 2 3 4 5
2-SAT • (x1∨¬x2)∧(x2∨¬x3)∧(x4∨x3)∧(x5∨x1)∧(x4∨¬x5) • Find an unsatisfied clause: (x4∨¬x5) • flipone of the value of x4 and x5 randomly • If we flip x4, then we jump from 4 to 5 • If we flip x5, then we jump from 4 to 3 clauses Number of xis that agrees with the solution (i.e. xi = T) with prob. 1/2 with prob. 1/2 0 1 2 3 4 5
2-SAT • (x1∨¬x2)∧(x2∨¬x3)∧(x4∨x3)∧(x5∨x1)∧(x4∨¬x5) • Find an unsatisfied clause: none • We have a satisfying assignment! =) clauses Number of xis that agrees with the solution (i.e. xi = T) 0 1 2 3 4 5
2-SAT with prob. 1 0 1 • We always move to the right with probability at least 1/2 2 3 4 5 with prob. 1/2 with prob. 1/2 0 1 2 3 4 5 with prob. 1/2 with prob. 1/2 0 1 2 3 4 5 with prob. 1/2 with prob. 1/2 0 1 2 3 4 5 with prob. 1/2 with prob. 1/2 0 1 2 3 4 5 0 1 2 3 4 5
2-SAT • We always move forward with probably at least 1/2 • a satisfying assignment must satisfy every clause • When we find an unsatisfied clause, it must be bad • The values of the literals in a satisfying assignment must be one of the good ones • Hence, can always flip one to move to the right
2-SAT • We always move forward with probably at least 1/2 • When we reach n (i.e. 5 in the example), we have a satisfying assignment. • Sufficient condition, not necessary. • There may be other satisfying assignments • But that will only improve the running time • This is random walk on line • and so we expect O(n2) jumps to hit n (refer to lecture notes)
2-SAT Randomized algorithm: • Repeat O(n2) times, • if we hit 5 in the middle of these O(n2) flips, return there is an assignment • otherwise, return there is NO satisfying assignment
Verifying Matrix Multiplication • Given 3 n x n matrices A, B and C, verify if AB = C • Naïve algorithm • Compute AB, check if it is equal to C • Runs in time O(n3), dominated by computing AB • How to do faster with high probability?
Verifying Matrix Multiplication • Given 3 n x n matrices A, B and C, verify if AB = C • Consider AB – C • Want to see if AB – C is an all-zeros matrix • Lecture: how to check if two polynomials are identical? • Evaluate the polynomials at different points
Verifying Matrix Multiplication • Given 3 n x n matrices A, B and C, verify if AB = C • Now, multiply AB – C by different random vectors • To avoid computing AB, we compute A(Bx) – Cx We have • Working over modulo 2, • If AB ≠ C, then Pr[(AB - C)x ≠ 0] ≥ 1/2
String equality • Alice has an n-bit string (a1, a2, …, an) • Bob has an n-bit string (b1, b2, …, bn) • Alice can communicate with Bob • How to send as few bits as possible so that they know the two strings are equal?
String equality • Alice has an n-bit string (a1, a2, …, an) • Bob has an n-bit string (b1, b2, …, bn) • Represent • (a1, a2, …, an) by a1 + a2x + … + anxn-1 • (b1, b2, …, bn) by b1 + b2x + … + bnxn-1 • Polynomial Identity Testing! • This idea can be extended to pattern matching
Design Patterns • Pr[Correct] = 1 • possibly worst-case time • Example: randomized quick sort; 2-SAT • Pr[Correct] < 1 but not too small • Usually run the algorithm repeatedly to get a large success probability • Example min-cut • Analysis method: Probability / Concentration inequalities, etc.
End • Questions?