Boolean function complexity measures #
Sensitivity s(f), block sensitivity bs(f) and certificate complexity C(f), together with
the chain s(f) ≤ bs(f) ≤ C(f). Notation follows [AB09]; the pointwise measures
s(f, x), bs(f, x), C(f, x) are those of Jukna, Section 14.3.
Main definitions #
BitString.sensitivity:s(f), the maximum over inputs of the number of sensitive coordinates.blockSensitivity:bs(f), the maximum over inputs of the maximum number of disjoint sensitive blocks.IsCertificate: a set of coordinates whose values atxpin downf x, as in Jukna, Section 14.3.Forces: a partial assignment forces the valueb, as in [BdW02]. At a fixed input an assignment consistent withxis determined by its support, so the pointwise measure needs no bit values.certificateComplexity:C(f), the maximum over inputs of the smallest certificate size.
Main results #
sensitivity_le_blockSensitivity:s(f) ≤ bs(f).blockSensitivity_le_certificateComplexity:bs(f) ≤ C(f).isCertificate_iff_forces_restrict,forces_iff_isCertificate_support:IsCertificateandForcesagree at a fixed input.certificateComplexityAt_eq_inf'_size:C(f, x)is the minimum size of a forcing assignment consistent withx.|B| ≤ s(f)for a minimal sensitive blockB.
References #
- S. Arora, B. Barak, Computational Complexity: A Modern Approach, Section 12.2 (Certificate Complexity) and Section 12.5.1 (Sensitivity).
- H. Buhrman, R. de Wolf, Complexity measures and decision tree complexity: a survey
- S. Jukna, Boolean Function Complexity: Advances and Frontiers, Section 14.3.
Sensitivity #
Coordinate i is sensitive for f at x when flipping it flips f.
Equations
- Cslib.BitString.IsSensitiveCoord f x i = (f (Function.update x i !x i) ≠ f x)
Instances For
Equations
- Cslib.BitString.instDecidablePredFinIsSensitiveCoord f x i = { decide := !decide (f (Function.update x i !x i) = f x), reflects_decide := ⋯ }
The set of coordinates sensitive for f at x.
Equations
Instances For
The bridge between the predicate and the Finset it cuts out.
The number of sensitive coordinates in input x, usually denoted s(f, x).
Equations
Instances For
The maximum sensitivity over all inputs, denoted s(f).
Equations
Instances For
Lower-bound rule for s(f, x): exhibit a set of sensitive coordinates.
The sensitivity at a single input is at most the sensitivity of f: s(f, x) ≤ s(f).
Lower-bound rule for s(f): sensitive coordinates at any input suffice.
s(f, x) ≤ n: there are only n coordinates.
s(f) ≤ n.
Block sensitivity #
Block B is sensitive for f at x when flipping all bits of B flips f.
Equations
- Cslib.QueryComplexity.IsSensitiveBlock f x B = (f (Cslib.BitString.flipBlock B x) ≠ f x)
Instances For
Equations
- Cslib.QueryComplexity.instDecidableIsSensitiveBlock f x B = { decide := !decide (f (Cslib.BitString.flipBlock B x) = f x), reflects_decide := ⋯ }
Every member flips f, and the members are pairwise disjoint.
Equations
- Cslib.QueryComplexity.IsSensitiveFamily f x F = ((∀ B ∈ F, Cslib.QueryComplexity.IsSensitiveBlock f x B) ∧ (↑F).PairwiseDisjoint id)
Instances For
Equations
- Cslib.QueryComplexity.instDecidableIsSensitiveFamily f x F = decidable_of_iff ((∀ B ∈ F, Cslib.QueryComplexity.IsSensitiveBlock f x B) ∧ ∀ P ∈ F, ∀ Q ∈ F, P ≠ Q → Disjoint P Q) ⋯
All sensitive families.
Equations
Instances For
The block sensitivity of f at x: the largest number of pairwise disjoint blocks of
coordinates such that flipping every coordinate of any one block flips f. Usually denoted
bs(f, x).
Equations
Instances For
The maximum block sensitivity over all inputs, denoted bs(f).
Equations
Instances For
Lower-bound rule for bs(f, x): exhibit one sensitive family.
The block sensitivity at a single input is at most that of f: bs(f, x) ≤ bs(f).
Lower-bound rule for bs(f).
Sensitive singletons #
A singleton block is sensitive if and only if its coordinate is.
s(f) ≤ bs(f) #
One block per sensitive coordinate.
Equations
- Cslib.QueryComplexity.singletonFamily f x = Finset.image (fun (i : Fin n) => {i}) (Cslib.BitString.sensitiveCoords f x)
Instances For
Membership in the singleton family: one block per sensitive coordinate.
The singleton family has one block per sensitive coordinate, so s(f, x) of them.
Singletons of distinct sensitive coordinates do form a sensitive family: each
flips f, and distinct singletons are disjoint.
Pointwise: s(f, x) ≤ bs(f, x).
Every sensitive coordinate is a sensitive block of size one, so s(f) ≤ bs(f).
Minimal sensitive blocks #
B is sensitive, and no proper subset of B is sensitive.
Equations
- Cslib.QueryComplexity.IsMinimalSensitiveBlock f x B = (Cslib.QueryComplexity.IsSensitiveBlock f x B ∧ ∀ C ⊂ B, ¬Cslib.QueryComplexity.IsSensitiveBlock f x C)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Dropping any coordinate from a minimal sensitive block breaks sensitivity.
Every coordinate of a minimal sensitive block is sensitive at the input which has the minimal sensitive block flipped.
|B| ≤ s(f) for a minimal sensitive block B.
Certificates #
A certificate for x is a set of coordinates whose values at x already determine f x
Jukna, Section 14.3. The survey [BdW02] instead works with partial
assignments that force a value; Forces keeps that in general form, with the forced value b a
parameter, and the two views agree at a fixed input.
S is a certificate for f at x: every input agreeing with x on S takes the same
value, so f x can be read off from the bits of x in S.
Equations
- Cslib.QueryComplexity.IsCertificate f x S = ∀ (y : Cslib.BitString n), (∀ i ∈ S, y i = x i) → f y = f x
Instances For
Equations
- Cslib.QueryComplexity.instDecidableIsCertificate f x S = { decide := decide (∀ a ∈ Finset.univ, (fun (y : Cslib.BitString n) => (∀ i ∈ S, y i = x i) → f y = f x) a), reflects_decide := ⋯ }
C forces the value b: everything consistent with C has f = b.
Equations
- Cslib.QueryComplexity.Forces f C b = ∀ (x : Cslib.BitString n), Cslib.QueryComplexity.Agrees C x → f x = b
Instances For
Equations
- Cslib.QueryComplexity.instDecidableForces f C b = { decide := decide (∀ a ∈ Finset.univ, (fun (x : Cslib.BitString n) => Cslib.QueryComplexity.Agrees C x → f x = b) a), reflects_decide := ⋯ }
S is a certificate for x if and only if x restricted to S forces f x.
A partial assignment consistent with x forces f x if and only if its support is a
certificate for x.
Reading every coordinate of x is a certificate.
There is always a certificate, so C(f, x) is a minimum over a non-empty set.
The fewest coordinates of x that pin down the value of f, denoted C(f, x).
Equations
Instances For
Upper-bound rule for C(f, x): exhibit one certificate.
Lower-bound rule for C(f, x): a bound that holds for every certificate.
Some certificate for x has exactly C(f, x) coordinates.
Certificates as partial assignments #
At a fixed input a forcing assignment carries no information beyond the coordinates it reads:
Agrees C x forces C i = some (x i) on the support and none elsewhere. So C(f, x) over
coordinate sets is also the minimum size of a forcing assignment consistent with x.
Partial assignments consistent with x that force f x.
Equations
Instances For
Reading off all of x forces f x.
There is always a forcing assignment consistent with x.
C(f, x) over coordinate sets is the minimum size of a forcing assignment consistent with
x, the definition of [BdW02].
The maximum over all inputs of the smallest certificate size, denoted C(f).
Equations
Instances For
The certificate complexity at a single input is at most that of f: C(f, x) ≤ C(f).
C(f, x) ≤ n: reading every coordinate pins down f.
C(f) ≤ n.
bs(f) ≤ C(f) #
A certificate for x must meet every block of a sensitive family. The blocks are pairwise
disjoint, so a family has at most |S| members.
A certificate must contain at least one coordinate of every sensitive block.
A certificate is at least as large as any sensitive family.
Pointwise: bs(f, x) ≤ C(f, x).
Every block of a sensitive family meets every certificate, so bs(f) ≤ C(f).
bs(f, x) ≤ n.
bs(f) ≤ n.