Leaves, rank, decision lists, and energy of decision trees #
The Boolean answers along a root-to-leaf path identify the reached leaf, even when different
leaves have the same label. The structural leaf count includes unreachable leaves and exceeds the
internal node count by one. A tree of depth d has at most 2 ^ d leaves; refined by
Ehrenfeucht–Haussler rank r or by right-branch energy e, it has at most
∑ j ∈ Finset.range (r + 1), d.choose j or ∑ j ∈ Finset.range (e + 1), d.choose j leaves.
Decision lists have rank at most 1, hence at most d + 1 leaves and d internal nodes.
Main definitions #
Cslib.DecisionTree.leafCount: the number of structural leaves.Cslib.DecisionTree.nodeCount: the number of internal query nodes.Cslib.DecisionTree.path: the answers along the path taken by an input.Cslib.DecisionTree.rank: the Ehrenfeucht–Haussler rank of a binary decision tree.Cslib.DecisionTree.IsDecisionList: trees in which every internal node has a leaf child.Cslib.DecisionTree.energy: the maximum number oftruebranches on a root-to-leaf path.
Main results #
Cslib.DecisionTree.eval_eq_of_path_eq: a common path gives a common output.Cslib.DecisionTree.leafCount_eq_nodeCount_add_one: a binary tree has one more leaf than internal nodes.Cslib.DecisionTree.leafCount_le_two_pow_depth: a tree of depthdhas at most2 ^ dleaves.Cslib.DecisionTree.leafCount_le_sum_choose_rank: a tree of depthdand rankrhas at most∑ j ≤ r, d.choose jleaves.Cslib.DecisionTree.IsDecisionList.rank_le_one: every decision list has rank at most1.Cslib.DecisionTree.leafCount_le_sum_choose_energy: a tree of depthdand energyehas at most∑ j ≤ e, d.choose jleaves.
References #
- [Threshold Circuits as Decision Trees and Finite-State Programs, Section 2.2] [26]
The number of structural leaves, including any unreachable leaves.
Instances For
The answers along the path to the reached leaf.
Instances For
Every decision tree has at least one structural leaf.
A decision tree of depth d has at most 2 ^ d structural leaves.
Relabelling queries preserves the structural leaf count, including unreachable leaves.
Relabelling queries preserves the path taken by an input.
The number of internal query nodes, including any unreachable subtrees.
Instances For
The structural leaf count exceeds the internal node count by one.
Relabelling queries preserves the internal node count.
The Ehrenfeucht–Haussler rank of a binary decision tree: leaves have rank zero, a node
with unequal child ranks has their maximum, and equal child ranks r give rank r + 1.
Instances For
Relabelling queries preserves the rank.
The rank of a decision tree is at most its depth.
A decision tree of rank at most r and depth at most d has at most
∑ j ∈ Finset.range (r + 1), d.choose j structural leaves.
A decision tree of depth d and rank r has at most
∑ j ∈ Finset.range (r + 1), d.choose j structural leaves.
A decision tree of rank at most 1 has at most depth internal nodes.
A binary decision tree is a decision list when every internal node has at least one leaf
child (leafCount = 1).
Instances For
A tree with a single structural leaf has rank zero.
Every decision list has Ehrenfeucht–Haussler rank at most 1.
A decision list has at most depth + 1 structural leaves.
A decision list has at most depth internal nodes.
Relabelling queries preserves decision-list structure.
The energy of a binary decision tree: the maximum number of true (right) branches on a
root-to-leaf path.
Instances For
Relabelling queries preserves the energy.
The energy of a decision tree is at most its depth.
A decision tree of energy at most e and depth at most d has at most
∑ j ∈ Finset.range (e + 1), d.choose j structural leaves.
A decision tree of depth d and energy e has at most
∑ j ∈ Finset.range (e + 1), d.choose j structural leaves.