Defining Polynomials p 1 (n) is the bound on the length of an input pair p 2 (n) is the bound on the running time of f p 3 (n) is a bound on the number of strings in S of length n. q(n) = p 3 (p 2 (p 1 (n))) is the maximum number of strings in S that can be in the argument part of the output of f. r(n) = 4 k k! (q(n) + 1) k
CULL ( , ) Used in combination with splitting intervals into upper and lower halves to eventually get intervals of size 1.
CULL( , ) Cull: its job is to prune the number of intervals to a polynomial. For example, it will prune the number of intervals of size 1 from 2 p(|x|) to a polynomial, so that we can brute-force check each interval in polynomial time.
CULL( , ) A recursive function with recursion depth bounded by k = set of intervals within [{0 p(|x|), 1 p(|x|) }] = [ s (w 1 ) = b 1, … s (w d ) = b d ], a list of assumptions, fixing query responses to 1 or 0 (since our polynomial machine can’t use the oracle)
CULL( , ) For instance: Initial call: CULL 0 ([0 p(|x|), 1 p(|x|) ], Ø) At depth d=1: CULL 1 ( , 1 assumption). At depth d=k: CULL k ( , k assumptions)
CULL( , ) Ex: CULL 3 ( , [ s (w 1 ) = 1, s (w 2 ) = 0, s (w 3 ) = 0]) Use this to transform, for each I, f(I) = ( v 1, v 2, … v k ) to g (I) = ( (I), Z (I) ) where Z (I) is the list with the w’s removed (I) is a (k-d)-ary Boolean function with d variables fixed to specific values
Leaf Nodes of CULL Represent a complete set of assumptions (making Z (I) empty) (I) is a constant function, and so can be evaluated We evaluate each, and return the maximum interval such that g (I) is true. If none exists, we return Ø
Correctness of CULL at leaves If the assumptions are correct, then look at what is returned. If it is an interval, then x L, else x L
Nonleaf Nodes Consists of two phases: phase 1 removes duplicates in phase 2 divides ’ into groups that we can use in recursive calls while eliminating some intervals along the way ’’’’’’
Phase 1: Remove duplicates If g (I) = g (I’) for I < I’, then take ’ = - {I} Then ’ will still be a cover Remove all such duplicates ’’’’’’
Phase 2: Split ’ = {all I ’ | (I) (0,0,…,0) = 0} = {all I ’ | (I) (0,0,…,0) = 1} ’’’’’’
Order within Order the intervals in as follows: I 1 = min{I | I } I t+1 = min{I | I Z (I) Z (I 1 ) … Z (I) Z (I t ) } m is the largest t such that I t is defined.
Order within This means two things: I 1 < I 2 < … < I m The Z (I i ) are pair-wise disjoint. Now define ’ = { if m q(n) { J | J J I q(n)+1 otherwise x 2, x 3 x 4, x 5 x 2, x 6 x 7, x 8 i 1 i 2 i 3 i 4 I 1 I 2 I 3 ’’’’’’
Claim: ’ is a cover of if is correct Without loss of generality, let m>q(n) (otherwise ’ = by our definition) Then J such that ( I ) S satisfies g (I) IFF I J Specifically, r, 1 r m, such that t, 1 t m, S satisfies g (I t ) IFF t r
Nearing the Punchline... The number of strings in S that can appear in these Z ’s is bounded by q(n). ( I )[ (I)(0,0,…0)=0] So S does not satisfy g (I q(n)+1 ) x 2, x 4 x 3, x 5 x 2, x 6 x 7, x 8 i 1 i 2 i 3 i 4 I 1 I 2 I 3 Ex: q(n)=2
The Punchline w max (x) < left endpoint of I q(n)+1. so we can eliminate from any I > I q(n)+1 This keeps the number of intervals polynomial. x 2, x 4 x 3, x 5 x 2, x 6 x 7, x 8 x ? x ? chopped--> i 1 i 2 i 3 i 4 I ? I 1 I 2 I 3 I ?
Computing the Recursive Calls Let y 1, … y (k-d)m be an enumeration of the strings in Z (I 1 ),…, Z (I m ) Then for each t in the range 1 t (k-d)m, let t = {I | I ‘ I U 1 s t-1 s y t Z (I)} Ex: x 2, x 4 x 3, x 5 x 2, x 6 x 7, x 8 i 1 i 2 i 3 i 4 I 1 I 2 I 3 1 = {i 1, i 3 } 2 = {i 2 }...
What does do for Us? This means that the intervals within a given i all have at least one variable in common, namely y i. Ex: x 2, x 4 x 3, x 5 x 2, x 6 x 7, x 8 i 1 i 2 i 3 i 4 I 1 I 2 I 3 1 = {i 1, i 3 } 2 = {i 2 }...
The Recursive Calls CULL( 1, + s (y 1 ) = 0) CULL( 1, + s (y 1 ) = 1) up to CULL( (k-d)m, + s (y (k-d)m ) = 0) CULL( (k-d)m, + s (y (k-d)m ) = 1) Total number of calls: 2(k-d)m
Computing Repeat whole process to get Use max instead of min
Correctness Need to set this free variable to true and to false at each level of the tree to guarantee that one of the leaves will contain the correct set of assumptions.
Correctness At the leaves, because we have a full set of assumptions, we are evaluating constant functions. We get that covers [0 p(|x|), 1 p(|x|) ]. Therefore if w max (x) is in [0 p(|x|), 1 p(|x|) ], then it must be in . One of the assumptions is correct.
Summary Since the entire number of recursive calls at each level is polynomial and the depth of recursion is contstant, and the time needed to cull the intervals is polynomial, and the number of intervals is polynomial, and each one can be checked in polynomial time…
P=NP Using our hypothetical sparse NP-hard setS, we have given a P algorithm for an arbitrary NP set! QED