Decision trees from certificates #
A certificate for one value of a function and a certificate for another value disagree at some
variable (IsCertificate.exists_mem_inter_ne). So querying the variables of a smallest certificate
for the value 1 either confirms the value 1, or makes every certificate for the value 0 of
the function restricted by the answers shorter. Repeating this computes a Boolean function with at
most C₀(f) C₁(f) queries, where C_b(f) is the largest certificate complexity at an input of
value b (complexity_le_certificateComplexityFor_mul) [BI87], [Tar89],
Jukna, Section 14.2. In particular, decision tree complexity is at most the square of
certificate complexity.
Main results #
Cslib.DecisionTree.complexity_le_card_add: querying a set of variables and continuing with trees for the restricted functions.Cslib.DecisionTree.complexity_le_certificateComplexityFor_mul:D(f) ≤ C₀(f) C₁(f).Cslib.DecisionTree.complexity_le_certificateComplexity_sq:D(f) ≤ C(f) ^ 2.
References #
A certificate for one value and a certificate for another value disagree at a variable that both contain.
Fixing the variables of S to the values a turns a certificate T at the filled input into
the certificate T \ S of the restricted function.
Querying the variables of S and continuing with a tree for the function restricted by the
answers computes f with #S more queries.
Certificates give decision trees. A Boolean function is computed by a decision tree of
depth at most C₀(f) C₁(f).
Decision tree complexity is at most the square of certificate complexity.