raw rand algo PIT DNF approx count perfect matching USTCONN maxcut BPP vs NEXP admin ps1 due now ps2 out tonight today derandomization derandomization via enumeration nonuniformity nondeterminism derandomization derandomization of algo derandomization "complete" +\eps-approx counting of circuits PIT no derandomization known x(1+\eps)-approx # bipartite perfect matching derandomized primality x(1+\eps)-approx count of DNF USTCONN\in RL bipartite matching in RNC x(1/2)-approx maxcut of complexity classes P vs BPP def: TIME(f) = languages deterministically decidable in O(f) time P=\cup_c TIME(n^c)=TIME(poly(n)) ~P=TIME(2^{poly(log n)}) SUBEXP=\cap_\eps \TIME(2^{n^\eps}) EXP=TIME(2^{poly}) Thm[DTime Hierarchy Theorem] f,g:\N\to\N, f\log f=o(g) then TIME(f)\subsetneq TIME(g) [[says that having more resources gives you more power]] cor: P\subsetneq ~P\subsetneq SUBEXP\subsetneq EXP Q. BPP vs P,~P,SUBEXP,EXP? open: BPTIME heirarchy? enumeration thm: L has rand algo in time t, using r(n) random bits => L has det algo in time poly(2^{r(n)},t) Pf. A algo for L A(x,r) x = input r = randomness x\in L => Pr_r [A(x,r)=1]\ge 2/3 x\notin L => Pr_r [A(x,r)=1]\le 1/3 algo compute b=1/2^{r(n)}\cdot \sum_{r\in\bits^{r(n)}} A(x,r) b>1/2 => yes b\le 1/2 => no analysis time: clear correctness: clear Cor: BPP\subseteq EXP derandomization goal: reduce from poly(n) random bits to O(log n) then derandomization we'll see why directly getting to constant is not usually what happens later nonuniformity prop: A(x,r) BPP algo with error <2^{-n}. Then *exists* r_0 such that x\in L => A(x,r_0)=1 x\notin L => A(x,r_0)=0 [[can always amplify to this low error]] pf consider random r Pr_r[L(x)\ne A(x,r)]<2^{-n} Pr_r[\exists L(x)\ne A(x,r)] \le \sum_x Pr_r[L(x)\ne A(x,r)] < 2^n * 2^{-n} =1 Pr_r[\forall L(x)= A(x,r)]>0 => exists desired r_0 rmk: r_0 is non-constructive only depends on *input length*, called "advice" defn: let a:N->N, C a complexity class. C/a = those languages L with advice strings \alpha_1,\alpha_2,\ldots such that that x\in L iff (x,\alpha_|x|)\in L and |\alpha_i|\le a(i) [[one advice string per input, of size a(|x|)]] eg, P/poly fact: L\in P/poly iff family of boolean circuits {C_n:\bits^n\to \bits} such that [[and, or not circuits]] C_n:\bits^n\to \bits = L|_{\bits^n} |C_n|\le poly(n) [[TMs are uniform = one computational object for all inputs]] [[ckts are non-uniform = computational device changes based on the input]] thm: P\ne P/\poly pf. L={1^n: n in binary = x, x\in HALT} [[advice is whether x in HALT, only one advice per input size needed]] [[HALT is undecidable]] Cor: BPP\subseteq P/poly [[advice = r_0 from previous theorem]] Q. How powerful is P/poly? Thm[KarpLipton] NP\subseteq P/poly => "almost" P=NP non-determinism NP algo A(x,r) x\in L => \Pr_r[A(x,r)=1]>0 x\notin L => \Pr_r[A(x,r)=1]=0 Lem: RP\subseteq NP open: BPP\subseteq NP? thm: P=NP => BPP=P Pf. A(x,r) BPP machine with error \le 2^{-n} running in time t(n) will design polytime predicate P(x,y,z) x\in L iff \exist y \forall z P(x,y,z) => result Q(x,y)=\forall z P(x,y,z) in coNP in P L(x)=\exist y Q(x,y) in NP in P random covering argument x\in L draw \bits^t draw accepting runs x\notin L draw \bits^t draw accepting runs idea: take many "random shifts" of accepting runs x\in L cover whole space x\notin L won't cover whole space formally define A_x\subseteq \bits^t by \{r: A(x,r)=L(x)\} x\in L => A_x large x\notin L => A_x small A_x\parity s = \{r\parity s: r\in A_x} shift A_x around has same size as A_x clm: x\in L exist s_1,\ldots,s_t for all r\in bits^t r\in \cup_{i} (A_x\xor s_i) x\notin L not of ^ forall s_1,\ldots,s_t exist r\in bits^t r\notin \cup_{i} (A_x\xor s_i) [[this suffices, as ^ is polytime predicate]] pf. x\in L Pr_s[\exists r\in bits^t r\notin \cup_{i} (A_x\xor s_i)] \le 2^n \Pr_s[r\notin \cup_{i} (A_x\xor s_i)] = 2^t \Pr_s[r\notin \cup_{i} (A_x\xor s)]^t \le 2^n (1/2^n)^t <1 => exists s x\notin L volume argument Pr_s[\exists r\in bits^t r\notin \cup_{i} (A_x\xor s_i)] Pr_r[r\in \cup_{i} (A_x\xor s_i) \le t * \Pr[r\in \cup_{i} (A_x\xor s] \le t * 1/2^n <1 for large n exists r outside union review if P=NP can solve quantified expressions with \exists\forall statements convert BPP to this type of statement randomized covering argument lots of accepting strings => many random copies cover the space few accepting strings => many random copies do not cover the space today derandomization enumeration: BPP\in SUBEXP nonuniformity: BPP\in P/poly nondeterminism: P=NP => BPP=P next time ps2 out tonight method of conditional expectations pairwise independence