SLIDE 1 Typically-Correct Derandomization for Small Time and Space
William M. Hoza1 University of Texas at Austin July 18 CCC 2019
1Supported by the NSF GRFP under Grant No. DGE1610403 and by a Harrington fellowship from UT Austin
SLIDE 2
Time, space, and randomness
SLIDE 3
Derandomization
◮ Suppose L ∈ BPTISP(T, S)
SLIDE 4
Derandomization
◮ Suppose L ∈ BPTISP(T, S)
◮ T = T(n) ≥ n
SLIDE 5
Derandomization
◮ Suppose L ∈ BPTISP(T, S)
◮ T = T(n) ≥ n ◮ S = S(n) ≥ log n
SLIDE 6
Derandomization
◮ Suppose L ∈ BPTISP(T, S)
◮ T = T(n) ≥ n ◮ S = S(n) ≥ log n
◮ Theorem [Klivans, van Melkebeek ’02]:
SLIDE 7
Derandomization
◮ Suppose L ∈ BPTISP(T, S)
◮ T = T(n) ≥ n ◮ S = S(n) ≥ log n
◮ Theorem [Klivans, van Melkebeek ’02]:
◮ Assume some language in DSPACE(O(n)) has exponential circuit complexity
SLIDE 8
Derandomization
◮ Suppose L ∈ BPTISP(T, S)
◮ T = T(n) ≥ n ◮ S = S(n) ≥ log n
◮ Theorem [Klivans, van Melkebeek ’02]:
◮ Assume some language in DSPACE(O(n)) has exponential circuit complexity ◮ Then L ∈ DTISP(poly(T), S)
SLIDE 9
Derandomization
◮ Suppose L ∈ BPTISP(T, S)
◮ T = T(n) ≥ n ◮ S = S(n) ≥ log n
◮ Theorem [Klivans, van Melkebeek ’02]:
◮ Assume some language in DSPACE(O(n)) has exponential circuit complexity ◮ Then L ∈ DTISP(poly(T), S)
◮ Theorem [Nisan, Zuckerman ’96]:
SLIDE 10
Derandomization
◮ Suppose L ∈ BPTISP(T, S)
◮ T = T(n) ≥ n ◮ S = S(n) ≥ log n
◮ Theorem [Klivans, van Melkebeek ’02]:
◮ Assume some language in DSPACE(O(n)) has exponential circuit complexity ◮ Then L ∈ DTISP(poly(T), S)
◮ Theorem [Nisan, Zuckerman ’96]:
◮ Suppose S ≥ T Ω(1)
SLIDE 11
Derandomization
◮ Suppose L ∈ BPTISP(T, S)
◮ T = T(n) ≥ n ◮ S = S(n) ≥ log n
◮ Theorem [Klivans, van Melkebeek ’02]:
◮ Assume some language in DSPACE(O(n)) has exponential circuit complexity ◮ Then L ∈ DTISP(poly(T), S)
◮ Theorem [Nisan, Zuckerman ’96]:
◮ Suppose S ≥ T Ω(1) ◮ Then L ∈ DSPACE(S) (runtime 2Θ(S))
SLIDE 12
Main result
◮ Suppose L ∈ BPTISP(T, S)
◮ T = T(n) ≥ n ◮ S = S(n) ≥ log n
SLIDE 13
Main result
◮ Suppose L ∈ BPTISP(T, S)
◮ T = T(n) ≥ n ◮ S = S(n) ≥ log n
◮ Theorem:
SLIDE 14
Main result
◮ Suppose L ∈ BPTISP(T, S)
◮ T = T(n) ≥ n ◮ S = S(n) ≥ log n
◮ Theorem:
◮ Suppose T ≤ n · poly(S)
◮ Think T = O(n), S = O(log n)
SLIDE 15
Main result
◮ Suppose L ∈ BPTISP(T, S)
◮ T = T(n) ≥ n ◮ S = S(n) ≥ log n
◮ Theorem:
◮ Suppose T ≤ n · poly(S) ◮ Then there is a DSPACE(S) algorithm for L...
◮ Think T = O(n), S = O(log n)
SLIDE 16
Main result
◮ Suppose L ∈ BPTISP(T, S)
◮ T = T(n) ≥ n ◮ S = S(n) ≥ log n
◮ Theorem:
◮ Suppose T ≤ n · poly(S) ◮ Then there is a DSPACE(S) algorithm for L... ◮ ...that succeeds on the vast majority of inputs of each length.
◮ Think T = O(n), S = O(log n)
SLIDE 17
Main result
◮ Suppose L ∈ BPTISP(T, S)
◮ T = T(n) ≥ n ◮ S = S(n) ≥ log n
◮ Theorem:
◮ Suppose T ≤ n · poly(S) ◮ Then there is a DSPACE(S) algorithm for L... ◮ ...that succeeds on the vast majority of inputs of each length.
◮ Think T = O(n), S = O(log n)
◮ [Saks, Zhou ’95]: Space Θ(log1.5 n)
SLIDE 18
Typically-correct derandomizations
◮ Is 110100001101001111001010110111011010100011100 ∈ L?
SLIDE 19
Typically-correct derandomizations
◮ Is 110100001101001111001010110111011010100011100 ∈ L?
◮ If only we had some randomness...
SLIDE 20
Typically-correct derandomizations
◮ Is 110100001101001111001010110111011010100011100 ∈ L?
◮ If only we had some randomness...
◮ Let A be a randomized algorithm
SLIDE 21
Typically-correct derandomizations
◮ Is 110100001101001111001010110111011010100011100 ∈ L?
◮ If only we had some randomness...
◮ Let A be a randomized algorithm ◮ Na¨ ıve derandomization: Run A(x, x)
SLIDE 22
Typically-correct derandomizations
◮ Is 110100001101001111001010110111011010100011100 ∈ L?
◮ If only we had some randomness...
◮ Let A be a randomized algorithm ◮ Na¨ ıve derandomization: Run A(x, x) ◮ Might fail on all x because of correlations between input, coins
SLIDE 23 Prior techniques for dealing with correlations
- 1. Find algorithm A where most random strings are good for all
inputs simultaneously
SLIDE 24 Prior techniques for dealing with correlations
- 1. Find algorithm A where most random strings are good for all
inputs simultaneously
◮ [Goldreich, Wigderson ’02]: Undirected s-t connectivity
SLIDE 25 Prior techniques for dealing with correlations
- 1. Find algorithm A where most random strings are good for all
inputs simultaneously
◮ [Goldreich, Wigderson ’02]: Undirected s-t connectivity ◮ [Arvind, Tor´ an ’04]: Solvable group isomorphism
SLIDE 26 Prior techniques for dealing with correlations
- 1. Find algorithm A where most random strings are good for all
inputs simultaneously
◮ [Goldreich, Wigderson ’02]: Undirected s-t connectivity ◮ [Arvind, Tor´ an ’04]: Solvable group isomorphism
- 2. Extract randomness from input using specialized extractor
SLIDE 27 Prior techniques for dealing with correlations
- 1. Find algorithm A where most random strings are good for all
inputs simultaneously
◮ [Goldreich, Wigderson ’02]: Undirected s-t connectivity ◮ [Arvind, Tor´ an ’04]: Solvable group isomorphism
- 2. Extract randomness from input using specialized extractor
◮ [Zimand ’08]: Sublinear time algorithms
SLIDE 28 Prior techniques for dealing with correlations
- 1. Find algorithm A where most random strings are good for all
inputs simultaneously
◮ [Goldreich, Wigderson ’02]: Undirected s-t connectivity ◮ [Arvind, Tor´ an ’04]: Solvable group isomorphism
- 2. Extract randomness from input using specialized extractor
◮ [Zimand ’08]: Sublinear time algorithms ◮ [Shaltiel ’11]: Two-party communication protocols, streaming algorithms, BPAC0
SLIDE 29 Prior techniques for dealing with correlations
- 1. Find algorithm A where most random strings are good for all
inputs simultaneously
◮ [Goldreich, Wigderson ’02]: Undirected s-t connectivity ◮ [Arvind, Tor´ an ’04]: Solvable group isomorphism
- 2. Extract randomness from input using specialized extractor
◮ [Zimand ’08]: Sublinear time algorithms ◮ [Shaltiel ’11]: Two-party communication protocols, streaming algorithms, BPAC0
- 3. Plug input into seed-extending pseudorandom generator
SLIDE 30 Prior techniques for dealing with correlations
- 1. Find algorithm A where most random strings are good for all
inputs simultaneously
◮ [Goldreich, Wigderson ’02]: Undirected s-t connectivity ◮ [Arvind, Tor´ an ’04]: Solvable group isomorphism
- 2. Extract randomness from input using specialized extractor
◮ [Zimand ’08]: Sublinear time algorithms ◮ [Shaltiel ’11]: Two-party communication protocols, streaming algorithms, BPAC0
- 3. Plug input into seed-extending pseudorandom generator
◮ [Kinne, van Melkebeek, Shaltiel ’12]: Multiparty communication protocols, BPAC0 with symmetric gates
SLIDE 31
Our technique: “Out of sight, out of mind”
110100001101001111001010110111011010100011100
SLIDE 32
Our technique: “Out of sight, out of mind”
◮ Use part of the input as a source of randomness while A is processing the rest of the input A 110100001101001111001010110111011010100011100
T H H T H T T H H T H T H
SLIDE 33
Our technique: “Out of sight, out of mind”
◮ Use part of the input as a source of randomness while A is processing the rest of the input A 110100001101001111001010110111011010100011100
T H H T H T T H H T H T H
◮ (Additional ideas needed to make this work...)
SLIDE 34
Restriction of algorithm
110100001101001111001010110111011010100011100 ◮ Let I ⊆ [n]
SLIDE 35
Restriction of algorithm
110100001101001111001010110111011010100011100 ◮ Let I ⊆ [n] ◮ Algorithm A|[n]\I:
SLIDE 36 Restriction of algorithm
110100001101001111001010110111011010100011100 ◮ Let I ⊆ [n] ◮ Algorithm A|[n]\I:
SLIDE 37 Restriction of algorithm
110100001101001111001010110111011010100011100 ◮ Let I ⊆ [n] ◮ Algorithm A|[n]\I:
- 1. Run A like normal...
- 2. ...except, if A is about to query xi for some i ∈ I, halt
immediately.
SLIDE 38 Restriction of algorithm
110100001101001111001010110111011010100011100 ◮ Let I ⊆ [n] ◮ Algorithm A|[n]\I:
- 1. Run A like normal...
- 2. ...except, if A is about to query xi for some i ∈ I, halt
immediately.
SLIDE 39
Main Lemma: Reducing randomness to polylog n
◮ Main Lemma:
SLIDE 40
Main Lemma: Reducing randomness to polylog n
◮ Main Lemma:
◮ Suppose L ∈ BPTISP( O(n), log n)
SLIDE 41
Main Lemma: Reducing randomness to polylog n
◮ Main Lemma:
◮ Suppose L ∈ BPTISP( O(n), log n) ◮ There is a BPL algorithm for L that uses just polylog n random bits (one-way access)...
SLIDE 42
Main Lemma: Reducing randomness to polylog n
◮ Main Lemma:
◮ Suppose L ∈ BPTISP( O(n), log n) ◮ There is a BPL algorithm for L that uses just polylog n random bits (one-way access)... ◮ ...that succeeds on the vast majority of inputs of each length.
SLIDE 43
Tool 1: Nisan’s Pseudorandom Generator
NisGen T = O(n) bits s = Θ(log2 n) bits ◮ For any O(log n)-space A, input x, A(x, NisGen(Us)) ≈ A(x, UT)
SLIDE 44
Tool 1: Nisan’s Pseudorandom Generator
NisGen T = O(n) bits s = Θ(log2 n) bits ◮ For any O(log n)-space A, input x, A(x, NisGen(Us)) ≈ A(x, UT) ◮ Runs in space O(log n)...
SLIDE 45
Tool 1: Nisan’s Pseudorandom Generator
NisGen T = O(n) bits s = Θ(log2 n) bits ◮ For any O(log n)-space A, input x, A(x, NisGen(Us)) ≈ A(x, UT) ◮ Runs in space O(log n)... ◮ ...given two-way access to seed
SLIDE 46
Tool 2: Shaltiel-Umans Averaging Sampler
SUSamp O(log100 n) bits s = Θ(log2 n) bits d = O(log n) bits ◮ For any F : {0, 1}s → V , for most x, F(SUSamp(x, Ud)) ≈ F(Us)
SLIDE 47
Tool 2: Shaltiel-Umans Averaging Sampler
SUSamp O(log100 n) bits s = Θ(log2 n) bits d = O(log n) bits ◮ For any F : {0, 1}s → V , for most x, F(SUSamp(x, Ud)) ≈ F(Us) ◮ # bad x: at most 2O(log6 n) · |V |
SLIDE 48
Tool 2: Shaltiel-Umans Averaging Sampler
SUSamp O(log100 n) bits s = Θ(log2 n) bits d = O(log n) bits ◮ For any F : {0, 1}s → V , for most x, F(SUSamp(x, Ud)) ≈ F(Us) ◮ # bad x: at most 2O(log6 n) · |V | ◮ Runs in space O(log n) given two-way access to x
SLIDE 49
Algorithm of Main Lemma
110100001101001111001010110111011010100011100
SLIDE 50 Algorithm of Main Lemma
110100001101001111001010110111011010100011100
- 1. Let v be the initial configuration of A
SLIDE 51 Algorithm of Main Lemma
110100001101001111001010110111011010100011100
- 1. Let v be the initial configuration of A
- 2. Loop for polylog(n) iterations:
SLIDE 52 Algorithm of Main Lemma
log100 n 110100001101001111001010110111011010100011100
- 1. Let v be the initial configuration of A
- 2. Loop for polylog(n) iterations:
2.1 Pick a random contiguous block I ⊆ [n]
SLIDE 53 Algorithm of Main Lemma
log100 n 110100001101001111001010110111011010100011100
- 1. Let v be the initial configuration of A
- 2. Loop for polylog(n) iterations:
2.1 Pick a random contiguous block I ⊆ [n] 2.2 Pick a random y ∈ {0, 1}O(log n)
SLIDE 54 Algorithm of Main Lemma
log100 n SUSamp NisGen 110100001101001111001010110111011010100011100
- 1. Let v be the initial configuration of A
- 2. Loop for polylog(n) iterations:
2.1 Pick a random contiguous block I ⊆ [n] 2.2 Pick a random y ∈ {0, 1}O(log n) 2.3 Let z = NisGen(SUSamp(x|I, y))
SLIDE 55 Algorithm of Main Lemma
log100 n SUSamp NisGen 110100001101001111001010110111011010100011100
- 1. Let v be the initial configuration of A
- 2. Loop for polylog(n) iterations:
2.1 Pick a random contiguous block I ⊆ [n] 2.2 Pick a random y ∈ {0, 1}O(log n) 2.3 Let z = NisGen(SUSamp(x|I, y)) 2.4 Run A|[n]\I(x, z) from configuration v until it halts
SLIDE 56 Algorithm of Main Lemma
log100 n SUSamp NisGen 110100001101001111001010110111011010100011100
- 1. Let v be the initial configuration of A
- 2. Loop for polylog(n) iterations:
2.1 Pick a random contiguous block I ⊆ [n] 2.2 Pick a random y ∈ {0, 1}O(log n) 2.3 Let z = NisGen(SUSamp(x|I, y)) 2.4 Run A|[n]\I(x, z) from configuration v until it halts 2.5 Update v to be the final configuration
SLIDE 57 Algorithm of Main Lemma
log100 n SUSamp NisGen 110100001101001111001010110111011010100011100
- 1. Let v be the initial configuration of A
- 2. Loop for polylog(n) iterations:
2.1 Pick a random contiguous block I ⊆ [n] 2.2 Pick a random y ∈ {0, 1}O(log n) 2.3 Let z = NisGen(SUSamp(x|I, y)) 2.4 Run A|[n]\I(x, z) from configuration v until it halts 2.5 Update v to be the final configuration
- 3. Accept if v is an accepting configuration, else reject
SLIDE 58 Efficiency analysis
- 1. Loop for polylog(n) iterations:
1.1 Pick a random contiguous block I ⊆ [n] 1.2 Pick a random y ∈ {0, 1}O(log n) 1.3 Let z = NisGen(SUSamp(x|I, y)) 1.4 Run A|[n]\I(x, z) from configuration v until it halts 1.5 Update v to be the final configuration
SLIDE 59 Efficiency analysis
- 1. Loop for polylog(n) iterations:
1.1 Pick a random contiguous block I ⊆ [n] 1.2 Pick a random y ∈ {0, 1}O(log n) 1.3 Let z = NisGen(SUSamp(x|I, y)) 1.4 Run A|[n]\I(x, z) from configuration v until it halts 1.5 Update v to be the final configuration
◮ Runs in O(log n) space!
SLIDE 60 Efficiency analysis
- 1. Loop for polylog(n) iterations:
1.1 Pick a random contiguous block I ⊆ [n] 1.2 Pick a random y ∈ {0, 1}O(log n) 1.3 Let z = NisGen(SUSamp(x|I, y)) 1.4 Run A|[n]\I(x, z) from configuration v until it halts 1.5 Update v to be the final configuration
◮ Runs in O(log n) space!
◮ O(log n) bits to store I, y, v
SLIDE 61 Efficiency analysis
- 1. Loop for polylog(n) iterations:
1.1 Pick a random contiguous block I ⊆ [n] 1.2 Pick a random y ∈ {0, 1}O(log n) 1.3 Let z = NisGen(SUSamp(x|I, y)) 1.4 Run A|[n]\I(x, z) from configuration v until it halts 1.5 Update v to be the final configuration
◮ Runs in O(log n) space!
◮ O(log n) bits to store I, y, v ◮ O(log n) bits to run SUSamp, NisGen, A|[n]\I
SLIDE 62 Efficiency analysis
- 1. Loop for polylog(n) iterations:
1.1 Pick a random contiguous block I ⊆ [n] 1.2 Pick a random y ∈ {0, 1}O(log n) 1.3 Let z = NisGen(SUSamp(x|I, y)) 1.4 Run A|[n]\I(x, z) from configuration v until it halts 1.5 Update v to be the final configuration
◮ Runs in O(log n) space!
◮ O(log n) bits to store I, y, v ◮ O(log n) bits to run SUSamp, NisGen, A|[n]\I
◮ We can give SUSamp, NisGen two-way access to their inputs, because we have two-way access to x
SLIDE 63 Efficiency analysis
- 1. Loop for polylog(n) iterations:
1.1 Pick a random contiguous block I ⊆ [n] 1.2 Pick a random y ∈ {0, 1}O(log n) 1.3 Let z = NisGen(SUSamp(x|I, y)) 1.4 Run A|[n]\I(x, z) from configuration v until it halts 1.5 Update v to be the final configuration
◮ Runs in O(log n) space!
◮ O(log n) bits to store I, y, v ◮ O(log n) bits to run SUSamp, NisGen, A|[n]\I
◮ We can give SUSamp, NisGen two-way access to their inputs, because we have two-way access to x ◮ Randomness polylog n (one-way access!)
SLIDE 64 Correctness proof sketch
Our algorithm
- 1. Pick random y ∈ {0, 1}O(log n)
- 2. Let z = NisGen(SUSamp(x|I, y))
- 3. Run A|[n]\I(x, z) from v
- 4. Update v := final configuration
SLIDE 65 Correctness proof sketch
Our algorithm
- 1. Pick random y ∈ {0, 1}O(log n)
- 2. Let z = NisGen(SUSamp(x|I, y))
- 3. Run A|[n]\I(x, z) from v
- 4. Update v := final configuration
First hybrid distribution
SLIDE 66 Correctness proof sketch
Our algorithm
- 1. Pick random y ∈ {0, 1}O(log n)
- 2. Let z = NisGen(SUSamp(x|I, y))
- 3. Run A|[n]\I(x, z) from v
- 4. Update v := final configuration
First hybrid distribution
- 1. Pick random y′ ∈ {0, 1}O(log2 n)
SLIDE 67 Correctness proof sketch
Our algorithm
- 1. Pick random y ∈ {0, 1}O(log n)
- 2. Let z = NisGen(SUSamp(x|I, y))
- 3. Run A|[n]\I(x, z) from v
- 4. Update v := final configuration
First hybrid distribution
- 1. Pick random y′ ∈ {0, 1}O(log2 n)
- 2. Let z = NisGen(y′)
SLIDE 68 Correctness proof sketch
Our algorithm
- 1. Pick random y ∈ {0, 1}O(log n)
- 2. Let z = NisGen(SUSamp(x|I, y))
- 3. Run A|[n]\I(x, z) from v
- 4. Update v := final configuration
First hybrid distribution
- 1. Pick random y′ ∈ {0, 1}O(log2 n)
- 2. Let z = NisGen(y′)
- 3. Run A|[n]\I(x, z) from v
- 4. Update v := final configuration
SLIDE 69 Correctness proof sketch
Our algorithm
- 1. Pick random y ∈ {0, 1}O(log n)
- 2. Let z = NisGen(SUSamp(x|I, y))
- 3. Run A|[n]\I(x, z) from v
- 4. Update v := final configuration
First hybrid distribution
- 1. Pick random y′ ∈ {0, 1}O(log2 n)
- 2. Let z = NisGen(y′)
- 3. Run A|[n]\I(x, z) from v
- 4. Update v := final configuration
◮ Let F(y′) = final configuration when running A|[n]\I(x, NisGen(y′)) from v
SLIDE 70 Correctness proof sketch
Our algorithm
- 1. Pick random y ∈ {0, 1}O(log n)
- 2. Let z = NisGen(SUSamp(x|I, y))
- 3. Run A|[n]\I(x, z) from v
- 4. Update v := final configuration
First hybrid distribution
- 1. Pick random y′ ∈ {0, 1}O(log2 n)
- 2. Let z = NisGen(y′)
- 3. Run A|[n]\I(x, z) from v
- 4. Update v := final configuration
◮ Let F(y′) = final configuration when running A|[n]\I(x, NisGen(y′)) from v ◮ # bad x bounded by
SLIDE 71 Correctness proof sketch
Our algorithm
- 1. Pick random y ∈ {0, 1}O(log n)
- 2. Let z = NisGen(SUSamp(x|I, y))
- 3. Run A|[n]\I(x, z) from v
- 4. Update v := final configuration
First hybrid distribution
- 1. Pick random y′ ∈ {0, 1}O(log2 n)
- 2. Let z = NisGen(y′)
- 3. Run A|[n]\I(x, z) from v
- 4. Update v := final configuration
◮ Let F(y′) = final configuration when running A|[n]\I(x, NisGen(y′)) from v ◮ # bad x bounded by (2O(log6 n) · poly(n))
·
SLIDE 72 Correctness proof sketch
Our algorithm
- 1. Pick random y ∈ {0, 1}O(log n)
- 2. Let z = NisGen(SUSamp(x|I, y))
- 3. Run A|[n]\I(x, z) from v
- 4. Update v := final configuration
First hybrid distribution
- 1. Pick random y′ ∈ {0, 1}O(log2 n)
- 2. Let z = NisGen(y′)
- 3. Run A|[n]\I(x, z) from v
- 4. Update v := final configuration
◮ Let F(y′) = final configuration when running A|[n]\I(x, NisGen(y′)) from v ◮ # bad x bounded by (2O(log6 n) · poly(n))
· (2n−log100 n)
·
SLIDE 73 Correctness proof sketch
Our algorithm
- 1. Pick random y ∈ {0, 1}O(log n)
- 2. Let z = NisGen(SUSamp(x|I, y))
- 3. Run A|[n]\I(x, z) from v
- 4. Update v := final configuration
First hybrid distribution
- 1. Pick random y′ ∈ {0, 1}O(log2 n)
- 2. Let z = NisGen(y′)
- 3. Run A|[n]\I(x, z) from v
- 4. Update v := final configuration
◮ Let F(y′) = final configuration when running A|[n]\I(x, NisGen(y′)) from v ◮ # bad x bounded by (2O(log6 n) · poly(n))
· (2n−log100 n)
· (n)
·
SLIDE 74 Correctness proof sketch
Our algorithm
- 1. Pick random y ∈ {0, 1}O(log n)
- 2. Let z = NisGen(SUSamp(x|I, y))
- 3. Run A|[n]\I(x, z) from v
- 4. Update v := final configuration
First hybrid distribution
- 1. Pick random y′ ∈ {0, 1}O(log2 n)
- 2. Let z = NisGen(y′)
- 3. Run A|[n]\I(x, z) from v
- 4. Update v := final configuration
◮ Let F(y′) = final configuration when running A|[n]\I(x, NisGen(y′)) from v ◮ # bad x bounded by (2O(log6 n) · poly(n))
· (2n−log100 n)
· (n)
· (poly(n))
SLIDE 75 Correctness proof sketch
Our algorithm
- 1. Pick random y ∈ {0, 1}O(log n)
- 2. Let z = NisGen(SUSamp(x|I, y))
- 3. Run A|[n]\I(x, z) from v
- 4. Update v := final configuration
First hybrid distribution
- 1. Pick random y′ ∈ {0, 1}O(log2 n)
- 2. Let z = NisGen(y′)
- 3. Run A|[n]\I(x, z) from v
- 4. Update v := final configuration
◮ Let F(y′) = final configuration when running A|[n]\I(x, NisGen(y′)) from v ◮ # bad x bounded by (2O(log6 n) · poly(n))
· (2n−log100 n)
· (n)
· (poly(n))
≪ 2n
SLIDE 76 Correctness proof sketch (2)
First hybrid distribution
- 1. Pick random y′ ∈ {0, 1}O(log2 n)
- 2. Let z = NisGen(y′)
- 3. Run A|[n]\I(x, z) from v
- 4. Update v := final configuration
SLIDE 77 Correctness proof sketch (2)
First hybrid distribution
- 1. Pick random y′ ∈ {0, 1}O(log2 n)
- 2. Let z = NisGen(y′)
- 3. Run A|[n]\I(x, z) from v
- 4. Update v := final configuration
Second hybrid distribution
SLIDE 78 Correctness proof sketch (2)
First hybrid distribution
- 1. Pick random y′ ∈ {0, 1}O(log2 n)
- 2. Let z = NisGen(y′)
- 3. Run A|[n]\I(x, z) from v
- 4. Update v := final configuration
Second hybrid distribution
- 1. Pick random z ∈ {0, 1}T
SLIDE 79 Correctness proof sketch (2)
First hybrid distribution
- 1. Pick random y′ ∈ {0, 1}O(log2 n)
- 2. Let z = NisGen(y′)
- 3. Run A|[n]\I(x, z) from v
- 4. Update v := final configuration
Second hybrid distribution
- 1. Pick random z ∈ {0, 1}T
- 2. Run A|[n]\I(x, z) from v
- 3. Update v := final configuration
SLIDE 80 Correctness proof sketch (3)
Second hybrid distribution
- 1. Repeat polylog(n) times:
1.1 Pick random I ⊆ [n] 1.2 Pick random z ∈ {0, 1}T 1.3 Run A|[n]\I(x, z) from v 1.4 Update v := final conf.
SLIDE 81 Correctness proof sketch (3)
Second hybrid distribution
- 1. Repeat polylog(n) times:
1.1 Pick random I ⊆ [n] 1.2 Pick random z ∈ {0, 1}T 1.3 Run A|[n]\I(x, z) from v 1.4 Update v := final conf.
Target distribution
SLIDE 82 Correctness proof sketch (3)
Second hybrid distribution
- 1. Repeat polylog(n) times:
1.1 Pick random I ⊆ [n] 1.2 Pick random z ∈ {0, 1}T 1.3 Run A|[n]\I(x, z) from v 1.4 Update v := final conf.
Target distribution
- 1. Pick random z ∈ {0, 1}T
SLIDE 83 Correctness proof sketch (3)
Second hybrid distribution
- 1. Repeat polylog(n) times:
1.1 Pick random I ⊆ [n] 1.2 Pick random z ∈ {0, 1}T 1.3 Run A|[n]\I(x, z) from v 1.4 Update v := final conf.
Target distribution
- 1. Pick random z ∈ {0, 1}T
- 2. Accept iff A(x, z) accepts
SLIDE 84 Correctness proof sketch (3)
Second hybrid distribution
- 1. Repeat polylog(n) times:
1.1 Pick random I ⊆ [n] 1.2 Pick random z ∈ {0, 1}T 1.3 Run A|[n]\I(x, z) from v 1.4 Update v := final conf.
Target distribution
- 1. Pick random z ∈ {0, 1}T
- 2. Accept iff A(x, z) accepts
◮ In each phase, simulate Ω(n/ log100 n) steps of A w.h.p.
SLIDE 85 Correctness proof sketch (3)
Second hybrid distribution
- 1. Repeat polylog(n) times:
1.1 Pick random I ⊆ [n] 1.2 Pick random z ∈ {0, 1}T 1.3 Run A|[n]\I(x, z) from v 1.4 Update v := final conf.
Target distribution
- 1. Pick random z ∈ {0, 1}T
- 2. Accept iff A(x, z) accepts
◮ In each phase, simulate Ω(n/ log100 n) steps of A w.h.p. ◮ After polylog(n) phases, reach halting configuration w.h.p.
SLIDE 86
Tool 3: The Nisan-Zuckerman PRG
NZGen logc n bits d = O(log n) bits ◮ c = arbitrarily large constant
SLIDE 87
Tool 3: The Nisan-Zuckerman PRG
NZGen logc n bits d = O(log n) bits ◮ c = arbitrarily large constant ◮ For any O(log n)-space A, input x, A(x, NZGen(Ud)) ≈ A(x, Ulogc n)
SLIDE 88
Tool 3: The Nisan-Zuckerman PRG
NZGen logc n bits d = O(log n) bits ◮ c = arbitrarily large constant ◮ For any O(log n)-space A, input x, A(x, NZGen(Ud)) ≈ A(x, Ulogc n) ◮ Runs in space O(log n)
SLIDE 89
Eliminating randomness
◮ Suppose L ∈ BPTISP( O(n), log n)
SLIDE 90
Eliminating randomness
◮ Suppose L ∈ BPTISP( O(n), log n) ◮ Corollary:
SLIDE 91
Eliminating randomness
◮ Suppose L ∈ BPTISP( O(n), log n) ◮ Corollary:
◮ There is a BPL algorithm for L that uses just O(log n) random bits...
SLIDE 92
Eliminating randomness
◮ Suppose L ∈ BPTISP( O(n), log n) ◮ Corollary:
◮ There is a BPL algorithm for L that uses just O(log n) random bits... ◮ ...that succeeds on the vast majority of inputs of each length.
SLIDE 93
Eliminating randomness
◮ Suppose L ∈ BPTISP( O(n), log n) ◮ Corollary:
◮ There is a BPL algorithm for L that uses just O(log n) random bits... ◮ ...that succeeds on the vast majority of inputs of each length.
◮ Corollary:
SLIDE 94
Eliminating randomness
◮ Suppose L ∈ BPTISP( O(n), log n) ◮ Corollary:
◮ There is a BPL algorithm for L that uses just O(log n) random bits... ◮ ...that succeeds on the vast majority of inputs of each length.
◮ Corollary:
◮ There is a DSPACE(log n) algorithm for L...
SLIDE 95
Eliminating randomness
◮ Suppose L ∈ BPTISP( O(n), log n) ◮ Corollary:
◮ There is a BPL algorithm for L that uses just O(log n) random bits... ◮ ...that succeeds on the vast majority of inputs of each length.
◮ Corollary:
◮ There is a DSPACE(log n) algorithm for L... ◮ ...that succeeds on the vast majority of inputs of each length.
SLIDE 96
Main open problem
◮ Typically-correct derandomization of BPL?
SLIDE 97
Main open problem
◮ Typically-correct derandomization of BPL? ◮ Thanks! Questions?