Regular rotation maps of simple graphs #
Reingold's algorithm for undirected connectivity Reingold, Section 4
Arora and Barak, Section 21.4 works on regular graphs of a fixed degree, so it first
turns the input graph into one, without changing which vertices are connected. Each vertex v of a
simple graph G on V is replaced by a cycle of slots (v, w), one for each w : V, the end at
v of a potential edge {v, w}. The slots of v are joined in the cyclic order of a permutation
σ of V with a single cycle (such as finRotate n on Fin n), and the slot (v, w) is joined
to the slot (w, v) when v and w are adjacent, and carries a self-loop otherwise.
The result, Cslib.RotationMap.slotGraph G σ, is a 3-regular multigraph on V × V, and
(w, b) is reachable from (v, a) exactly when w is reachable from v in G
(reachable_slotGraph_iff).
To reach a prescribed label type B, the labels are extended along an embedding D ↪ B; the new
labels carry self-loops (Cslib.RotationMap.extendLabels). This keeps the simple graph of the
rotation map (toSimpleGraph_extendLabels), and when B has at least twice as many elements as
D, at least half of the edges at every vertex are self-loops
(card_le_two_mul_card_filter_neighbor_extendLabels_eq), which is what makes connected components
spectral expanders (Cslib.RotationMap.spectralExpansion_le_of_preconnected).
Main definitions #
Cslib.RotationMap.decodeLabel: the partial inverse of an embedding of labels.Cslib.RotationMap.extendLabels: extend the labels of a rotation map by self-loops.Cslib.RotationMap.slotSwap: the involution of the slots exchanging the two ends of an edge.Cslib.RotationMap.SlotLabel,Cslib.RotationMap.slotGraph: the3-regular slot graph of a simple graph and its labels.
Main results #
Cslib.RotationMap.toSimpleGraph_extendLabels: extending the labels does not change the simple graph.Cslib.RotationMap.card_le_two_mul_card_filter_neighbor_extendLabels_eq: enough new labels make at least half of the edges self-loops.Cslib.RotationMap.reachable_slotGraph_iff: the slot graph has the connectivity of the simple graph.
References #
The label of D that enc maps to b, if there is one, by Mathlib's computable inverse
Function.Embedding.invOfMemRange on the range of enc.
Instances For
decodeLabel enc is the partial inverse of enc.
decodeLabel enc recovers the labels of D.
decodeLabel enc b is none exactly when b is not a label of D.
G with its labels extended along an embedding enc : D ↪ B: the label enc i at a vertex is
its i-th edge in G, and every label outside the range of enc is a self-loop.
Instances For
The label enc i of G.extendLabels enc is the i-th edge of G.
The enc i-th neighbor in G.extendLabels enc is the i-th neighbor in G.
A label outside the range of enc is a self-loop of G.extendLabels enc.
A label outside the range of enc is a self-loop of G.extendLabels enc.
Extending the labels does not change the simple graph: the new edges are self-loops.
If B has at least twice as many elements as D, at least half of the edges at every vertex of
G.extendLabels enc are self-loops.
The involution of the slots V × V of a simple graph G: the slot (v, w) is exchanged with
(w, v) when v and w are adjacent, and fixed otherwise.
Instances For
Exchanging the ends of an edge twice gives back the slot.
The three labels of the slot graph: inl () for the edge of G at a slot, and
inr ((), (), false) and inr ((), (), true) for the cycle of the slots of a vertex, forwards and
backwards.
Instances For
The slot graph of a simple graph G on V, a 3-regular multigraph on the slots V × V
Reingold, Section 4: the edge inl () at (v, w) leads to (w, v) if
v and w are adjacent and is a self-loop otherwise, and the edges inr ((), (), false) and
inr ((), (), true) lead to (v, σ w) and (v, σ⁻¹ w), so that the slots of each vertex form the
cycles of σ.
Instances For
The edge inr ((), (), false) of slotGraph G σ at (v, w) leads to (v, σ w) and
returns along inr ((), (), true).
The edge inr ((), (), true) of slotGraph G σ at (v, w) leads to (v, σ⁻¹ w) and
returns along inr ((), (), false).
The edge inl () exchanges the two ends of an edge of G.
The edge inr ((), (), true) at (v, w) leads to (v, σ⁻¹ w).
The slot graph has three labels.
Every edge of the slot graph stays at a vertex of G or follows an edge of G.
The slot graph has the connectivity of the simple graph: if σ has a single cycle, the slot
(w, b) is reachable from (v, a) exactly when w is reachable from v in G.