Deterministic computations on repeated random-tape blocks #
Split a supplied bit list into fixed-width rows and collect one Boolean vote per row. Callers
can compute the dimensions from the encoded instance length. Missing bits read as false;
extra bits are ignored, and zero-width rows are retained. No probability distribution or
complexity-class error condition is imposed here.
repeatAny and repeatMajority aggregate the same votes. Their error bounds belong to the
class-specific amplification modules. Complexity.Computability.Probabilistic.Repeat provides
the separate probabilistic-program interface for independently sampled runs.
Main definitions #
Cslib.Complexity.repeatVotes: collect the ordered votes.Cslib.Complexity.repeatAny: accept if any vote istrue.Cslib.Complexity.repeatMajority: accept if more than half of2 r(n)votes aretrue.
Main results #
Cslib.Complexity.repeatVotes_ofFn: votes on a full tape agree with finite block evaluation.Cslib.Complexity.computableInPolyTime_repeatVotes: producing votes takes polynomial time.Cslib.Complexity.computableInPolyTime_repeatAny,Cslib.Complexity.computableInPolyTime_repeatMajority: efficient aggregation.
References #
Extracted from the deterministic repetition implementations in BPP.Amplification and RP by
Samuel Schlesinger. For their use in error reduction, see
S. Arora, B. Barak, Computational Complexity: A Modern Approach, Chapter 7.
Collect votes on fixed-width rows of a supplied random tape, padding missing bits with
false and ignoring bits beyond the prescribed rows. Zero-width rows still contribute votes.
Instances For
Producing votes takes polynomial time when the verifier and the unary dimensions do. The dimensions may depend on the complete input, and output uses the raw bit-list encoding.
The strict majority of 2 r(n) runs of V, where n is the length of the encoded instance:
the random string is cut into 2 r(n) rows of p(n) bits (Cslib.BitString.listRows), V runs
on each row, and the answer is true when more than r(n) runs accept. Bits missing from a short
random string read as false.
Instances For
Majority votes of a polynomial-time decider take polynomial time.
On a random string of 2 r(n) rows of p(n) bits, the majority vote compares the number of
accepting rows with r(n).
The disjunction of q(n) runs of V, where n is the length of the encoded instance: the
random string is cut into q(n) rows of p(n) bits (Cslib.BitString.listRows), V runs on each
row, and the answer is true when some run accepts. Bits missing from a short random string read
as false.
Instances For
Repeating a polynomial-time decider takes polynomial time.
On a random string of q(n) rows of p(n) bits, the repetition accepts when some row is
accepted.