Randomness does not help polynomial-size circuits #
Let F be a Boolean function of n + p variables, read as F (x ++ r) for an input x and a
random string r. If, for every x, at least two thirds of the random strings give the answer
g x, then g has circuits of size O(n (C(F) + n)), where C(F) is the circuit complexity of
F (Adleman's theorem in circuit form, Arora and Barak, Theorem 7.14): take
12 (n + 1) random strings that make the majority right for all 2 ^ n inputs at once
(Cslib.exists_forall_lt_card_filter_mem), and hardwire them. For one-sided error, n + 1 random
strings and their disjunction suffice. Applied at every length, bounded-error randomness over a
family of polynomial-size circuits stays in P/poly.
Main results #
Cslib.Circuits.Boolean.complexity_le_of_boundedError,Cslib.Circuits.Boolean.complexity_le_of_oneSidedError: one input length.Cslib.Circuits.Boolean.PPoly.of_boundedError,Cslib.Circuits.Boolean.PPoly.of_oneSidedError: all input lengths.Cslib.Circuits.Boolean.PPoly.exists_of_boundedError,Cslib.Circuits.Boolean.PPoly.exists_of_oneSidedError: the same with a promise, on chosen sets of inputs, as needed for problems with an arbitrary encoding.
References #
If g is a threshold of copies of F with hardwired random strings, its complexity is at
most that of the copies and of the threshold.
Adleman's theorem, for one input length, on a set of inputs. If, for every x ∈ S, at
least two thirds of the random strings r have F (x ++ r) = g x, then some function agreeing
with g on S has circuits of size O(n (C(F) + n)).
Adleman's theorem, for one input length. If, for every x, at least two thirds of the
random strings r have F (x ++ r) = g x, then g has circuits of size
O(n (C(F) + n)).
Adleman's theorem for one-sided error, for one input length, on a set of inputs. If, for
every x ∈ S with g x = true, at least half of the random strings r have F (x ++ r) = true,
and for every x ∈ S with g x = false none has, then some function agreeing with g on S has
circuits of size O(n (C(F) + n)).
Adleman's theorem for one-sided error, for one input length. If, for every x with
g x = true, at least half of the random strings r have F (x ++ r) = true, and for every x
with g x = false none has, then g has circuits of size O(n (C(F) + n)).
Adleman's theorem, on sets of inputs. If F n is a family of functions of n + p n
variables with circuits of polynomial size, and for every input x ∈ S n at least two thirds of the
random strings r have F n (x ++ r) = g n x, then some language in P/poly agrees with g on
the sets S n.
Adleman's theorem. If F n is a family of functions of n + p n variables with circuits
of polynomial size, and for every input x of every length n at least two thirds of the random
strings r have F n (x ++ r) = A.slice n x, then A ∈ P/poly.
Adleman's theorem for one-sided error, on sets of inputs.
Adleman's theorem for one-sided error. If F n is a family of functions of n + p n
variables with circuits of polynomial size, every input x ∈ A has F n (x ++ r) = true for at
least half of the random strings r, and no x ∉ A has it for any r, then A ∈ P/poly.