circuit complexity course homework 1

prove that the circuit size complexity of (i.e. of bits) is at most . (you can discard gates.)
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 .
prove that for every function we have .
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.
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.
prove for every non-degenerated boolean function we have .
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.