Zig-zag expanders on every vertex count #
An explicitly numbered base gives explicit numberings of every level of the zig-zag tower.
For a requested size n ≥ 2, choose the first tower with at least n vertices. Its size is at most
b*n, where b is the base size. Bounded-fiber contraction and laziness then give a graph
on exactly Fin n, with degree and spectral gap independent of n. Sizes zero and one use loops.
The rotation is executable given the base and numbering. A uniform machine-time realization
using complete rotation tables is certified in
Computability/Machines/Turing/MultiTape/Complexity/PolyTime/RotationMap/Family. Its input vertex
count is unary. The contraction increases the already large degree, so asymptotic constructibility,
practical enumeration and time polynomial in the bit length of a vertex name are separate targets.
Main definitions #
Cslib.RotationMap.ZigzagTowerVertex.equivFin: recursive numbering from a numbered base.Cslib.RotationMap.zigzagTowerFamily: the contracted lazy tower on everyFin n.
Main results #
Cslib.RotationMap.zigzagTower_size_bounds: the selected tower has size betweennandb*n.Cslib.RotationMap.spectralExpansion_zigzagTowerFamily_le: the uniform spectral bound.
References #
The underlying tower is the construction of O. Reingold, S. Vadhan, A. Wigderson, Entropy waves, the zig-zag graph product, and new constant-degree expanders, Section 1.2. The size adjustment uses bounded-fiber contraction.
A tower with expansion at most c ≤ 1 gives expansion at most
1 - (1-c)²/(16*b²) on every vertex count after contraction and laziness.