More bounds on circuit complexity #
Bounds on the complexity of single functions and of several functions computed side by side.
The coordinate projections cost nothing, and they are the only functions computed without gates,
since a circuit without gates outputs one of its inputs. Applying a unary or binary operation to
functions costs at most their complexities plus the complexity of the operation on fresh inputs:
compute the arguments, then feed them to a circuit for the operation. Computing m functions of
the same inputs at once costs at most the sum of their complexities: the circuits are placed next
to each other.
Main results #
Cslib.Circuits.Circuit.computesOn_single_iff,Cslib.Circuits.Circuit.computes_single_iff: a one-output circuit computessingle fwhen its output0agrees withf.Cslib.Circuits.complexity_single_proj,Cslib.Circuits.one_le_complexity_single: exactly the projections are computed without gates.Cslib.Circuits.complexity_single_unary_le,Cslib.Circuits.complexity_single_binary_le: applying an operation to functions costs at most their complexities plus its complexity on fresh inputs.Cslib.Circuits.ecomplexity_pi_le,Cslib.Circuits.complexity_pi_le: computing functions side by side costs at most the sum of their complexities.
References #
Single functions #
A one-output circuit computes single f on S exactly when its output 0 agrees with f
on S.
A one-output circuit computes single f exactly when its output 0 agrees with f on
every input.
The coordinate projections cost no gates.
A function that is not a coordinate projection needs a gate: circuits without gates compute projections.
Applying a unary operation to an output costs at most the complexity of the operation on one input.
Combining two outputs by a binary operation costs at most the complexity of the operation on two inputs.
Several functions side by side #
Computing m functions side by side costs at most the sum of their complexities.
Computing m functions side by side costs at most the sum of their complexities.