circuit complexity course homework 1
a lower bound of
is given by parity_function.html, an upper bound (of the same size) can be shown by demonstrating a circuit that computes parity in the following manner:
broken link: xopp-figure:/home/mahmooz/brain/pen/2024-11-17-Note-09-35.xopp
in broken link: blk:fig-circ-comp-prb-1 we have for each adjacent pair of input nodes 5 extra intermediate nodes, we have a total of
adjacent pairs of input nodes, and so the total number of nodes in the graph is
. if we ignore
gates, this reduces to
.
broken link: xopp-figure:/home/mahmooz/brain/pen/2024-11-17-Note-09-35.xopp
in broken link: blk:fig-circ-comp-prb-1 we have for each adjacent pair of input nodes 5 extra intermediate nodes, we have a total of
prove that for every function
we have
.
- show that a monotone circuit computes a monotone function.
- show that every monotone function
can be computed by a monotone circuit of size
(
is possible too).
the proof for the first statement is almost trivial, we list each possible combination of inputs (each possible input pair) and check that for each two combinations
, if
, then for each function of
, which are the basis functions for the monotone circuit model, we have:
the possible combinations are
, in total we would have to make 16 comparisons, a few examples are:
the proof for the second statement seems to be a little more involved: for some boolean function
, let
be the smallest number such that
, for each number
such that
, we construct a circuit with all AND gates whose inputs are from the input gates that correspond to the 1's in the binary representation of
, said circuit will return 1 if the input matches
or is some number greater than
whose 1's are exactly those of
's with some extra 1's which means it will be a greater number (take any binary number, flip any bit from 0 to 1, it will become greater), since we do this for all numbers greater than
, we can "combine" all of those circuits using OR gates, so that the input to the main circuit is directed to every such sub-circuit we construct, so that the main circuit will only output 1 if its input is greater than
. this is exactly what we want because every monotone boolean function has to "flip" its outputs from 0 to 1 at some number
and wouldnt return to outputting 0 again on higher numbers because otherwise it wouldnt be monotone. since we have shown a proper construction of a monotone circuit for each possible monotone function, we know that every monotone function can be computed by some monotone circuit. for each sub-circuit that we construct for some
, we use at most
intermediary AND gates, and since we have
possible candidates for
, we need at most
such sub-circuits at the first intermediary layer, hence the first intermediary layer has
vertices, the next layers will contribute an additional size that is
, giving us a total complexity of
.
notice that this is true for all functions except those that satisfy
or
, because there is no way to construct a function from
that negates the input.
notice that this is true for all functions except those that satisfy
prove that for every
, there exists some monotone function
whose circuit complexity is
.
see boolean_circuit.html.
this is the same as the argument in boolean_circuit.html with
being the number of possible monotone functions. this number is given by approximation of dedekind numbers.
this is the same as the argument in boolean_circuit.html with
i think informally we can argue that since for a degenerated boolean function, the output should depend on all inputs, we must have atleast
at each
'th layer in the circuit, and those add up to
(
).
let
be the number of input gates, consider the geometric progression
where
, i.e.
, its sum (by geometric_progression.html) is
we have
gates in the entire circuit, if we remove the
input gates we get
intermediary gates.
let